외국에서의 공격, 특히 중국에서의 공격을 막아서인지 현저하게 시도는 줄었지만.. 그래도 3일에 한번꼴로 국낸 IP (특히 대학이나 초등학교 서버에서..) 에서 5000번 이상의 scan 을 하고 지나가는 꼴을 보니 또 오기가 생기기 시작했습니다.
설마 막는 방법에 없겠느냐는 생각에 iptables 의 extension 을 탐색하던 중 ipt_recent extension 을 발견 했습니다. recent extension 은 iptables 의 기본 extension 이므로 따로 빌드할 필요도 없고, seconds 별 hitcount 를 계산할 수 있는 듯 합니다.
아래의 예제를 보죠. (oops.org 에 기본으로 적용한 rule 입니다.)
# ssh buste attack rule
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHSCAN
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 8 --rttl --name SSHSCAN -j LOG --log-prefix SSH_Scan:
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 8 --rttl --name SSHSCAN -j DROP
1. 처음에 22 번으로 NEW state 의 session 을 SSHSCAN 이라는 이름으로 list 를 만듭니다.
2. 세션당 60 초 동안 7 번의 접속은 통과를 시키고 8번째 접속이 발생하면 60초 동안 이 세션에 대하여 block 합니다.
3. 그리고 SSH_Scan 이라는 prefix 로 logging 을 합니다.
문서들이 영어라서.. 결국에는 습관대로 대충 읽고 반영해서 보자는 식으로 하게 되어서 정확한 정보는 되지 않을 것 같습니다. 정확한 정보를 얻고 싶은 분들은.. 다음의 링크를 참조 하십시오.
http://snowman.net/projects/ipt_recent/
http://users-x.757.org/~joat/wiki/index.php/Slowing_down_SSH_brute_force_attacks
http://la-samhna.de/library/brutessh.html
전 영어가 딸려서 ^^; 정확한 설명을 알려 주시면 고맙겠습니다. (아 이 귀차니즘의 압박이여.. -_-;)
P.S
안녕 리눅스를 사용하시는 분들은 oops-firewall 을 5.0.0 으로 올리시고 위의 rule 을 user.conf 에 반영하시면 됩니다. 5.0.0 부터는 ALLOWALL 이 user pre command 보다 먼저 실행이 되기 때문에 ALLOWALL 에 등록된 site 는 최소한 이 rule 에 영향을 받지 않습니다.
Comments List
포트를 바꾸세요 ㅡ_ㅡ;;;
사용하기가 불편하죠. 그리고 요즘 변형된 bot 들은 port scan 까지 하는 경우도 있습니다. :-)
잘 보았습니다. 출처 밝히고 퍼가도 되나요?
출처를 밝히시면 상관 없습니다.
어떤 경우에는 이 정책을 적용한 상태로 3주 정도가 지나면 정상적인 동작을 하지 않는다는 보고가 있습니다.
http://lists.debian.org/debian-firewall/2006/03/msg00017.html
kernel 2.6 만 해당되네요. :-)
좋은 팁 감사합니다