얼마전 포스팅을 통해서 Root 계정을 사용하여 SSH에 직접 로그인을 할수없도록 설정하는것을 배워봤습니다.
오늘은 로그인 실패시 일정 시간동안 해당 IP의 로그인을 막는방법을 알려드리도록 하겠습니다.
저는 해당 기능을 설정하기 위해서 Fail2Ban이라는 패키지를 설치해서 사용하도록 하겠습니다.
1. 우선 패키지들을 최신상태로 유지해주세요.
yum -y update
2. Fail2Ban 패키지를 설치해주세요.
yum -y install fail2ban
3. 설정파일을 생성하기 위해서 아래 명령어를 입력해주세요.
echo "[DEFAULT]" > /etc/fail2ban/jail.local
4. 로그인 실패시 로그인을 막을 시간을 설정해주세요.
저는 1800초 즉 30분을 설정하겠습니다.
echo "bantime = 1800" >> /etc/fail2ban/jail.local
5. 해당 서비스가 동작할때 발생하는 이벤트를 받을 메일주소를 입력해주세요.
echo "destmail = mail@yourmail.com" >> /etc/fail2ban/jail.local
6. 보내는 메일주소를 입력해주세요.
echo "sender = root@yourhostname" >> /etc/fail2ban/jail.local
7. 다음에 입력할 문장과 구분하기 위해서 넣었습니다.
그냥 ” ” 공백으로 넣으셔도 상관없습니다.
echo "#########################" >> /etc/fail2ban/jail.local
8. SSH에 적용되도록 설정하는 부분입니다. 아래 명령어를 입력해주세요.
echo "[sshd]" >> /etc/fail2ban/jail.local
9. SSH에서도 Fail2Ban이 동작하도록 활성화 해주세요.
echo "enabled = true" >> /etc/fail2ban/jail.local
10. Fail2Ban 서비스를 시작해주세요.
service fail2ban start
11. 재부팅시에도 자동으로 시작되도록 등록해주세요.
chkconfig fail2ban on
12. 테스트를 위해서 잘못된 비밀번호로 여러번 로그인 시도를 해보겠습니다.
13. 여러번 시도를 하다보면 아래와 같이 더이상 패스워드를 입력하라는 문구가 표시되지 않고, 로그인 시도가 거부되는것을 보실수 있습니다.
Fail2Ban 의 세부적인 설정을 한번 확인해보시고 (/etc/fail2ban/jail.conf 확인) 필요한 설정을 진행해보시기 바랍니다.
이렇게 로그인 실패시 로그인 시도를 차단하는 기능을 설정하면 대부분의 크래커들이 사용하는 무차별 대입공격용 스크립트,프로그램에 무차별 대입공격을 차단하는 서버로 기록이 되면서 해당 IP로부터는 한동안은 로그인시도가 발생하지 않습니다.
그보다 가장 중요한것은 무차별 대입공격시 로그인 하는것이 30분씩 잠기게 되므로 무차별 대입공격을 어렵게 합니다.
따라서 서버의 보안성을 조금더 향상시킬수 있을꺼 같습니다.
앞으로는 IP로 SSH 로그인을 제어하는것을 알아보도록 하겠습니다.