Rocky Linux 및 AlmaLinux에 Fail2ban을 설치하는 방법


Python으로 작성된 Fail2ban은 무차별 대입 공격으로부터 서버를 보호하는 무료 오픈 소스 IPS(침입 방지 시스템)입니다.

잘못된 암호 시도 횟수가 지정된 후 클라이언트의 IP 주소는 지정된 기간 동안 또는 시스템 관리자가 차단을 해제할 때까지 시스템에 액세스할 수 없습니다. 이러한 방식으로 시스템은 단일 호스트에서 반복되는 무차별 대입 공격으로부터 보호됩니다.

[ 당신은 또한 좋아할지도 모릅니다: OpenSSH 서버를 보호하고 강화하는 방법 ]

Fail2ban은 구성이 가능하며 SSH, vsftpd, Apache 및 Webmin과 같은 수많은 서비스를 보호하도록 설정할 수 있습니다.

이 가이드에서는 Rocky Linux 및 AlmaLinux에서 Fail2ban을 설치하고 구성하는 방법에 중점을 둡니다.

1단계: 방화벽이 실행 중인지 확인

기본적으로 Rocky는 방화벽이 실행되는 상태로 제공됩니다. 그러나 시스템에서 그렇지 않은 경우 다음을 실행하여 방화벽을 시작합니다.

$ sudo systemctl start firewalld

그런 다음 부팅 시 시작하도록 활성화합니다.

$ sudo systemctl enable firewalld

그런 다음 방화벽 상태를 확인하십시오.

$ sudo systemctl status firewalld

또한 다음 명령을 사용하여 현재 시행 중인 모든 방화벽 규칙을 확인할 수 있습니다.

$ sudo firewall-cmd --list-all

2단계: Rocky Linux에 EPEL 설치

fail2ban 및 기타 필수 패키지 설치를 위한 요구 사항으로 RHEL 기반 배포를 위한 추가 고품질 패키지를 제공하는 EPEL 저장소를 설치해야 합니다.

$ sudo dnf install epel-release

3단계: Rocky Linux에 Fail2ban 설치

EPEL이 설치된 상태에서 계속해서 fail2ban 및 fail2ban-firewalld 패키지를 설치하십시오.

$ sudo dnf install fail2ban fail2ban-firewalld

이렇게 하면 다른 종속성과 함께 fail2ban 서버와 firewalld 구성 요소가 설치됩니다.

fail2ban 설치가 완료되면 fail2ban 서비스를 시작합니다.

$ sudo systemctl start fail2ban

그리고 부팅 시 시작되도록 활성화합니다.

$ sudo systemctl enable fail2ban

다음 명령을 실행하여 fail2ban 서비스의 상태를 확인할 수 있습니다.

$ sudo systemctl status fail2ban

출력은 Fail2ban이 예상대로 실행 중임을 확인하는 것입니다.

4단계: Rocky Linux에서 Fail2ban 구성

계속해서 의도한 대로 작동하도록 failban을 구성해야 합니다. 이상적으로는 기본 구성 파일인 /etc/fail2ban/jail.conf를 편집합니다. "그러나 이것은 권장되지 않습니다. "해결 방법은 jail.conf 구성 파일의 내용을 jail.local 파일로 복사하는 것입니다.

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

이제 원하는 편집기를 사용하여 jail.local 파일을 엽니다.

$ sudo vim /etc/fail2ban/jail.local

[DEFAULT] 섹션에서 다음 설정이 표시되는지 확인합니다.

bantime = 1h
findtime = 1h
maxretry = 5

속성을 정의해 보겠습니다.

    "
  1. bantime 지시문은 인증 시도 실패 후 클라이언트가 금지되는 기간을 지정합니다.
  2. findtime 지시문은 반복되는 잘못된 비밀번호 시도를 고려할 때 fail2ban이 고려할 기간 또는 기간입니다.
  3. maxretry 매개변수는 원격 클라이언트가 서버에 액세스하는 것을 차단하기 전에 잘못된 암호 시도의 최대 횟수입니다. 여기서 클라이언트는 5번의 인증 실패 후 잠깁니다.
  4. "

    기본적으로 fail2ban은 iptables와 함께 작동합니다. 그러나 이것은 firewalld를 위해 더 이상 사용되지 않습니다. iptables 대신 firewalld와 함께 작동하도록 fail2ban을 구성해야 합니다.

    따라서 다음 명령으로 실행하십시오.

    $ sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
    

    변경 사항을 적용하려면 fail2ban을 다시 시작하십시오.

    $ sudo systemctl restart fail2ban
    

    5단계: Fail2ban으로 SSH 서비스 보호

    기본적으로 fail2ban은 보호하려는 서비스에 대해 감옥 구성을 활성화할 때까지 원격 호스트를 차단하지 않습니다. 감옥 구성은 /etc/fail2ban/jail.d 경로에 지정되어 있으며 jail.local 파일에 지정된 구성을 재정의합니다.

    이 예에서는 SSH 서비스를 보호하기 위해 감옥 구성 파일을 생성합니다. 따라서 SSH 감옥 파일을 작성하십시오.

    $ sudo vim /etc/fail2ban/jail.d/sshd.local
    

    다음으로 다음 줄을 붙여넣습니다.

    [sshd]
    enabled = true
    
    # Override the default global configuration
    # for specific jail sshd
    bantime = 1d
    maxretry = 3
    

    위의 구성에서 원격 호스트는 SSH 로그인 시도 3회 실패 후 1일 동안 시스템에 액세스할 수 없습니다. 변경 사항을 저장하고 fail2ban 서비스를 다시 시작하십시오.

    $ sudo systemctl restart fail2ban
    

    그런 다음 fail2ban-client 명령줄 유틸리티를 사용하여 감옥 구성 상태를 확인합니다.

    $ sudo fail2ban-client status
    

    출력에서 'sshd'라는 서비스에 대해 구성된 1개의 감옥이 있음을 알 수 있습니다.

    또한 get 옵션을 사용하여 sshd 감옥의 maxretry 값을 확인할 수 있습니다.

    $ sudo fail2ban-client get sshd maxretry
    
    3
    

    3으로 인쇄된 값은 sshd.local 파일에 지정한 값과 일치해야 합니다.

    6단계: Fail2ban 구성 테스트

    fail2ban을 설정하고 SSH 서비스에 대한 감옥 구성 파일을 만든 후 테스트 실행을 수행하고 각 암호 프롬프트에 잘못된 암호를 지정하여 실패한 로그인 3개를 시뮬레이션합니다.

    따라서 원격 Linux 시스템으로 이동하여 잘못된 비밀번호를 사용하여 로그인을 시도하십시오. 3번의 실패한 시도 후에 연결이 끊어지고 차단 기간이 경과할 때까지 다시 연결하려는 모든 시도가 차단됩니다.

    차단된 클라이언트 시스템에 대한 통찰력을 수집하려면 감옥 상태를 확인하십시오.

    $ sudo fail2ban-client status sshd
    

    감옥에서 클라이언트를 금지 해제하거나 제거하려면 다음 명령을 실행하십시오.

    $ sudo fail2ban-client unban 192.168.2.102
    

    다시 한 번 감옥 상태를 확인하여 클라이언트가 금지된 IP 목록에 포함되지 않았는지 확인합니다.

    $ sudo fail2ban-client status sshd
    

    이미 보았듯이 Fail2ban은 Linux 시스템을 침해하려는 침입자를 막는 데 매우 유용한 도구입니다. 방화벽과 함께 작동하여 특정 횟수의 로그인 시도 실패 후 지정된 기간 동안 클라이언트 시스템을 금지합니다. 그렇게 함으로써 Linux 서버에 대한 추가 보호 계층을 제공합니다.