iptables一些練習

2022-06-13 09:24:11 字數 2086 閱讀 3378

可以參考之前的一起食用

允許來自192.168.0.0/16網段的位址來訪問我的192.168.1.7的sshd服務(22埠).

定義進來的:

iptables -t filter -a input -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -j accept

定義出去的:

iptables -t filter -a output -s 192.168.1.7 -d 192.168.0.0/16 -p tcp --dport 22 -j accept

將預設策略都改成drop:

iptables -p input drop

iptables -p output drop

iptables -p forward drop

狀態檢測

這是一種現實擴充套件(意味著我們要用-m 顯示載入模組),用於檢測回話之間的連線關係,我們可以實現會話功能的擴充套件

什麼是狀態檢測?

對於tcp協議來說,它是乙個有連線的協議,需要三次握手,第一次握手我們稱之為new連線,而從第二次握手之後,ack都為1,這是正常的資料傳輸,tcp第二次第三次握手稱為 已建立的連線established,如:syn=1 ack=1 rst=1 這種我們無法識別,稱為 無法識別的invalid

在如比較特殊的,ftp協議 21是控制埠,20是資料埠.在主動模式下是這樣的. 這樣21和20埠就是有關係的,我們稱為related

這樣我們就有了四種狀態了.

newestablished

related

invalid

2.1 練習題

​ 預設進來的拒絕,出去的允許,進來的只允許established進來,出去只允許established出去,預設規則都是用拒絕

允許自己ping別人,別人不能ping我們.

icmp 協議 進來的 request 8(ping),出去的 response 0(響應) . 我需要標記為8出去,標記為0進來. 其中 8 可以用 echo-request 0 可以用echo-reply

小擴充套件:對於127.0.0.1比較特殊,我們需要明確定義它

iptables -a input -s 127.0.0.1 -d 127.0.0.1 -j accept

iptables -a output -s 127.0.0.1 -d 127.0.0.1 -j accept

snat 源位址轉換

​ 將所有192.168.0.0網段ip經過的時候全部轉換成223.223.223.223這個假設出來的外網ip:

iptables -t nat -a postrouting -s 192.168.0.0/16 -j snat --to-source 223.223.223.223

如果外網位址不確定,如撥號連線的每次都會變動的ip可以使用masquerade(動態位址偽裝)

iptables -t nat -a postrouting -s 192.168.0.0/16 -j masquerade

位址偽裝並不適用於所有的地方。

dnat 目標位址轉換

資料流向是由外向內的,外面是客戶端,裡面是伺服器端通過目標位址轉換可以讓外面的ip通過我們的外網ip來訪問我們內部不同的伺服器.

iptables -t nat -a prerouting -d 223.223.223.223 -p tcp --dport 80 -j dnat --to-destination 192.168.1.7

目標位址轉換一定要在路由之前來進行轉換,所以要在 prerouting

一些iptables的具體應用

icmp相關應用 使自己不能ping 通 127.0.0.1 iptables a input s 127.0.0.1 p icmp j drop 192.168.0.0 24 網段無法ping能本機 iptables a input s 192.168.0.0 24 p icmp j drop 禁...

iptables 一些有用的規則

a input i lo j accept 允許本機內部訪問,即回環 a input m state state related,established j accept 允許本機訪問外部 a input p icmp m icmp icmp type 8 j accept 允許ping a inp...

一些簡單的程式設計練習

每當成為入門cs課程 學生們學習程式語言的課程 的助教時,都困於提出好的練習題。project euler和類似的問題通常對初學者來說來難了,尤其是對於那些沒有很強數學背景的同學。在這篇文章中,adrian neumann 收集了一些從初級到高階逐級困難的練習題,適合剛開始學習程式設計的初學者。當有...