IPTABLES เป็น Firewall พื้นฐานของ Linux เกือบทุก Distro และให้ประสิทธิภาพที่สูงมากในการ Filtering Traffic และ การป้องกันการ Attack ต่างๆ โดยที่จะมีตัวอย่างพอสังเขป ดังนี้
เปิดการใช้งาน IP Forward ป้องกัน Syn Flood และ อนุญาติให้มีการใช้งานแบบ Dynamic IP (ต่อเนต DSL ทั่วไป)
#echo 1 > /proc/sys/net/ipv4/ip_forward
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#echo 1 > /proc/sys/net/ipv4/ip_dynaddr
Drop Packet ก่อนหน้านี้ทั้งหมด
#iptables -F INPUT
#iptables -F FORWARD
#iptables -F OUTPUT
#iptables -P INPUT DROP
#iptables -P FORWARD DROP
#iptables -P OUTPUT ACCEPT
#iptables -A INPUT -i lo -j ACCEPT
อนุญาติเฉพาะ SSH, SMTP, DNS, Web Services, SSL และ POP3 ให้ผ่านเข้าออก
#iptables -A INPUT -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp –dport 22 –syn -j ACCEPT
#iptables -A INPUT -p tcp –dport 25 –syn -j ACCEPT
#iptables -A INPUT -p tcp –dport 53 –syn -j ACCEPT
#iptables -A INPUT -p udp –dport 53 –syn -j ACCEPT
#iptables -A INPUT -p tcp –dport 80 –syn -j ACCEPT
#iptables -A INPUT -p tcp –dport 443 –syn -j ACCEPT
#iptables -A INPUT -p tcp –dport 110 –syn -j ACCEPT
ป้องกันการ scan ports
#iptables -N check-flags
#iptables -F check-flags
#iptables -A check-flags -p tcp –tcp-flags ALL FIN,URG,PSH -m limit –limit 5/minute -j LOG –log-level alert –log-prefix "NMAP:"
#iptables -A check-flags -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
#iptables -A check-flags -p tcp –tcp-flags ALL ALL -m limit –limit 5/minute -j LOG –log-level 1 –log-prefix "XMAS:"
#iptables -A check-flags -p tcp –tcp-flags ALL ALL -j DROP
#iptables -A check-flags -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit –limit 5/minute -j LOG –log-level 1 –log-prefix "XMAS-PSH:"
#iptables -A check-flags -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
#iptables -A check-flags -p tcp –tcp-flags ALL NONE -m limit –limit 5/minute -j LOG –log-level 1 –log-prefix "NULL_SCAN:"
#iptables -A check-flags -p tcp –tcp-flags ALL NONE -j DROP
#iptables -A check-flags -p tcp –tcp-flags SYN,RST SYN,RST -m limit –limit 5/minute -j LOG –log-level 5 –log-prefix "SYN/RST:"
#iptables -A check-flags -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
#iptables -A check-flags -p tcp –tcp-flags SYN,FIN SYN,FIN -m limit –limit 5/minute -j LOG –log-level 5 –log-prefix "SYN/FIN:"
#iptables -A check-flags -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP
ป้องกันการ flood SSH (SSH Brute Force)
#iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –set
#iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –update –seconds 600 –hitcount 2 -j DROP
ห้าม ping
#iptables -A INPUT -p ICMP -i eth0 –icmp-type 8 -j DROP
ห้าม traceroute
#iptables -A INPUT -p ICMP -i eth0 –icmp-type 11 -j DROP
ป้องกัน Syn Flood
#iptables-N syn-flood
#iptables -A syn-flood -i ppp0 -m limit –limit 75/s –limit-burst 100 -j RETURN
#iptables -A syn-flood -j LOG –log-prefix "SYN-FLOOD: "
#iptables -A syn-flood -j DROP
REDIRECT PORT 10080 to 80
#iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 80 -j DNAT –to 192.168.xxx.xxx:10080
#iptables -A FORWARD -p tcp -i ppp0 -d 192.168.xxx.xxx –dport 80 -j ACCEPT (192.168.xxx.xxx = ip ของเรา)
#iptables -A FORWARD -p tcp -i ppp0 -d 192.168.xxx.xxx –sport 80 -j ACCEPT
Transparent Proxy
#iptables -t nat -A PREROUTING -p TCP –dport 80 -j REDIRECT -to-ports 3128