웹사이트 검색

CentOS 6에서 fail2ban으로 SSH를 보호하는 방법


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

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

이유:

대신 참조:

다음 DigitalOcean 튜토리얼은 CentOS 7 서버에서 fail2ban으로 SSH 서비스 데몬을 보호하는 방법을 설명하므로 즉시 관심을 가질 수 있습니다.

  • CentOS 7에서 Fail2Ban으로 SSH를 보호하는 방법

Fail2Ban 소개

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

1단계 - Fail2Ban 설치

fail2ban은 CentOS에서 사용할 수 없기 때문에 EPEL 저장소를 다운로드하여 시작해야 합니다.

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

fail2ban을 설치하여 후속 조치를 취하십시오.

yum install fail2ban

2단계 - 구성 파일 복사

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

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

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

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

새 fail2ban 구성 파일을 엽니다.

vi /etc/fail2ban/jail.local

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

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

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

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

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

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

찾기 시간은 호스트가 로그인해야 하는 시간을 나타냅니다. 기본 설정은 10분입니다. 즉, 호스트가 지정된 10분 동안 최대 재시도 횟수를 초과하여 로그인을 시도하고 실패하면 차단됩니다.

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

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

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

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

기본적으로 sshd로 설정된 필터는 fail2ban이 일치 항목을 찾기 위해 사용하는 규칙이 포함된 구성 파일을 참조합니다. 이름은 파일 확장자의 단축 버전입니다. 예를 들어 sshd는 /etc/fail2ban/filter.d/sshd.conf를 참조합니다.

조치는 fail2ban이 일치하는 IP 주소를 차단하기 위해 수행하는 단계를 설명합니다. 필터 항목과 마찬가지로 각 작업은 action.d 디렉터리 내의 파일을 참조합니다. 기본 차단 조치인 \iptables\는 /etc/fail2ban/action.d/iptables.conf 에서 찾을 수 있습니다.

"iptables" 세부 정보에서 fail2ban을 추가로 사용자 지정할 수 있습니다. 예를 들어, 비표준 포트를 사용하는 경우 대괄호 안의 포트 번호를 일치하도록 변경하여 라인을 다음과 같이 만들 수 있습니다.

 eg. iptables[name=SSH, port=30000, protocol=tcp]

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

가상 사설 서버에 메일 서버를 설정한 경우 Fail2Ban은 IP 주소를 금지할 때 이메일을 보낼 수 있습니다. 기본적으로 sendmail-whois는 /etc/fail2ban/action.d/sendmail-whois.conf에 있는 작업을 참조합니다.

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

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

5단계 - Fail2Ban 다시 시작

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

sudo service fail2ban restart

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

iptables -L