작은 서버지만, 가끔 엄청난 로그인 시도가 있을 때가 있다.
기본적인 보안 유지를 위해 로그인 실패시 해당 IP를 차단 해 주는 프로그램을 설치 해 본다.
설치방법
명령어 한 줄이면 충분하다.
sudo apt-get install fail2ban
이후 부팅시마다 자동으로 시작하도록 하기 위해 시스템에 등록한다.
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
프로그램을 설치 했으니, 기본적인 설정을 해 주어야 한다.
기본 설정 파일은 /etc/fail2ban/jail.conf 이지만, 업데이트시 초기값으로 돌아갈 수 있으니 개인 설정 파일을 만들어서 적용하는 것을 권한다고 한다.
개인 설정 파일을 /etc/fail2ban/jail.local 로 만들도록 한다.
sudo vim /etc/fail2ban/jail.local
이후 편집기가 열리면 아래 설정 예시를 참고하여 원하는 대로 적는다.
ignoreip: 항상 접근이 가능하도록 허용해 주는 ip를 적는다. 대부분 127.0.0.1/8 으로 한다.
bantime: 접속차단시간. 초 단위이다.(60=1분, 600=10분, 3600=1시간, 43200=12시간이며, -1은 영원히.)
findtime: 로그인을 시도하는 시간. (초 단위)
maxretry: 로그인시도 허용 시도 횟수.
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
위 설정파일의 의미는 SSH를 통해 10분동안 5번의 로그인 시도를 실패하는 경우, 10분간 해당 IP 접근을 제한하겠다는 뜻이다.
로그파일은 /var/log/auth.log 에 저장된다.
(Tip: putty를 통해 위 내용을 복사 붙여넣기 할 때, putty 붙여넣기 단축키는 Shift + insert 이다.)
설정을 완료했으면, 설정 파일을 적용시키기 위해 서비스를 재시작한다.
sudo service fail2ban restart
서비스가 잘 시작되었고, 정상적으로 작동하는지 확인 해 본다.
sudo fail2ban-client status sshd
가끔, 제대로 등록된 사용자가 비밀번호를 계속 잘못 입력하다가 해당 IP가 차단되는 경우가 있을 수 있다.
이런 경우, 해당 IP 정보를 확인한 후 아래 명령어로 차단을 해제하면 된다.
sudo fail2ban-client set sshd unbanip x.x.x.x