본문 바로가기

소프트웨어/일반

[라즈베리파이] ssh brute force attack 방어용 fail2ban 설치

 

SSH에 대한 Brute force attack (무차별 대입 공격)을 방어하기 위해서 fail2ban을 설치하고 설정해봤습니다.

 

 

Brute force attack(무차별 대입 공격)에 관한 더 자세한 사항은 아래 링크를 참조하세요.

ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84_%EB%8C%80%EC%9E%85_%EA%B3%B5%EA%B2%A9

 

 

아래와 같은 순서로 설치 및 설정합니다.

 

 

 

1. fail2ban 설치

usr@raspberrypi:~ $ sudo apt install fail2ban

 

 

 

2. 설정 파일 복사

usr@raspberrypi:/etc/fail2ban $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

 

 

 

3. 설정 파일 편집 (nano이외에 vi나 다른 텍스트 편집기를 사용해도 됩니다. 간단한 작업이므로 nano를 사용하였습니다.)

usr@raspberrypi:/etc/fail2ban $ sudo nano /etc/fail2ban/jail.local

 

[sshd]
# Enable
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
# Retry count
maxretry = 3
# -1: Banned forever, otherwise in seconds
bantime = -1

# 주석 라인은 넣지 않아도 됩니다.

nano 기준 "Crtl + O" 로 저장하고 "Ctrl + X"로 nano를 종료합니다.

 

 

 

 

4. 서비스 재시작

usr@raspberrypi:/etc/fail2ban $ sudo service fail2ban restart

 

 

 

5. fail2ban-client 상태 확인

usr@raspberrypi:/etc/fail2ban $ fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

 

 

 

6. fail2ban 로그 확인

이와 같이 여러 곳에서 접속 시도를 하는 것을 확인할 수 있으며 BAN처리 되고 있습니다. (이새끼들이)

usr@raspberrypi:/etc/fail2ban $ sudo tail -10 /var/log/fail2ban.log
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 37.XXX.YYY.ZZZ
2020-09-04 fail2ban.actions     [14029]: NOTICE  [sshd] Ban 37.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 51.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 51.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 81.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 81.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 51.XXX.YYY.ZZZ
2020-09-04 fail2ban.actions     [14029]: NOTICE  [sshd] Ban 51.XXX.YYY.ZZZ
2020-09-04 fail2ban.filter      [14029]: INFO    [sshd] Found 81.XXX.YYY.ZZZ
2020-09-04 fail2ban.actions     [14029]: NOTICE  [sshd] Ban 81.XXX.YYY.ZZZ

 

 

 

7. 접속 시도 로그 확인

usr@raspberrypi:/etc/fail2ban $ sudo tail -30 /var/log/auth.log

 

 

 

8. 밴 당한 IP 리스트 확인

usr@raspberrypi:/etc/fail2ban $ sudo iptables -L

 

 

 

9. 실수로 밴을 당한 IP가 있을 경우 아래와 같이 밴을 풀어줄 수 있습니다.

usr@raspberrypi:/etc/fail2ban $ sudo fail2ban-client set sshd unbanip 220.XXX.YYY.ZZZ