웹사이트 검색

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


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

지정된 횟수만큼 잘못된 비밀번호를 시도하면 클라이언트의 IP 주소는 지정된 기간 동안 또는 시스템 관리자가 차단을 해제할 때까지 시스템에 액세스하는 것이 금지됩니다. 이러한 방식으로 시스템은 단일 호스트의 반복적인 무차별 대입 공격으로부터 보호됩니다.

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

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

1단계: Firewalld가 실행 중인지 확인

기본적으로 Rocky는 Firewalld가 실행되는 상태로 제공됩니다. 그러나 시스템에 해당되지 않는 경우 다음을 실행하여 Firewalld를 시작하세요.

sudo systemctl start firewalld

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

sudo systemctl enable firewalld

그런 다음 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이 설치된 상태에서 계속 진행하여 fail2banfail2ban-firewalld 패키지를 설치합니다.

sudo dnf install fail2ban fail2ban-firewalld

그러면 다른 종속성과 함께 Fail2ban 서버 및 방화벽 구성 요소가 설치됩니다.

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

sudo systemctl start fail2ban

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

sudo systemctl enable fail2ban

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

sudo systemctl status fail2ban

출력은 Fail2ban이 예상대로 실행되고 있다는 확인입니다.

4단계: Rocky Linux에서 Fail2ban 구성

다음으로, 의도한 대로 작동하려면 Fail2ban을 구성해야 합니다. 이상적으로는 기본 구성 파일인 /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

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

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

기본적으로 Fail2ban은 iptables와 함께 작동합니다. 그러나 이는 방화벽을 위해 더 이상 사용되지 않습니다. iptables 대신 Firewalld와 함께 작동하려면 fall2ban을 구성해야 합니다.

따라서 다음 명령을 사용하여 실행하십시오.

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

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

sudo systemctl restart fail2ban

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

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

이 예에서는 SSH 서비스를 보호하기 위해 Jail 구성 파일을 생성합니다. 따라서 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개의 Jail이 구성되어 있음을 알 수 있습니다.

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

sudo fail2ban-client get sshd maxretry

3

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

6단계: Fail2ban 구성 테스트

Fail2ban을 설정하고 SSH 서비스에 대한 Jail 구성 파일을 생성한 후 테스트 실행을 수행하고 각 비밀번호 프롬프트에 잘못된 비밀번호를 지정하여 3번의 로그인 실패를 시뮬레이션할 것입니다.

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

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

sudo fail2ban-client status sshd

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

sudo fail2ban-client unban 192.168.2.102

다시 한 번 감옥 상태를 확인하여 해당 클라이언트가 금지 IP 목록에 포함되어 있지 않은지 확인하세요.

sudo fail2ban-client status sshd

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