리눅스 fail2ban

IT 위키
리눅스에서 특정 시스템에 일정 횟수 이상 로그인을 실패하면 일정 시간동안 차단하는 시스템

설정파일[편집 | 원본 편집]

/etc/fail2ban/jail.conf

설정[편집 | 원본 편집]

  • jail.conf를 직접 수정하지 않고 jail.local 파일을 생성하여 수정한다.
    • jail.conf는 업데이트 과정 등에서 덮어씌워질 수 있다.
$ cp ./jail.conf ./jail.local 
또는 
$ cp ./jail.conf ./jail.d/custom.local 
등
  • 차단 옵션을 추가한다. 기본적으로 아무것도 차단하지 않도록 설정되어 있을 수 있다.
[DEFAULT]
## 차단하지 않을 IP
ignoreip = 127.0.0.1/8 192.168.10.0/24

# 3시간 차단
bantime  = 10800

# 아래 시간동안 maxretry 만큼 실패시 차단
findtime  = 300

# 최대 허용 횟수
maxretry = 5

# 메일 수신자, 다중 수신자는 지원 안 함 
destemail = [email protected]

# 메일 보낸 사람
sender = [email protected]

# 메일 전송 프로그램
mta = sendmail

# 차단시 whois 정보와 관련 로그를 첨부하여 메일 전송
action = %(action_mwl)s

# sshd 서비스 차단
[sshd]
enabled = true
port     = ssh, 10022
  • 설정을 마쳤으면 서비스를 재시작하여 변경 사항을 반영한다.
$ sudo systemctl restart fail2ban
  • 차단 정보를 확인한다.
$ sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     8
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     2
   `- Banned IP list:

트러블 슈팅[편집 | 원본 편집]

ban이 이루어지지 않는 경우[편집 | 원본 편집]

  • 감지: 로그인 시 아래와 같은 수많은 실패 기록이 보인다.
Last failed login: Sat Apr  4 13:25:31 KST 2020 from 11.11.11.11 on ssh:notty
There were 121259 failed login attempts since the last successful login
  • 확인: fail2ban의 차단이 동작하고 있는지 확인한다.
    • 아래와 같이 나오면 sshd에 대한 ban 옵션이 꺼져 있는 것이다.
# fail2ban-client status
Status
|- Number of jail: 0
`- Jail list:
  • 조치: jail 설정 파일에서 sshd에 대한 차단 옵션을 활성화시켜 준다.
    • 설정파일은 일반적으로 /etc/fail2ban/jail.local 또는 /etc/fail2ban/jail.conf 에 있다.
    • 아래와 같은 라인이 주석 처리 되어 있다면 주석 처리를 해제한다.
[sshd]
enabled = true
  • 재기동
    • systemctl restart fail2ban.service
  • 재확인: fail2ban의 차단이 동작하고 있는지 확인한다.
    • 아래와 같이 나오면 sshd에 대한 ban 옵션이 동작하고 있는 것이다.
# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

참고 문헌[편집 | 원본 편집]