ป้องกันการโดนโจมตีเครื่องเซิร์ฟเวอร์ด้วย iptable 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_dynaddrDrop 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 DROPProtect Syn Flood
iptables -N syn-flood iptables -A syn-flood -i eth0 -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 DROPREDIRECT PORT 10080 to 80 (192.168.xxx.xxx = ip ของเรา)
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.xxx.xxx:10080 iptables -A FORWARD -p tcp -i eth0 -d 192.168.xxx.xxx –dport 80 -j ACCEPT iptables -A FORWARD -p tcp -i eth0 -d 192.168.xxx.xxx –sport 80 -j ACCEPTTransparent Proxy
iptables -t nat -A PREROUTING -p TCP –dport 80 -j REDIRECT -to-ports 3128
0 comments:
Post a Comment