
黑夜。
一女遭遇劫匪,顫抖曰:"大哥,我是賣DRAM的,兩個月沒發工資了,還剛被裁員,你看報導就知道了,真的沒有錢……"
劫匪聽後竟然痛哭流涕,"妹子,同行 ,俺原來是賣的FLASH,你拿好工牌,後面那幫搶劫是做模組的,你放心,我們絕不搶自己人 .
對了,邊上那條路不要走,那邊是賣MP3的。還有賣LCD的在草叢埋伏勒...
幫幾個NGO處理電腦事務, 突然多了這個外號...沒錢的NGO,電腦有問題,找我就對了...
本來的標題是寫這樣的:
[龍三的筆記本]
聽說, 寫在筆記本上的人名, 會在24小時內捐出1半的財產給社福團體, 造福需要幫助的人...
範例:
範例一:所有的來自 lo 這個介面的封包,都予以接受
[root@test root]# iptables -A INPUT -i lo -j ACCEPT
# 注意一下,因為 -d, --dport, -s, --sport 等等參數都沒有設定,這表示:
# 不論封包來自何處或去到哪裡,只要是來自 lo 這個介面,就予以接受!
# 這個觀念挺重要的,就是『沒有設定的規定,則表示該規定完全接受』的意思!
# 例如這個案例當中,關於 -s, -d...等等的參數沒有規定時!
範例二:來自 192.168.0.1 這個 IP 的封包都予以接受:
[root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.1 -j ACCEPT
# 新增一條規則,只要是來自於 192.168.0.1 的封包,不論他要去哪裡,
# 使用的是那個協定 (port) 主機都會予以接受的意思~
範例三:來自 192.168.1.0 這個 C Class 的網域的任何一部電腦,就予以接受!
[root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 -j ACCEPT
# 這個是網域的寫法喔!稍微注意一下的是,在範例二當中我們僅針對一個 IP ,
# 至於這個範例當中,則是針對整個網域來開放吶!而網域的寫法可以是:
# 192.168.1.0/24 也可以是 192.168.1.0/255.255.255.0 都能夠接受喔!
範例四:來自 192.168.1.25 的封包都給他丟棄去!
[root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.25 -j DROP
範例五:只要是想進入本機的 port 21 的封包就給他丟棄
[root@test root]# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
範例六:來自 192.168.0.24 這個 IP 的封包,想要到我的 137,138,139 埠口時,都接受
[root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.24
> --dport 137:139 -j ACCEPT
範例七:只要是接觸到我主機的 port 25 就將該封包記錄 (LOG) 下來
[root@test root]# iptables -A INPUT -p tcp --dport 25 -j LOG
# 還是請特別注意到『規則的順序排列』的問題喔!
iptables 的其他相關參數說明:
[!] --syn :這個設定僅能用於 -p tcp 的規則中,因為 TCP 封包有 syn 的旗標存
在啊!當 TCP 封包存有 syn 旗標,表示這個連線是對方『主動』連過來的!
若於 --syn 之前加上 ! 表示該封包不帶有 syn 的意思~(剛好相反之意!)
--icmp-type:可以管制 ICMP 封包的某些類型!還記得我們在 網路基礎 裡面
談到的 ICMP 的某些類型吧!對啦!如果您不想要讓對方 ping 到您的機器,
就是利用這個項目啦!
範例二:別的主機 ping 我們主機時,我們主機不予以回應
[root@test root]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
# 當您下達這樣的指令後,就表示未來別人對您使用 ping 的時候,
# 我們的主機將不會回應,所以對方主機就會顯示我們主機『無法連接』的狀態!
-m :表示封包的狀態,狀態有底下數種:
-m mac --mac-source aa:bb:cc:dd:ee:ff
這個就是我們上面提到的可以控制『網路卡卡號, MAC』的設定方法囉!
那個 aa:bb:cc:dd:ee:ff 就是網路卡的 MAC !
-m state --state <狀態>
有數種狀態,狀態有:
INVALID:無效的封包,例如資料破損的封包狀態
ESTABLISHED:已經連線成左熙s線狀態;
NEW:想要新建立連線的封包狀態;
RELATED:這個最常用!表示這個封包是與我們主機發送出去的封包有關,
可能是回應封包或者是連線成奶妨嶊熄e封包!這個狀態很常被設定,
因為設定了他之後,只要未來由本機發送出去的封包,即使我們沒有設定
封包的 INPUT 規則,該有關的封包還是可以進入我們主機喔!
可以簡化相當多的設定規則啦!
範例三:讓 bb:cc:dd:aa:ee:ff 網路卡無法使用我們主機的資源
[root@test root]# iptables -A INPUT -p all -m mac --mac-source
> 01:01:01:01:02:01 -j DROP
# 這種方式可以用來管制網路卡卡號喔!就不怕別人使用 IP 搞怪了!
範例四:讓已經建立或者是與我們主機有關的回應封包通過,但是讓不合法的,
以及想要嘗試新建立的封包被抵擋在外!
[root@test root]# iptables -A INPUT -p tcp -m state
> --state ESTABLISHED,RELATED -j ACCEPT
[root@test root]# iptables -A INPUT -p tcp -m state
> --state INVALID,NEW -j DROP
# 需要設定兩條喔!至於封包狀態則可以使用逗號隔開!逗號兩邊不要有空格
-j <動作>:除了比較常見的 ACCEPT 與 DROP 之外,還有哪些動作?
REDIRECT --to-ports
這個也挺常見的,基本上,就是進行本機上面 port 的轉換就是了!
不過,特別留意的是,這個動作僅能夠在 nat table 的 PREROUTING 以及
OUTPUT 鏈上面實行而已喔!(關於連線流程,請參考圖八)
MASQUERADE:封包偽裝
這個就是 NAT 主機最重要的一個機制啦!進行封包的偽裝!
範例五:將要求與 80 連線的封包轉遞到 8080 這個 port
[root@test root]# iptables -t nat -A PREROUTING -p tcp --dport 80
> -j REDIRECT --to-ports 8080
# 這玩意最容易在您使用了非正規的 port 來進行某些 well known 的協定,
# 例如使用 8080 這個 port 來啟動 WWW ,但是別人都以 port 80 來連線,
# 所以,您就可以使用上面的方式來將對方對您主機的連線傳遞到 8080 囉!
範例六:進行封包的偽裝,將來自 192.168.0.0/24 的封包的來源 IP 偽裝成為
本機的 ppp0 那個介面的 IP
[root@test root]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24
> -o ppp0 -j MASQUERADE
紀錄與回復防火牆規則
[root@test root]# iptables-save > filename
# 將目前的防火牆機制儲存成 filename 那個檔案!該檔案為 ASCII 格式,
# 您可以進入查黎@下喔!
[root@test root]# iptables-restore < filename
# 將 filename 那個防火牆檔案 (注意!並不是 shell scripts 的格式) 的規則
# 讀入目前的 Linux 主機環境中!
文章來源:鳥哥的 Linux 私房菜
補充: 檢查 ssh , 若在1分鐘內4次連線, 就自動擋掉讓IP