作者: kenduest (小州) 站內: LinuxNetwork 標題: [文件]使用 iptables 設定一些安全防護功能 (1) 時間: Tue Feb 27 23:55:46 2001 常看到有人亂使用 port scan 軟體,(ex:nmap) 來亂掃他人的 port, 實在很討厭 @_@ 這裡提供幾個方式,透過 linux kernel 2.4 的新核心機制 + iptables 來進行一些設限: # NMAP FIN/URG/PSH iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP # Xmas Tree iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP # Another Xmas Tree iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP # Null Scan(possibly) iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP # SYN/RST iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP # SYN/FIN -- Scan(possibly) iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP 這是針對一些像是使用 scan 軟體,配合所謂的 Stealth 等機制去亂掃他人 主機時,可以把這些封包丟棄不處理。那對方一掃就卡死了,或者是 要等連線 timeout 才能夠繼續工作,拉長 scan 所需的時間。 作者: kenduest (小州) 站內: LinuxNetwork 標題: [文件]使用 iptables 設定一些安全防護功能 (2) 時間: Wed Feb 28 00:13:17 2001 下面是我設定 iptables 的一些簡單規則,可以參考一下。(與 NAT 無關喔) # 掛入相關 module modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc # 重設 iptables -F iptables -X iptables -F -t nat iptables -X -t mangle # 把 FORWARD 關閉 iptables -P FORWARD DROP # 這是打開讓自己網域可以方便連結,也就是該網域不設防 iptables -A INPUT -p all -s ip_net/netmask -j ACCEPT # 允許相關連結服務 iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 113 -j ACCEPT iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP 上面是打開允許 port 20、21、22、23、25、53、110、113 等服務才能夠 被外面所連線。 port 20、21 : ftp 使用的。 port 22 : ssh 連線 port 23 : telnet 連線。方便使用,其實不開放比較安全。 port 25 : sendmail 使用。讓信件可以寄進來。 port 53 : dns 使用。dns 需要打開 udp 使用。 port 110 : pop3 使用 port 113 : auth 身份確認。我打開是讓一些使用該 113 確認身份的主機 不至於反查時會卡住很久。 最後一行是對於主動連線或者是不合法連線,一律通通拒絕掉。 這個 script 內容,很適用只允許外面連結特定的 port 服務,剩下的其餘 port 就拒絕外面主動建立的連線。比方使用 Modem 撥接,只希望裡面可以 正常連線出去,外面都無法連線進來這個需求。(ps: modem 是使用 ppp0 等這些介面,上面的 eth0 要改成 ppp0 ) 作者: kenduest (小州) 站內: LinuxNetwork 標題: [文件]使用 iptables 設定一些安全防護功能 (3) 時間: Tue May 15 19:28:55 2001 防止 sync flood 攻擊的設定: iptables -N synfoold iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -p tcp -m state --state NEW -j synfoold 這個方式對於一個很忙碌的站台來說,這個設定方式會不會有不良影響呢? 測試過一個很忙碌的站台用這個設定,老實說並不好.... 所以也許可以調整時間與次數的觸發值。 防止 Ping of Death : iptables -N ping iptables -A ping -p icmp --icmp-type echo-request -m limit --limit \ 1/second -j RETURN iptables -A ping -p icmp -j REJECT iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW \ -j ping 這裡只有把 icmp 的 echo request 部份拒絕掉,可以視情況再調整。 或者是直接設定主機不回應 echo request 。 /proc/sys/net/ipv4/icmp_echo_ignore_all ---------- |