|
本文是自己工作上的iptables筆記總結(jié),適合的可以直接拿去用,不適合的,適當修改即可! iptbales默認ACCEPT策略,也稱通策略,這種情況下可以做攔截策略,還有種叫堵策略,然后開放通的規(guī)則。(我偏向堵策略,自己需要開放什么在開,以下例子也是在此基礎上的) iptables 一些參數(shù)名稱:四表五鏈:fifter表、NAT表、Mangle表、Raw表 。 INPUT鏈、OUTPUT鏈、FORWARD鏈、PREROUTING鏈、POSTROUTING鏈 INPUT鏈 – 處理來自外部的數(shù)據(jù)。 PREROUTING鏈 – 處理剛到達本機并在路由轉(zhuǎn)發(fā)前的數(shù)據(jù)包。它會轉(zhuǎn)換數(shù)據(jù)包中的目標IP地址(destination ip address),通常用于DNAT(destination NAT)。(NAT表需要開啟linux路由 net.ipv4.ip_forward = 1) iptables -F iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT (允許外部訪問本機的22端口) iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (有進就有出,IP包是來回的) 例如一條比較完整的SSH端口限制:(意思為:從eth0進來的SSH訪問,除了公司192.168.16.0/24不限制,其他的地址都限制為每個ip最多5個SSH連接,且只為NEW和ESTABLISHED的連接,其他的都拒接) iptables -A INPUT -i eth0 ! -s 192.168.16.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -m connlimit --connlimit-above 5 -j REJECT ---- iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT (允許本機去ssh其他的服務器的22端口) iptables -A INPUT -p tcp --sport 22 -j ACCEPT 設置默認規(guī)則為DROPiptables -P INPUT DROP iptables -P OUTPUT DROP 此時占時不要service iptables save,先用客戶端ssh連接一下服務器,看看可以連接嗎?如果不行最起碼還可以重啟,這樣規(guī)則沒保存重啟是不生效,如果保存了發(fā)現(xiàn)不通就麻煩一些了! 當發(fā)現(xiàn)可以SSH的時候,我們就可以繼續(xù)下面的步驟了! 打開回環(huán)地址,為了本地訪問,如本地訪問數(shù)據(jù)庫之類iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT 打開服務器的ping功能,我覺得有必要打開,可以檢測服務器狀況iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT (此2條規(guī)則是允許本機ping外網(wǎng)的ip,不包括域名,其中8是icmp的請求,0是icmp的響應) iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT ---- iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT (此2條規(guī)則是允許外部ping本機) iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT 允許內(nèi)部ping外部的域名iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 允許外部訪問本機的80服務,且只允許新連接的和已經(jīng)連接的會話(狀態(tài)檢測)iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 允許外部訪問我本地多個端口 如 8080,8081,8082,且只允許是新連接,已經(jīng)連接的和已經(jīng)連接的在延伸出新連接的會話iptables -A INPUT -p tcp -m multiport --dport 8080,8081,8082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sport 8080,8081,8082 -m state --state ESTABLISHED -j ACCEPT 允許外部訪問本機81端口,且本機初始只允許有200個連接,超過了此數(shù)量,然后每秒新增加2個連接,如果訪問超過此限制則拒接 (此方式可以限制一些攻擊)iptables -A INPUT -p tcp --dport 81 -m limit --limit 2/s --limit-burst 200 -j ACCEPT iptables -A OUTPUT -p tcp --sport 81 -j ACCEPT 限制除用戶192.168.16.99以外的IP連接數(shù)為50 (相當于可以給自己開特權(quán)^_^)iptables -A FORWARD -p tcp -s !192.168.16.99 -m connlimit --connlimit-above 50 -j REJECT TCP匹配擴展協(xié)議--tcp-flagsiptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK,RST SYN (表示 SYN,FIN,ACK,RST的標識都檢查,但只匹配SYN標識) iptables -A INPUT -p tcp --syn (如果這是為了匹配SYN標識位也可以寫成這樣,選項—syn相當于”--tcp-flags SYN,RST,ACK SYN”的簡寫。) 實例: //nmap-xmas iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP (檢查所以的標識位,匹配到FIN URG PSH的丟棄) //nmap-push iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP (檢查所以的標識位,匹配到SYN RST ACK FIN URG的丟棄) // Null iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP (檢查所以的標識位,沒標志位的丟棄) iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP(檢查 SYN,RST標識位,匹配到 SYN,RST的丟棄,SYN是建立連接,RST是重置連接,所以這樣的包是有問題的) iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP (檢查 SYN,FIN標識位,匹配到 SYN,FIN的丟棄,SYN是建立連接,F(xiàn)IN是結(jié)束連接,所以這樣的包是有問題的) iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP SNAT 和 DNATSNAT: 假如我要讓公司192.168.10.0/24段的地址都通過linux服務器的eth0 :123.123.123.123上網(wǎng) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 123.123.123.123 DNAT GATEWAY eth0:123.123.123.123 eth1:192.168.10.1 內(nèi)網(wǎng)主機:192.168.10.10 要使訪問123.123.123.123的80 自動跳到192.168.10.10的80端口上 iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 80 -j DNAT --to-destination 192.168.10.10:80 iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.10 --dport 80 -j SNAT --to-source 192.168.10.1 (內(nèi)網(wǎng)之間進行nat才加上) 第一條:將外部數(shù)據(jù)包的目的地址改到內(nèi)網(wǎng)主機的指定端口 |
|
|