웹사이트 검색

Ubuntu 12.04에서 fail2ban으로 SSH를 보호하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

Fail2Ban 소개

서버는 고립되어 존재하지 않으며 가장 기본적인 SSH 구성만 있는 가상 사설 서버는 무차별 암호 대입 공격에 취약할 수 있습니다. fail2ban은 악의적인 행동으로부터 가상 서버를 자동으로 보호하는 방법을 제공합니다. 이 프로그램은 로그 파일을 스캔하고 반복적인 로그인 시도 실패와 같은 문제가 되는 작업에 반응하여 작동합니다.

1단계 - Fail2Ban 설치

apt-get을 사용하여 Fail2Ban 설치

sudo apt-get install fail2ban

2단계 - 구성 파일 복사

기본 fail2ban 구성 파일은 /etc/fail2ban/jail.conf에 있습니다. 그러나 해당 파일에서 구성 작업을 수행해서는 안 되며 대신 로컬 복사본을 만들어야 합니다.

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

파일이 복사된 후 새 jail.local 파일 내에서 모든 변경을 수행할 수 있습니다. 보호가 필요할 수 있는 많은 가능한 서비스가 이미 파일에 있습니다. 각각은 자체 섹션에 있으며 구성되고 꺼집니다.

3단계 - Jail.Local에서 기본값 구성

새 fail2ban 구성 파일을 엽니다.

sudo nano /etc/fail2ban/jail.local

기본값의 첫 번째 섹션은 fail2ban이 따르는 기본 규칙을 다룹니다. 가상 서버에 보다 미묘한 보호를 설정하려는 경우 각 섹션의 세부 정보를 사용자 지정할 수 있습니다.

아래에서 기본 섹션을 볼 수 있습니다.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = auto

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

개인 IP 주소를 ignoreip 행에 작성하십시오. 각 주소는 공백으로 구분할 수 있습니다. IgnoreIP를 사용하면 특정 IP 주소를 화이트리스트에 추가하고 잠기지 않도록 할 수 있습니다. 귀하의 주소를 포함하면 실수로 자신의 서버에서 자신을 차단하지 않도록 보장할 수 있습니다.

다음 단계는 bantime을 결정하는 것입니다. 즉, 호스트가 규칙을 위반한 것으로 밝혀지면 VPS에서 호스트가 차단되는 시간(초)입니다. 이것은 금지된 봇의 경우에 특히 유용합니다. 일단 금지되면 단순히 다음 대상으로 이동합니다. 기본값은 10분으로 설정되어 있으며 원하는 경우 이 시간을 1시간(또는 그 이상)으로 늘릴 수 있습니다.

최대 재시도는 금지 시간 동안 금지되기 전에 호스트가 가질 수 있는 잘못된 로그인 시도 횟수입니다.

백엔드를 자동으로 둘 수 있습니다.

Destemail은 경고가 전송되는 이메일입니다. 드롭릿에 메일 서버가 설정되어 있으면 Fail2Ban이 IP 주소를 금지할 때 이메일을 보낼 수 있습니다.

추가 세부 정보 - 작업

작업 섹션은 기본값 아래에 있습니다. 시작은 다음과 같습니다.

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

# Default protocol
protocol = tcp
[...]

Banaction은 fail2ban이 일치하는 IP 주소를 금지하기 위해 취하는 단계를 설명합니다. config if가 있는 파일 확장자의 짧은 버전입니다. 기본 차단 조치인 \iptables-multiport\는 /etc/fail2ban/action.d/iptables-multiport.conf에서 찾을 수 있습니다.

MTA는 fail2ban이 악성 IP에 주의를 환기시키기 위해 이메일을 보내는 데 사용하는 이메일 프로그램을 말합니다.

fail2ban이 모니터링할 프로토콜에 따라 이 줄에서도 프로토콜을 TCP에서 UDP로 변경할 수 있습니다.

4단계(선택 사항) - Jail.Local에서 ssh-iptables 섹션 구성

SSH 세부 정보 섹션은 구성에서 조금 더 아래에 있으며 이미 설정되어 켜져 있습니다. 이 섹션 내에서 변경할 필요는 없지만 아래에서 각 줄에 대한 세부 정보를 찾을 수 있습니다.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

사용은 단순히 SSH 보호가 켜져 있다는 사실을 나타냅니다. "false"라는 단어를 사용하여 끌 수 있습니다.

포트는 fail2ban이 모니터링하는 포트를 지정합니다. 비표준 포트에 가상 사설 서버를 설정한 경우 사용 중인 포트와 일치하도록 포트를 변경합니다.

 eg. port=30000

기본적으로 sshd로 설정된 필터는 fail2ban이 일치 항목을 찾는 데 사용하는 규칙이 포함된 구성 파일을 참조합니다. sshd는 /etc/fail2ban/filter.d/sshd.conf를 참조합니다.

로그 경로는 fail2ban이 추적할 로그 위치를 나타냅니다.

SSH 섹션 내의 max retry 행은 기본 옵션과 동일한 정의를 가집니다. 그러나 여러 서비스를 활성화하고 각 서비스에 대해 특정 값을 사용하려는 경우 여기에서 SSH에 대한 새로운 최대 재시도 횟수를 설정할 수 있습니다.

5단계 - Fail2Ban 다시 시작

fail2ban 구성을 변경한 후에는 항상 Fail2Ban을 다시 시작해야 합니다.

sudo service fail2ban restart

fail2ban이 IP 테이블 내에서 적용하는 규칙을 볼 수 있습니다.

sudo iptables -L