웹사이트 검색

Alma Linux 8에서 Fail2ban을 설치하고 구성하는 방법


이 페이지에서

  1. 전제 조건
  2. 방화벽 설치 확인\n
  3. Fail2Ban 설치
  4. Fail2Ban 구성
  5. Fail2Ban으로 SSH 보안
  6. 결론

Fail2ban은 Python으로 작성된 무료 오픈 소스 침입 방지 시스템입니다. 무차별 대입 공격으로부터 시스템을 보호하는 데 사용됩니다. 인증 시도에 대해 SSH(및 기타) 로그 파일을 지속적으로 모니터링하고 지정된 수의 잘못된 암호 시도 후 클라이언트 IP 주소가 Fail2Ban에 의해 금지됩니다. SSH, vsftpd, Apache 및 Webmin을 포함한 여러 서비스를 보호하는 데 사용할 수 있습니다.

이 튜토리얼에서는 Alma Linux 8에 Fail2Ban 방화벽을 설치하는 방법을 보여줍니다.

전제 조건

  • Alma Linux 8을 실행하는 서버.\n
  • 루트 암호는 서버에서 구성됩니다.\n

방화벽 설치 확인

기본적으로 Firewalld 패키지는 Alma Linux 8에 사전 설치되어 제공됩니다. 먼저 실행 여부를 확인해야 합니다. 다음 명령으로 확인할 수 있습니다.

systemctl status firewalld

firewalld가 실행되고 있지 않으면 다음과 같은 결과가 표시됩니다.

? firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

이제 다음 명령을 사용하여 firewalld 서비스를 시작합니다.

systemctl start firewalld

다음 명령을 사용하여 방화벽의 상태를 확인할 수 있습니다.

systemctl status firewalld

다음 출력이 표시되어야 합니다.

? firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago
     Docs: man:firewalld(1)
 Main PID: 7214 (firewalld)
    Tasks: 2 (limit: 23696)
   Memory: 27.9M
   CGroup: /system.slice/firewalld.service
           ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon...
Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.

이제 다음 명령을 사용하여 firewalld에 의해 구성된 모든 서비스를 나열합니다.

firewall-cmd --list-all

다음 출력이 표시되어야 합니다.

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Fail2Ban 설치

기본적으로 Fail2Ban 패키지는 Alma Linux 기본 리포지토리에서 사용할 수 없습니다. 따라서 EPEL 저장소에서 설치해야 합니다. 다음 명령을 사용하여 EPEL 저장소를 설치할 수 있습니다.

dnf install epel-release -y

EPEL 저장소가 설치되면 다음 명령을 사용하여 Fail2Ban 방화벽을 설치할 수 있습니다.

dnf install fail2ban fail2ban-firewalld -y

설치가 완료되면 다음 명령을 사용하여 Fail2Ban 서비스를 시작하고 활성화합니다.

systemctl start fail2ban
systemctl enable fail2ban

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

systemctl status fail2ban

다음 출력이 표시되어야 합니다.

? fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago
     Docs: man:fail2ban(1)
  Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
 Main PID: 7840 (fail2ban-server)
    Tasks: 3 (limit: 23696)
   Memory: 10.8M
   CGroup: /system.slice/fail2ban.service
           ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start

Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service...
Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service.
Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready

Fail2Ban 구성

Fail2Ban 기본 구성 파일은 /etc/fail2ban/jail.conf에 있습니다. 기본 구성 파일의 복사본을 만드는 것이 좋습니다. 다음 명령으로 만들 수 있습니다.

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

기본적으로 Fail2Ban은 Iptables 방화벽을 사용합니다. firewalld 지원을 활성화하려면 다음 명령을 실행합니다.

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

그런 다음 Fail2Ban 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart fail2ban

Fail2Ban으로 SSH 보안

기본적으로 Fail2Ban은 원격 IP를 차단하도록 구성되어 있지 않습니다. 보호하려는 각 서비스에 대해 Fail2Ban 감옥 구성 파일을 구성해야 합니다.

SSH 서비스를 보호하려면 다음 명령을 사용하여 SSH용 감옥 구성 파일을 생성합니다.

nano /etc/fail2ban/jail.d/sshd.local

다음 줄을 추가합니다.

# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. 
[sshd]
enabled = true
bantime = 2h
maxretry = 3

완료되면 파일을 저장하고 닫은 다음 SSH 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart fail2ban

이제 다음 명령을 사용하여 감옥 구성을 확인할 수 있습니다.

fail2ban-client status

다음 출력에서 구성된 감옥을 얻을 수 있습니다.

Status
|- Number of jail:	1
`- Jail list:	sshd

금지된 IP에 대한 SSH 감옥을 확인하려면 다음 명령을 실행하십시오.

fail2ban-client status sshd

다음 출력에서 모든 금지된 IP 목록을 얻을 수 있습니다.

Status for the jail: sshd
|- Filter
|  |- Currently failed:	6
|  |- Total failed:	15
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	2
   |- Total banned:	2
   `- Banned IP list:	96.9.67.48 43.154.142.8

IP 주소를 수동으로 차단 해제하려면 다음 명령을 실행하십시오.

fail2ban-client unban remote-ip-address

결론

위 가이드에서는 Alma Linux 8에 Fail2Ban을 설치하는 방법에 대해 설명했습니다. Fail2Ban을 사용하여 SSH 서비스를 보호하는 방법도 설명했습니다. 이제 프로덕션 환경에서 Fail2Ban을 구현하여 무차별 대입 공격으로부터 시스템을 보호할 수 있습니다.