Fail2ban은 리눅스에서 주로 보안을 강화하기 위해 사용되는 도구입니다. 서버에 대한 무차별 대입 공격(Brute Force Attack)을 방어하기 위해 개발된 이 도구는 주로 SSH와 같은 네트워크 서비스에 적용됩니다. 로그 파일을 모니터링하여 특정 IP에서 지속적으로 실패한 로그인 시도를 감지하고, 일정한 규칙에 따라 해당 IP를 자동으로 차단하는 역할을 합니다. Fail2ban은 iptables와 연동하여 IP를 차단하고, 차단된 IP는 일정 시간이 지나면 자동으로 해제될 수 있습니다.
Fail2ban 설치
대부분의 리눅스 배포판에서 Fail2ban을 쉽게 설치할 수 있습니다. 예를 들어, 우분투(Ubuntu)에서 다음 명령어로 설치합니다.
sudo apt install fail2ban
설치 후, Fail2ban을 즉시 시작하고 자동으로 실행되도록 설정합니다.
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Fail2ban 설정 파일
Fail2ban의 설정 파일은 /etc/fail2ban/jail.conf에 있습니다. 이 파일에서 각 서비스에 대한 필터 규칙을 정의하고, 차단할 IP의 기준을 설정할 수 있습니다. 설정을 변경할 때는 원본 파일을 수정하지 않고, /etc/fail2ban/jail.local 파일에 복사한 후 수정하는 것이 권장됩니다.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
SSH 보호 설정
기본적으로 Fail2ban은 SSH 서비스에 대한 보호를 제공합니다. 이를 활성화하려면 jail.local 파일에서 SSH 항목을 찾아 다음과 같이 설정합니다.
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
enabled = true는 해당 서비스를 활성화하며, port는 보호할 포트를, maxretry는 허용되는 실패 시도 횟수를, bantime은 IP 차단 시간을 의미합니다.
Fail2ban 재시작
설정 파일을 변경한 후에는 반드시 Fail2ban을 재시작해야 합니다.
sudo systemctl restart fail2ban
차단된 IP 목록 확인
Fail2ban이 현재 차단하고 있는 IP 목록을 확인하려면 다음 명령어를 사용합니다.
sudo fail2ban-client status sshd
user@linux:~$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| `- Total failed: 10
`- Actions
|- Currently banned: 1
`- Total banned: 5
위의 예시는 SSH 서비스에서 현재 차단된 IP 수와, 지금까지 차단된 IP의 총 개수를 보여줍니다.
특정 IP 차단 해제
만약 실수로 차단된 IP를 해제하고 싶다면, 다음 명령어로 특정 IP를 차단 해제할 수 있습니다.
sudo fail2ban-client unban IP주소
예를 들어, 192.168.1.100을 차단 해제하려면 아래와 같이 입력합니다.
sudo fail2ban-client unban 192.168.1.100
Fail2ban 로그 확인
Fail2ban이 차단한 IP 및 기타 동작 기록은 /var/log/fail2ban.log 파일에서 확인할 수 있습니다. 이 파일을 확인함으로써 Fail2ban의 작동 상태를 모니터링할 수 있습니다.
sudo cat /var/log/fail2ban.log
리눅스 터미널에서의 Fail2ban 명령어 예시
user@linux:~$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| `- Total failed: 15
`- Actions
|- Currently banned: 2
`- Total banned: 10
이 예시는 SSH 서비스에 대한 Fail2ban의 상태를 확인하는 예시입니다. 현재 2개의 IP가 차단된 상태이며, 총 10개의 IP가 차단되었습니다.
참고사이트
'Linux' 카테고리의 다른 글
[리눅스] tshark 명령어 완벽 가이드 사용법(Wireshark의 CLI 버전) (0) | 2024.10.24 |
---|---|
[리눅스] iftop 명령어 완벽 가이드 사용법(네트워크 트래픽 모니터링) (1) | 2024.10.24 |
[리눅스] tcpdump 명령어 완벽 가이드 사용법(네트워크 패킷 캡처) (0) | 2024.10.23 |
[리눅스] ip rule 명령어 완벽 가이드 사용법(고급 라우팅 규칙 설정) (0) | 2024.10.23 |
[리눅스] ufw 명령어 완벽 가이드 사용법(간단한 방화벽 설정) (0) | 2024.10.23 |
[리눅스] ss 명령어 완벽 가이드 사용법(네트워크 연결 및 소켓 상태 확인) (0) | 2024.10.23 |
[리눅스] journalctl 명령어 완벽 가이드 사용법(systemd 로그 확인) (0) | 2024.10.23 |
[리눅스] rsyslog 명령어 완벽 가이드 사용법(시스템 로그 관리) (0) | 2024.10.23 |