[Linux] Fail2ban 동작시 IP 차단 안되는 오류, SSH 로그 기록 안되는 오류 해결

김예찬·2024년 3월 20일
0
post-thumbnail

상황

linux 서버에 보안 강화를 위해 fail2ban을 설치하였다. 필터링 룰을 설정하고 fail2ban이 active된 상태에서도 설정된 룰에 따르면 차단해야될 ip들이 차단되지 않는 오류 상황을 마주하였다.

원인 파악

일단 fail2ban 실행이 제대로 되지 않은 상태이거나 fail2ban의 설정이 잘못되었는지 확인해주었다.

systemctl status fail2ban

상태가 active로 문제없이 잘 작동하고 있었다.

그렇다면 필터링 룰이 잘 적용되지 않았던 건가 생각하고 룰이 잘 적용되었는지 확인하였다.
fail2ban의 로그파일 확인
/var/log/fail2ban.log

테스트를 위해 설정한 룰
[sshd]
findtime = 120
maxretry = 3
bantime = 120
이 잘 적용되어 있는것을 확인 할 수 있었다.

이를 통해 fail2ban 자체적인 문제는 없다는 것을 확인하였다.

그렇다면 다음으로 고려해볼것은 로그 파일이다.

Fail2Ban은 기본적으로 시스템의 로그 파일을 모니터링하여 비정상적인 로그인 시도와 같은 보안 이벤트를 감지하고, 이러한 이벤트가 발생할 때 해당 IP 주소를 임시적으로 차단하게된다.
SSH 서비스의 로그인 시도를 모니터링하기 위해 기본 로그파일인 /var/log/auth.log를 확인한다.

SSH 로그파일을 확인해본 결과 아니나 다를까 로그가 비어있었다.

원인: ssh 로그가 기록되지 않아서 fail2ban이 접속기록을 확인하지 못해 차단이 제대로 이루어지지 못하는 것이었다.

해결과정

ssh 설정파일
/etc/ssh/sshd_config

아무것도 설정하지 않으면 기본적으로 auth.log에 로그가 기록이 된다.
ssh 설정에서는 큰 문제가 없었다.

이와 같은 상황이면 로그 관리 도구가 설치 되지 않았거나 설정의 오류가 있어서 일 수 있다.

로그관리 도구 rsyslog 또는 syslog-ng가 설치되어 있는지 확인해본 결과
dpkg -l | grep rsyslog
dpkg -l | grep syslog-ng
설치되어 있는게 없었다..

설치

sudo apt update
sudo apt install rsyslog


sudo systemctl start rsyslog
sudo systemctl enable rsyslog

/etc/rsyslog.conf 파일을 수정

auth.* /var/log/auth.log

재시작
sudo systemctl restart rsyslog

테스트

이후 원격에서 ssh 접속 패스워드를 3번 틀리니
접속이 차단되었다.

ssh 접속시도


차단된 ip확인

해당 ip가 잘 차단된걸 확인하였다. 굿!!

0개의 댓글