SW/리눅스

Linux : Ubuntu 20.04 : Fail2ban 설치, 구성 방법, 예제, 명령어

얇은생각 2022. 12. 1. 07:30
반응형

Fail2ban은 서비스 로그의 악의적인 활동을 모니터링하여 무차별 공격 및 기타 자동화된 공격으로부터 Linux 시스템을 보호하는 도구입니다. 정규식을 사용하여 로그 파일을 검색합니다. 패턴과 일치하는 모든 항목이 카운트되며, 해당 항목이 미리 정의된 특정 임계값에 도달하면 Fail2ban은 특정 시간 동안 시스템 방화벽을 사용하여 공격 IP를 금지합니다. 금지 기간이 만료되면 IP 주소가 금지 목록에서 제거됩니다.

이 자료에서는 Ubuntu 20.04에 Fail2ban을 설치하고 구성하는 방법에 대해 설명합니다.

 

 

Linux : Ubuntu 20.04 : Fail2ban 설치, 구성 방법, 예제, 명령어

 

 

Ubuntu에 Fail2ban을 설치

Fail2ban 패키지는 기본 Ubuntu 20.04 리포지토리에 포함되어 있습니다. 설치하려면 다음 명령을 루트 또는 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 2020-08-19 06:16:29 UTC; 27s ago
#        Docs: man:fail2ban(1)
#    Main PID: 1251 (f2b/server)
#       Tasks: 5 (limit: 1079)
#      Memory: 13.8M
#      CGroup: /system.slice/fail2ban.service
#              └─1251 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

 

 

이 시점에서 Ubuntu 서버에서 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을 구성하는 가장 쉬운 방법은 jail.conf를 jail.local로 복사하고 .local 파일을 수정하는 것입니다. 고급 사용자는 처음부터 .local 구성 파일을 작성할 수 있습니다. .local 파일은 재정의하려는 설정만 포함하여 해당 .conf 파일의 모든 설정을 포함할 필요는 없습니다.

기본 jail.conf 파일에서 .local 구성 파일을 생성합니다.

sudo cp /etc/fail2ban/jail.{conf,local}

 

 

Fail2ban 서버 열기 구성을 시작하려면 텍스트 편집기가 있는 jail.local 파일을 참조하십시오.

sudo nano /etc/fail2ban/jail.local

 

 

이 파일에는 각 구성 옵션이 수행하는 작업에 대한 설명이 포함되어 있습니다. 이 예에서는 기본 설정을 변경합니다.

 

 

 

화이트리스트 IP 주소

금지에서 제외할 IP 주소, IP 범위 또는 호스트를 ignoreip 지시문에 추가할 수 있습니다. 여기서 로컬 PC IP 주소와 화이트리스트에 추가할 다른 모든 컴퓨터를 추가해야 합니다.

ignore ip로 시작하는 줄의 주석을 제거하고 공백으로 구분된 IP 주소를 추가합니다.

# /etc/fail2ban/jail.local

ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24

 

 

 

설정을 금지

banttime, findtime 및 maxretry 옵션의 값은 bantime 및 bantime 조건을 정의합니다.

bantime은 IP가 금지된 기간입니다. 접미사를 지정하지 않으면 기본값은 초입니다. 기본적으로 밴타임 값은 10분으로 설정됩니다. 일반적으로 대부분의 사용자는 더 긴 금지 시간을 설정하려고 합니다. 원하는 대로 값을 변경합니다.

# /etc/fail2ban/jail.local

bantime  = 1d

 

 

IP를 영구적으로 금지하려면 음수를 사용합니다.

find time은 금지가 설정될 때까지의 실패 횟수 사이의 기간입니다. 예를 들어 Fail2ban이 다섯 번의 실패(최대 재시도, 아래 참조) 후 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은 감옥의 개념을 사용합니다. 감옥은 서비스를 설명하고 필터와 작업을 포함합니다. 검색 패턴과 일치하는 로그 항목이 카운트되고 미리 정의된 조건이 충족되면 해당 작업이 실행됩니다.

Fail2ban은 다양한 서비스에 대해 다수의 감옥과 함께 배송됩니다. 또한 자신만의 감옥 구성을 만들 수도 있습니다.

기본적으로 ssh 감옥만 사용하도록 설정됩니다. 감옥을 활성화하려면 감옥 제목 뒤에 enabled = true를 추가해야 합니다. 다음은 proftpd 감옥을 실행하는 예를 보여 줍니다.

# /etc/fail2ban/jail.local

[proftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
logpath  = %(proftpd_log)s
backend  = %(proftpd_backend)s

 

 

이전 섹션에서 논의한 설정은 교도소별로 설정할 수 있습니다. 예를 들어 보겠습니다.

# /etc/fail2ban/jail.local

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 4w
ignoreip  = 127.0.0.1/8 23.34.45.56

 

 

필터는 /etc/fail2ban/filter.d 디렉터리에 있으며 감옥과 이름이 같은 파일에 저장됩니다. 사용자 정의 설정 및 정규식 사용 경험이 있는 경우 필터를 미세 조정할 수 있습니다.

구성 파일을 편집할 때마다 변경 내용을 적용하려면 Fail2ban 서비스를 재시작해야 합니다.

sudo systemctl restart fail2ban

 

 

 

Fail2ban 클라이언트

Fail2ban은 Fail2ban-client라는 명령줄 도구와 함께 제공되며, 이 도구를 사용하여 Fail2ban 서비스와 상호 작용할 수 있습니다.

사용 가능한 모든 옵션을 보려면 -h 옵션을 사용하여 명령을 호출합니다.

fail2ban-client -h

 

 

이 도구를 사용하여 IP 주소 금지/금지 해제, 설정 변경, 서비스 재시작 등을 수행할 수 있습니다. 다음은 몇 가지 예입니다.

감옥 상태를 확인합니다.

sudo fail2ban-client status sshd

 

 

IP의 금지를 해제합니다.

sudo fail2ban-client set sshd unbanip 23.34.45.56

 

 

IP를 금지합니다.

sudo fail2ban-client set sshd banip 23.34.45.56

 

 

Ubuntu 20.04에 Fail2ban을 설치하고 구성하는 방법을 보여드렸습니다.

반응형