25 February 2011

ป้องกันการโดนโจมตีเครื่องเซิร์ฟเวอร์ด้วย iptable

ป้องกันการโดนโจมตีเครื่องเซิร์ฟเวอร์ด้วย 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_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
Protect 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 DROP
REDIRECT 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 ACCEPT
Transparent Proxy
iptables -t nat -A PREROUTING -p TCP –dport 80 -j REDIRECT -to-ports 3128

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Blog by Chagridsada Boonthus | http://chagridsada.blogspot.com/