무차별 로그인 공격이 있었습니다. 정보
무차별 로그인 공격이 있었습니다.본문
Brute Force Attack 을 누가 하네요.
동일 IP 로 몇분동안 수천번의 무차별 로그인 해킹시도가 있었습니다.
골든아이와 같은 크랙 프로그램을 가지고 아이디 비번 뽑아내려고
하는데요. 사이트 운영이나 할 줄 알지 리눅스 서버나 PHP 쪽은 잘 모르니까 답답하네요.
동일 IP로 몇회 이상 로그인 시도를 할시 10분 동안 해당 IP를 차단하는 스크립트 없나요?
막을 방법 뭐가 있을까요?
저희 사이트가 신규가입 받지 않는 비공개 사이트이다 보니 회원 아이디를 얻기 위해서
이런 공격을 하는 듯 싶은데요. ID 리스트는 유출이 이미 된거 같고 비번은 몰라서
막무가내 대입식으로 프로그램 돌리는 듯 하네요. 해당 IP 보니 분당에 있는 IP로 나오네요.
일단 해당 IP는 막았지만 다른 IP로 또 공격을 할시 서버에도 무리가 되고 말입니다.
계속 서버에 access 를 하는 거니까 ddos 공격과 비슷하다고 볼수도 있겠죠?
동일 IP 로 몇분동안 수천번의 무차별 로그인 해킹시도가 있었습니다.
골든아이와 같은 크랙 프로그램을 가지고 아이디 비번 뽑아내려고
하는데요. 사이트 운영이나 할 줄 알지 리눅스 서버나 PHP 쪽은 잘 모르니까 답답하네요.
동일 IP로 몇회 이상 로그인 시도를 할시 10분 동안 해당 IP를 차단하는 스크립트 없나요?
막을 방법 뭐가 있을까요?
저희 사이트가 신규가입 받지 않는 비공개 사이트이다 보니 회원 아이디를 얻기 위해서
이런 공격을 하는 듯 싶은데요. ID 리스트는 유출이 이미 된거 같고 비번은 몰라서
막무가내 대입식으로 프로그램 돌리는 듯 하네요. 해당 IP 보니 분당에 있는 IP로 나오네요.
일단 해당 IP는 막았지만 다른 IP로 또 공격을 할시 서버에도 무리가 되고 말입니다.
계속 서버에 access 를 하는 거니까 ddos 공격과 비슷하다고 볼수도 있겠죠?
댓글 전체
서버의 /var/log/messages 파일을 열어보면 하루에도 끊임없이 접속을 시도한 것을 확인 할 수 있습니다.
방화벽을 설치하지 않은 때, 제가 기겁한 적이 있었는데
오전 7시부터 시작해서 23시까지 초당 2-4번정도 root 계정의 접속을 시도했더군요.
만일에 암호가 단순한 형태였다면 뚫리고도 남음이 있었을 것입니다.
다행이도 제 경우 root 암호는 특수문자 숫자 조합형태로 최소 16자리 이상을 만들어 사용합니다.
이일을 계기로 방화벽에 신경을 많이 쓰게 되었던 것 같습니다.
지금 설명하고 하는 룰은 iptables 이 설치된 서버라면 특별한 설정이 필요없이 설정이 가능할 것입니다.
지금 쓰고 있는 SULinux/Centos 경우는 아무 무리없이 사용이 가능합니다.
http://la-samhna.de/library/brutessh.html 원본을 확인 할 수 있으니 한번 살펴보심이 도움이 될 것입니다.
문서의 중간에 다음과 같은 iptables 룰이 있습니다.
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \
--name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl \
--name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 \
--hitcount 4 --rttl --name SSH -j DROP
위의 룰은 커널 2.6 이상에서 보름이상 지나게 되면 풀리는 문제점이 있다는 이야기가 있으므로
다음의 룰을 적용합니다.
iptables -N SSH_WHITELIST
iptables -A SSH_WHITELIST -s TRUSTED_HOST_IP -m \
recent --remove --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \
--name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 5 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 5 --rttl --name SSH -j DROP
위의 룰을 기존에 쓰고 계신 iptables 룰에 추가만 하시면 바로 사용이 가능합니다.
# iptables -L 명령을 통해 제대로 작동중인지 확인을 합니다.
--seconds 60 --hitcount 5의 뜻은 60초동안 5번을 접속하게 되면 다음 60초동안 접속을 차단하고,
다시 60초 동안 5번을 접속을 시도하게되면 접속을 완전히 차단한다는 뜻이므로 적절히 조절해 주시면 됩니다.
룰을 적용하고 하루정도 지난후 messages 파일을 살펴보면 접속을 시도한 ip가 차단된 것을 확인 할 수 있습니다.
도움이 되었으면 합니다.
방화벽을 설치하지 않은 때, 제가 기겁한 적이 있었는데
오전 7시부터 시작해서 23시까지 초당 2-4번정도 root 계정의 접속을 시도했더군요.
만일에 암호가 단순한 형태였다면 뚫리고도 남음이 있었을 것입니다.
다행이도 제 경우 root 암호는 특수문자 숫자 조합형태로 최소 16자리 이상을 만들어 사용합니다.
이일을 계기로 방화벽에 신경을 많이 쓰게 되었던 것 같습니다.
지금 설명하고 하는 룰은 iptables 이 설치된 서버라면 특별한 설정이 필요없이 설정이 가능할 것입니다.
지금 쓰고 있는 SULinux/Centos 경우는 아무 무리없이 사용이 가능합니다.
http://la-samhna.de/library/brutessh.html 원본을 확인 할 수 있으니 한번 살펴보심이 도움이 될 것입니다.
문서의 중간에 다음과 같은 iptables 룰이 있습니다.
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \
--name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl \
--name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 \
--hitcount 4 --rttl --name SSH -j DROP
위의 룰은 커널 2.6 이상에서 보름이상 지나게 되면 풀리는 문제점이 있다는 이야기가 있으므로
다음의 룰을 적용합니다.
iptables -N SSH_WHITELIST
iptables -A SSH_WHITELIST -s TRUSTED_HOST_IP -m \
recent --remove --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \
--name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 5 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 5 --rttl --name SSH -j DROP
위의 룰을 기존에 쓰고 계신 iptables 룰에 추가만 하시면 바로 사용이 가능합니다.
# iptables -L 명령을 통해 제대로 작동중인지 확인을 합니다.
--seconds 60 --hitcount 5의 뜻은 60초동안 5번을 접속하게 되면 다음 60초동안 접속을 차단하고,
다시 60초 동안 5번을 접속을 시도하게되면 접속을 완전히 차단한다는 뜻이므로 적절히 조절해 주시면 됩니다.
룰을 적용하고 하루정도 지난후 messages 파일을 살펴보면 접속을 시도한 ip가 차단된 것을 확인 할 수 있습니다.
도움이 되었으면 합니다.
뭔 말인지 어려워서 잘 모르겠지만 한번 시도해보겠습니다. 답변 감사합니다.