# 초기화 iptables -F # 포트 스캔 방지 iptables -A INPUT -d 0.0.0.0/0 -p icmp -j DROP # DoS 공격 방지 iptables -N syn-flood iptables -A syn-flood -m limit --limit 12/second --limit-burst 24 -j RETURN iptables -A syn-flood -j DROP # ssh 정책(root, webpage 계정만 접속 가능) # ssh 포트 : 22, root 번호: 0, webpage 번호:500 iptables -A INPUT -p tcp --dport 22 -m owner --uid-owner 0 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m owner --gid-owner 0 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner 0 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -m owner --gid-owner 0 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m owner --uid-owner 500 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m owner --gid-owner 500 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner 500 -j DROP iptables -A OUTPUT -p tcp --dport 22 -m owner --gid-owner 500 -j DROP # 1초에 15번 이상의 HTTP 접근을 할 경우 차단 iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 15 --name HTTP -j DROP #-------------------------------------------------------------------- # 커널 컴파일 및 iptables 패치 후, connlimit 사용이 가능한 경우 # 1초에 15번 이상의 HTTP 접근을 할 경우 차단 #iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -connlimit-mask 24 -j DROP #메일서버의 경우 동시에 5개이상 SMTP 접근일 경우 5분동안 접근 제한 #iptables -A INPUT -m recent --name spammer --rcheck --seconds 300 -j DROP #iptables -A INPUT -p tcp --syn --dport 25 -m connlimit --connlimit-above 5 -m recent --name spammer --set -j DROP #--------------------------------------------------------------------- #---------------------------------------------------------------------- # STRING 필터기능 # MSN 문자열이 들어간 패킷 차단 #iptables -A FORWARD -m string --string "messenger.msn.com" -j DROP # 싸이월드 접속차단 #iptables -A FORWARD -p tcp --dport 80 -m string --string "Host: cyworld.nate.com" -j DROP #---------------------------------------------------------------------- # 서버가 해킹당했을 때 DoS공격지로 사용될 경우에 적용. # DNS 쿼리 이외 UDP 패킷 전송 방지 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p udp ! --dport 53 -m state --state NEW -j DROP스크립트 실행 후
# service iptables save
# service iptables restart
당연한 이야기지만, 이 스크립트는 root 권한으로 실행시켜야 한다.
시스템이 부팅될 때 이를 실행하고자 한다면, /etc/rc.local 에 등록해두자.
이를 해제하기 위해서는
iptables -F iptables -F syn-flood iptables -X syn-flood