[linux],[펌] ssh dictionary attack 막기 ver.2
일단 서버에 적용시켜놔보긴 했음..
며칠 두고볼 예정임.. ^^
(자료출처 밝히면 퍼가도 상관없다고 해서.. 나중에 보려고 퍼왔음.)
자료출처 : http://my.oops.org/56
ssh dictionary attack 막기 ver.2
Posted at 2005/12/23 04:16 Filed under Tech/안녕리눅스
요즘 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
- 처음에 22 번으로 NEW state 의 session 을 SSHSCAN 이라는 이름으로 list 를 만듭니다.
- 세션당 60 초 동안 7 번의 접속은 통과를 시키고 8번째 접속이 발생하면 60초 동안 이 세션에 대하여 block 합니다.
- 그리고 SSH_Scan 이라는 prefix 로 logging 을 합니다.
문서들이 영어라서.. 결국에는 습관대로 대충 읽고 반영해서 보자는 식으로 하게 되어서 정확한 정보는 되지 않을 것 같습니다. 정확한 정보를 얻고 싶은 분들은.. 다음의 링크를 참조 하십시오.
http://snowman.net/projects/ipt_recent/
http://users-x.757.org/~joat/wiki/index ··· _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 에 영향을 받지 않습니다.
아래글도 참고해보세요.