SSHD Dictionary Attack 막기 (위키)
SSH 데몬에 접속하여 root를 포함한 잘 알려진 계정들로 로그온을 시도하고 거기에 쓰인 패스워드를 기억하여 다음 접속시 그 다음부터 사전식으로 계속해서 암호를 대입해 나가는 방식의 공격을 Dictionary Attack, 정확히 말하자면.. ssh brute force attack 이라고 한답니다.
서비스가 오픈되어 있는한 이 공격을 원척적으로 봉쇄하는 방법은 없습니다.
그렇다고 손놓고 있기는 뭐하고 최소한의 조치를 취할 필요를 느꼈습니다.
어째든 암호를 들키지 않는 방법은 암호는 최소 12자 이상으로 더욱 길게, 자주 바꾸어 주는 방법이 있을 것입니다.
아니면 좀더 강력한 방법으로는 사용자와 접속 위치가 제한되어 있다면 방화벽에서 특정 IP만 SSH 접속을 허가하도록 하는 것도 한 방법일 것입니다.
그러나 SSH 접속을 공개해야 한다면, 최소한의 조치로 아래의 방법들을 사용해 볼 만합니다.
약간의 네트워부하 및 시스템 부하를 줄이고 무엇보다 암호를 알아내는 과정의 시간을 지연하여 공격을 방해하하는 방법이 방화벽(IPTables) Rule을 이용하여 소개되어 있었습니다.
참고 목록들 :
SSHD Dictionary attack Filter Open Souce (CentOS5에서는 정상동작하지 않을 수 있습니다.)
위 3번째 오픈소스는 iptables에 문제가 되는 IP를 자동 등록해주는등 여러가지로 편리할 것 같아 이걸 설치할려고 했으나, ReadMe 문서를 읽어본결과 CentOS 5에서는 문제가 있는듯, 문제가 해결되었는지 확인하고 설치하자.
첫번째와 두번째는 역의 역 관계로 동등하다고나 할까? ㅋㅋ
로그 기록하는 점 때문에 두번째를 추천하고 시스템에 적용하였지만, 좀더 써보고 로그 기록이 오히려 부하가 될것 같으면 첫번째 룰을 써볼까 합니다.
위 3번째 오픈소스는 iptables에 문제가 되는 IP를 자동 등록해주는등 여러가지로 편리할 것 같아 이걸 설치할려고 했으나, ReadMe 문서를 읽어본결과 CentOS 5에서는 문제가 있는듯, 문제가 해결되었는지 확인하고 설치하자.
첫번째와 두번째는 역의 역 관계로 동등하다고나 할까? ㅋㅋ
로그 기록하는 점 때문에 두번째를 추천하고 시스템에 적용하였지만, 좀더 써보고 로그 기록이 오히려 부하가 될것 같으면 첫번째 룰을 써볼까 합니다.
- 적용사례 #1
# ssh buste attack rule 2 -------->
-A RH-Firewall-1-INPUT -p tcp --dport 22 -m recent --set --name sshscan --rsource
-A RH-Firewall-1-INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 \
--hitcount 5 --name sshscan --rsource -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP
# <--------------------------------
- 적용사례 #2
# ssh buste attack rule by ProjectS ------> -A RH-Firewall-1-INPUT -p tcp --dport 2218 -m state --state NEW -m recent \
--set --name SSHSCAN -A RH-Firewall-1-INPUT -p tcp --dport 2218 -m state --state NEW -m recent \
--update --seconds 60 --hitcount 5 --rttl --name SSHSCAN \
-j LOG --log-prefix SSH_Scan: -A RH-Firewall-1-INPUT -p tcp --dport 2218 -m state --state NEW -m recent \
--update --seconds 60 --hitcount 5 --rttl --name SSHSCAN \
-j DROP # <---------------------------- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2218 -j ACCEPT






