인터넷에서 액세스할 수 있는 모든 서버는 악성 프로그램 공격의 위험에 노출됩니다. 예를 들어 공용 네트워크에서 액세스할 수 있는 응용 프로그램이 있는 경우 공격자는 브루트 포스 시도를 사용하여 응용 프로그램에 액세스할 수 있습니다.
Fail2ban은 악의적인 활동에 대한 서비스 로그를 모니터링하여 무차별 공격 및 기타 자동화된 공격으로부터 Linux 시스템을 보호하는 데 도움이 되는 도구입니다. 정규식을 사용하여 로그 파일을 검색합니다. 패턴과 일치하는 모든 항목이 계산되고 해당 항목이 미리 정의된 특정 임계값에 도달하면 Fail2ban은 특정 시간 동안 시스템 방화벽을 사용하는 위반 IP를 금지합니다. 금지 기간이 만료되면 IP 주소가 금지 목록에서 제거됩니다.
이 문서에서는 Debian 10에 Fail2ban을 설치하고 구성하는 방법을 설명합니다.
Debian에 Fail2ban을 설치
Fail2ban 패키지는 기본 Debian 10 리포지토리에 포함되어 있습니다. 이를 설치하려면 루트 또는 sudo 권한이 있는 사용자로 다음 명령을 실행하십시오.
sudo apt update
sudo apt install fail2ban
완료되면 Fail2ban 서비스가 자동으로 시작됩니다. 서비스 상태를 확인하여 확인할 수 있습니다.
sudo systemctl status fail2ban
# ● fail2ban.service - Fail2Ban Service
# Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
# Active: active (running) since Wed 2021-03-10 18:57:32 UTC; 47s ago
# ...
시점에서 Debian 서버에서 Fail2Ban이 실행됩니다.
Fail2ban 구성
기본 Fail2ban 설치에는 /etc/fail2ban/jail.conf 및 /etc/fail2ban/jail.d/defaults-debian.conf라는 두 가지 구성 파일이 함께 제공됩니다. 이러한 파일은 패키지를 업데이트할 때 덮어쓸 수 있으므로 수정하지 마십시오.
Fail2ban은 다음 순서로 구성 파일을 읽습니다. 각 .local 파일은 .conf 파일의 설정을 재정의합니다.
- /etc/fail2ban/syslog.conf
- /etc/fail2ban/syslog.d/*.conf
- /etc/fail2ban/syslog.local
- /etc/fail2ban/syslog.d/*.local
Fail2ban을 구성하는 가장 쉬운 방법은 jill.conf를 jill.local로 복사하고 .local 파일을 수정하는 것입니다. 고급 사용자는 처음부터 .local 구성 파일을 작성할 수 있습니다. .local 파일은 해당 .conf 파일의 모든 설정을 포함할 필요가 없으며 재정의하려는 설정만 포함할 수 있습니다.
기본 jail.conf 파일을 복사하여 .local 구성 파일을 생성합니다.
sudo cp /etc/fail2ban/jail.{conf,local}
열려 있는 Fail2ban 서버 구성을 시작하려면 텍스트 편집기를 사용하여 jill.local 파일을 사용하십시오.
sudo nano /etc/fail2ban/jail.local
이 파일에는 각 구성 옵션의 기능을 설명하는 주석이 포함되어 있습니다. 이 예에서는 기본 설정을 변경합니다.
IP 주소를 화이트리스트
금지에서 제외할 IP 주소, IP 범위 또는 호스트를 ignoreip 지시문에 추가할 수 있습니다. 여기에 로컬 PC IP 주소와 화이트리스트에 추가할 다른 모든 컴퓨터를 추가해야 합니다.
ignoreip으로 시작하는 행을 주석 해제하고 공백으로 구분된 IP 주소를 추가합니다.
# /etc/fail2ban/jail.local
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
설정을 금지
bantime, findtime 및 maxretry 옵션은 금지 시간 및 금지 조건을 설정합니다.
금지 시간은 IP가 금지된 기간입니다. 접미사를 지정하지 않으면 기본값은 초입니다. 기본적으로 bantime 값은 10분으로 설정됩니다. 대부분의 사용자는 금지 시간을 길게 설정하는 것을 선호합니다. 원하는 값으로 값을 변경합니다.
# /etc/fail2ban/jail.local
bantime = 1d
IP를 영구적으로 금지하려면 음수를 사용하십시오.
findtime은 금지가 설정되기 전의 실패 횟수 사이의 시간입니다. 예를 들어 Fail2ban이 5회 실패 후 IP를 금지하도록 설정된 경우(최대 재시도, 아래 참조), 이러한 실패는 찾기 시간 내에 발생해야 합니다.
# /etc/fail2ban/jail.local
findtime = 10m
maxretry는 IP가 금지되기 전의 실패 횟수입니다. 기본값은 5로 설정되며, 이는 대부분의 사용자에게 적합합니다.
# /etc/fail2ban/jail.local
maxretry = 5
이메일 알림
Fail2ban은 IP가 금지된 경우 전자 메일 경고를 보낼 수 있습니다. 전자 메일을 수신하려면 서버에 SMTP가 설치되어 있고 IP를 %(action_mw)s로만 금지하는 기본 작업을 다음과 같이 변경해야 합니다.
# /etc/fail2ban/jail.local
action = %(action_mw)s
%(action_mw)s는 문제가 있는 IP를 금지하고 whois 보고서와 함께 전자 메일을 보냅니다. 전자 메일에 관련 로그를 포함하려면 작업을 %(action_mwl)s로 설정하십시오.
송신 및 수신 전자 메일 주소도 변경할 수 있습니다.
# /etc/fail2ban/jail.local
destemail = admin@tistory.com
sender = root@tistory.com
Fail2ban Jail
Fail2ban은 jail의 개념을 사용합니다. jail은 서비스를 설명하고 필터와 액션을 포함합니다. 검색 패턴과 일치하는 로그 항목이 계산되고 미리 정의된 조건이 충족되면 해당 작업이 실행됩니다.
Fail2는 여러 가지 서비스를 위해 여러 개의 감옥이 있는 선박을 금지합니다. 자신만의 감옥 구성을 만들 수도 있습니다. 기본적으로 SSH 감옥만 사용할 수 있습니다.
jail을 활성화하려면 감옥 제목 뒤에 enabled = true를 추가해야 합니다. 다음 예에서는 포스트픽스 감옥을 실행하는 방법을 보여 줍니다.
# /etc/fail2ban/jail.local
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
이전 섹션에서 논의한 설정은 교도소별로 설정할 수 있습니다. 다음은 예입니다.
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 11.22.33.44
필터는 /etc/fail2ban/filter.d 디렉터리에 있으며 감옥과 이름이 같은 파일에 저장됩니다. 사용자 정의 설정 및 정규식에 대한 경험이 있는 경우 필터를 미세 조정할 수 있습니다.
구성 파일을 수정할 때마다 변경 내용을 적용하려면 Fail2ban 서비스를 다시 시작해야 합니다.
sudo systemctl restart fail2ban
Fail2ban 클라이언트
Fail2ban은 Fail2ban 서비스와 상호 작용하는 데 사용할 수 있는 fail2ban-client라는 명령줄 도구와 함께 제공됩니다.
사용 가능한 모든 옵션을 보려면 -h 옵션을 사용하여 명령을 호출합니다.
fail2ban-client -h
이 도구는 IP 주소 금지/금지 해제, 설정 변경, 서비스 재시작 등에 사용할 수 있습니다. 다음은 몇 가지 예입니다.
서버의 현재 상태를 가져옵니다.
sudo fail2ban-client status
jail 상태를 확인합니다.
sudo fail2ban-client status sshd
IP의 금지를 해제합니다.
sudo fail2ban-client set sshd unbanip 11.22.33.44
IP를 금지합니다.
sudo fail2ban-client set sshd banip 11.22.33.44
Debian 10에 Fail2ban을 설치하고 구성하는 방법을 보여드렸습니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Debian 10 : WireGuard VPN 설정 방법, 예제, 명령어 (0) | 2023.01.20 |
---|---|
Linux : Ubuntu 20.04 : Asterisk 설치 방법, 예제, 명령어 (0) | 2023.01.19 |
Linux : Ubuntu 20.04 : VSFTPD 로 FTP Server 설정 방법, 예제, 명령어 (0) | 2023.01.17 |
Linux : Ubuntu 20.04 : VMware Workstation Player 설치 방법, 예제, 명령어 (0) | 2023.01.15 |
Linux : Ubuntu 20.04 : Wine 설치, 사용 방법, 예제, 명령어 (0) | 2023.01.14 |