요즘 ssh dictionary attack 이 심합니다. (정확히 말하자면.. ssh brute force attack 이라고 하더군요 ^^) 일전에 제 blog 에서
geoip 를 이용해서 막는 방법을 소개를 했었습니다.
외국에서의 공격, 특히 중국에서의 공격을 막아서인지 현저하게 시도는 줄었지만.. 그래도 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
좀늦어지만.. 2006 새해 복많이받으세요~
또 있잖아 Firefox, Thunderbird 한국어 버전 닭질 한 해.. ㅎㅎ
월급에 대해서는 저도 미안한 거 많지요 ^^
블로그가 있는지 저도 몰랐는데... 새해 복 많으시고 건강하시길 바랍니다.
새해는 모든일 잘되시길 기원합니다.
그리고 안녕은 잘 쓰고 있습니다.