보안

Brute-force attack 방어법 - oops-firewall 혹은 iptables

까망군 2012. 1. 17. 15:34
oops-firewall 설치한 서버를 외부에서 접속할라고 sshd를 열어놨더니 계속 root 공격 들어와서 신경쓰인다.
fail2ban을 설치해 보았지만 제대로 동작하지 않은것 같아서 아래 방법을 시도해 보려고 한다.

참조 : http://cafe.naver.com/linuxihd.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=238& 

Brute-force attack은 패스워드 사전 파일을 이용하여 미리 지정한 아이디를 지속적으로 대입하여 취약한 패스워드로 설정된 ID를 찾는 공격이며, iptables를 이용하여 간단하게 막는 방법을 다음과 같이 소개합니다.

===========
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHSCAN
%-A INPUT -p tcp --dport 21 -m state --state NEW -m recent --set --name FTPSCAN
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --rttl --name SSHSCAN -j LOG --log-prefix SSH_Scan:
%-A INPUT -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --rttl --name FTPSCAN -j LOG --log-prefix FTP_Scan:
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --rttl --name SSHSCAN -j DROP
%-A INPUT -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --rttl --name FTPSCAN -j DROP
===============

위의 스크립트는 ssh 또는 ftp brute force attack 공격을 받을 경우 60초간 9번의 로그인 실패시 10번째부터 60초간 접속을 막는 방법입니다. 또 다른 방법으로는 1234, abcd 와 같은 쉬운 패스워드보다 특수문자를 이용한 강력한 패스워드로 설정합니다. 해킹당한 서버의 대부분은 이렇게 유추하기 쉬운 패스워드로 지정되어 있는 경우가 가장 많습니다.

마지막으로 ssh 접속 포트를 변경하는 것도 좋은 방법입니다.
/etc/ssh/sshd_config의 #port 22 항목의 주석을 제거하고 22번을 다른 포트 번호로 변경 후 지정합니다.
/etc/rc.d/init/sshd restart를 입력 후 변경한 포트로 접속이 되는지 확인하시기 바랍니다.

oops-firewall/user.conf 파이을 이용하여 적용도 가능합니다.
/var/log/messages, secure 파일에서 ftp 혹은 ssh 로 검색하여 보면 접속 실패 메시지가 많이 나오는 분들은 꼭 위의 스크립트로 막아주신다면 더 좋은 보안환경을 만들 수 있을 것 같습니다.


ps. 집에가서 적용해 봐야지.