웹사이트 검색

SSHGUARD를 사용하여 SSH 무차별 대입 공격을 차단하는 방법


SSHGuard는 무차별 공격으로부터 호스트를 보호하는 오픈 소스 데몬입니다. Linux 방화벽 백엔드(iptables, FirewallD, pf ) 중 하나를 사용하여 시스템 로그 모니터링 및 집계, 공격 탐지, 공격자 차단을 통해 이를 수행합니다. 및 ipfw.

원래 OpenSSH 서비스에 대한 추가 보호 계층을 제공하도록 설계된 SSHGuardVsftpdPostfix와 같은 광범위한 서비스도 보호합니다. Syslog, Syslog-ng 및 원시 로그 파일을 포함한 여러 로그 형식을 인식합니다.

SSHGuardC로 작성되었다는 점만 제외하면 Fail2ban과 상당히 유사합니다(Fail2banPython으로 작성됨). 더 가볍고 더 적은 기능을 제공합니다.

이 가이드에서는 Linux 서버에서 SSH 무차별 대입 공격을 차단하기 위해 SSHGuard를 설치하고 구성하는 방법을 보여줍니다.

1단계: Linux에 SSHGuard 설치

Linux에 SSHGuard를 설치하는 것부터 시작합니다.

Debian/Ubuntu에 SSHGuard 설치

먼저 패키지 목록을 업데이트한 다음 apt 패키지 관리자를 사용하여 기본 저장소에서 SSHGuard를 설치합니다.

sudo apt update
sudo apt install sshguard

설치되면 SSHGuard 서비스가 자동으로 시작되며 다음 명령을 사용하여 이를 확인할 수 있습니다.

sudo systemctl status sshguard

RHEL 시스템에 SSHGuard 설치

CentOS, RockyAlmaLinux와 같은 RHEL 기반 배포판의 경우 EPEL 저장소를 다음과 같이 설치하여 시작하세요. 아래 명령에 제공됩니다.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo dnf install epel-release

EPEL이 있으면 dnf 패키지 관리자를 사용하여 SSHGuard를 설치하세요.

sudo dnf install sshguard 

설치가 완료되면 SSHGuard를 시작하고 시스템 시작 또는 재부팅 시 시작되도록 설정하세요.

sudo systemctl start sshguard
sudo systemctl enable sshguard

SSHGuard가 예상대로 실행되고 있는지 확인하세요.

sudo systemctl status sshguard

2단계: Linux에서 SSHGuard 구성

SSHGuard/var/log/auth.log, /var/log/secure 시스템 저널 및 syslog-ng를 적극적으로 모니터링합니다. 실패한 로그인 시도에 대한 로그 파일입니다.

로그인 시도가 실패할 때마다 원격 호스트는 기본적으로 120초로 설정된 제한된 시간 동안 금지됩니다. 그 이후에는 로그인 시도가 연속적으로 실패할 때마다 차단 시간이 1.5배씩 늘어납니다.

위반 호스트가 금지된 시간과 다른 매개변수는 sshguard.conf 파일에 지정됩니다. 표시된 대로 vim 편집기를 사용하여 구성 파일에 액세스할 수 있습니다.

sudo vim /etc/sshguard/sshguard.conf

RHEL 기반 배포판에서 구성 파일은 다음 경로에 있습니다.

sudo vim /etc/sshguard.conf

다음은 Ubuntu/Debian에서 볼 때 구성 파일의 샘플입니다.

주요 옵션에 중점을 두겠습니다.

  • BACKEND 지시어는 백엔드 실행 파일의 전체 경로를 가리킵니다. 이 예에서는 IPtables가 기본 방화벽 백엔드로 설정되어 있음을 알 수 있습니다.
  • THRESHOLD 지시문은 공격 점수가 지정된 값을 초과하는 경우 공격자를 차단합니다.
  • BLOCK_TIME 옵션은 로그인 시도가 연속적으로 실패할 때마다 공격자가 차단되는 시간(초)입니다. 기본적으로 첫 번째 시도 이후에는 120으로 설정됩니다. 이는 연속적으로 로그인 시도가 실패할 때마다 증가합니다.
  • DETECTION_TIME 옵션은 점수가 재설정되기 전에 공격자가 시스템에 등록되거나 기억되는 시간(초)을 나타냅니다.
  • WHITELIST_file 옵션은 블랙리스트에 추가되어서는 안 되는 호스트가 포함된 화이트리스트 파일의 전체 경로를 가리킵니다./li>

3단계: SSH 무차별 대입 공격을 차단하도록 SSHGuard 구성

무차별 공격 공격을 막으려면 sshguard와 작동하도록 다음 방화벽을 구성해야 합니다.

UFW를 사용하여 SSH 공격 차단

Ubuntu/Debian 시스템에 UFW를 설치하고 활성화한 경우 /etc/ufw/before.rules 파일을 수정하세요.

sudo vim etc/ufw/before.rules

all on loopback 섹션 바로 뒤에 다음 줄을 추가합니다.

allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

파일을 저장하고 UFW를 다시 시작하세요.

sudo systemctl restart ufw

이제 잘못된 자격 증명을 사용하여 다른 시스템에서 서버에 로그인을 시도하면 첫 번째 로그인 시도 실패 후 120초 동안 잠긴다는 것을 알 수 있습니다.

auth.log 로그 파일을 확인하여 이를 확인할 수 있습니다.

sudo tail -f  /var/log/auth.log

다음에 로그 시도가 실패하면 차단 시간은 240초, 480초, 960초 등으로 늘어납니다.

Firewalld를 사용하여 SSH 공격 차단

Firewalld를 실행 중인 경우 방화벽이 설정되어 활성화되어 있는지 확인하세요. 그런 다음 다음 명령을 실행하여 원하는 영역에서 sshguard를 활성화하세요.

sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

변경 사항을 적용하려면 Firewalldsshguard를 다시 로드하세요.

sudo firewall-cmd --reload
sudo systemctl restart sshguard

그런 다음 다음과 같이 규칙을 확인합니다.

sudo firewall-cmd —-info-ipset=sshguard4

Iptables를 사용하여 SSH 공격 차단

아직 Iptables를 사용하고 있다면 먼저 Iptables에서 sshguard에 대한 새로운 체인 규칙을 만들어 악의적인 사용자를 차단하세요.

iptables -N sshguard

다음으로 INPUT 체인을 업데이트하여 sshguard로 트래픽을 전달하고 악의적인 당사자의 모든 트래픽을 차단합니다.

iptables -A INPUT -j sshguard

SSH, POP, IMAP 등의 특정 포트를 남용자로부터 차단하려면 다음 명령을 실행하세요.

iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

마지막으로 변경 사항이 적용되도록 규칙을 저장합니다.

iptables-save > /etc/iptables/iptables.rules

4단계: SSH 차단 호스트를 화이트리스트에 추가하는 방법

차단된 호스트를 화이트리스트에 추가하려면 다음 위치에 있는 화이트리스트 파일에 해당 호스트 이름이나 IP 주소를 지정하면 됩니다.

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

그런 다음 변경 사항을 적용하려면 sshguard 데몬과 방화벽 백엔드를 다시 시작해야 합니다.

이 가이드에서는 Linux 서버에서 SSHGuard 데몬을 사용하여 SSH Bruteforce 공격을 차단하는 방법을 시연했습니다. 귀하의 의견을 환영합니다.