[Fail2ban] SSH brute force attack 방어 정책 설정

서버를 사용하다 보면 brute force attack에 매우 취약할 수 있습니다.

무차별 대입 공격으로 인해 운영자의 계정이 탈취되면 불법적인 일에도 사용될 수 있기 때문에 사전에 방어대책을 강구하여야 합니다.

오늘은 WordPress 서버에 fail2ban ssh 필터링 정책을 사용하여 brute force attack 필터링 정책을 적용하도록 하겠습니다.


Fail2ban이란 무엇인가?

Fail2ban은 리눅스 시스템에서 무단 접근 보안 위협을 감지하고 차단하는 오픈 소스 소프트웨어입니다.

brute force attack과 같은 반복적이고 의심스러운 로그인 시도를 모니터링하여 발생하는 공격을 대응할 수 있도록 해줍니다.

Fail2ban은 로그 파일을 지속적으로 모니터링하며 정의된 규칙에 따라 예상치 못한 시도가 감지되면 가상 방화벽(IPTABLES) 정책을 변경하여 해당 IP 주소를 일정 시간 동안 차단합니다.

이렇게 함으로써 리소스를 낭비하는 공격으로부터 시스템을 보호할 수 있습니다.

세부 설정을 통해 Fail2ban은 다양한 서비스와 애플리케이션에 적용될 수 있습니다.

(SSH, FTP, SMTP, Apache, Nginx) 등의 서비스에 대한 보안 수준을 높일 수 있으며, 시스템 관리자가 시스템과 네트워크를 보다 강력하게 보호할 수 있게 도와주는 유용한 도구입니다.


# 설치과정은 간단하며 OS에 계열에 맞게 install

$ sudo apt-get install fail2ban

# 작업간 서비스는 STOP 상태로 유지

$ sudo systemctl stop fail2ban
$ sudo systemctl status fail2ban
fail2ban 서비스 중지 및 상태확인



# 기본 설정 파일(jail.conf)을 복사한 후 jail.local 파일로 생성 (업데이트 시 로컬 설정의 유지를 위해)

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


# jail.local 파일을 편집

$ sudo nano /etc/fail2ban/jail.local

[sshd]

enabled  = true ## 도구를 활성화여부를 설정합니다. `true`로 설정하면 활성화됩니다.

port     = ssh ## SSH 포트 번호를 입력합니다(변경이 없으면 22번 포트로 설정되어 있음).

action   = iptables[name=SSH, port=ssh, protocol=tcp] ## 차단 작업을 정의합니다 (iptables를 사용하여 SSH를 차단하도록 설정함).

logpath  = /var/log/auth.log ## SSH 시도 기록이 저장되는 파일 경로입니다. 대부분의 경우 /var/log/auth.log로 설정됩니다. (리눅스 계열별로 상이함)

maxretry = 3 ## 허용되는 최대 시도 횟수를 설정합니다. 3으로 설정하면, 3번 이상 시도하면 차단됩니다.

bantime  = 600 ## 차단 시간을 초 단위로 설정합니다. 600으로 설정하면, 차단된 IP는 10분 동안 차단됩니다.

fail2ban sshd 설정문구


# 설정을 저장한 후 Fail2ban 서비스를 재시작합니다.

$ sudo systemctl stop fail2ban
$ sudo systemctl status fail2ban

$ sudo fail2ban-client status sshd
Fail2ban sshd 상태확인

이렇게 설정이 완료 되었습니다.

By Low ahn

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다