OS/Linux2017/03/17 14:22
CentOS6에서 SSH 접근 시도 차단하기

기본 구성인 SSH 데몬은 무차별 공격(Blueforce Attack)에 취약할 수 있습니다. 이를 방어하기 위하여 iptables를 이용한 opensource가 있습니다. 바로 fail2ban 이라는 Application입니다. 이 프로그램은 /var/log/secure 로그 파일을 읽어 로그인 시도 실패에 대한 횟수를 지정한 수로 읽어 iptables로 차단을 하게 됩니다. 기본적으로 제공되는 프로그램이 아니기 떄문에 epel 패키지에서 가져와야 합니다.

1. Fail2Ban 설치
# rpm -Uhh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install -y fail2ban --enablerepo=epel
Loaded plugins: auto-update-debuginfo, fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: ftp.daumkakao.com
* epel: mirror.premi.st
* epel-debuginfo: mirror.premi.st
* extras: ftp.daumkakao.com
* updates: ftp.daumkakao.com
Resolving Dependencies
--> Running transaction check
---> Package fail2ban.noarch 0:0.9.4-2.el6 will be updated
---> Package fail2ban.noarch 0:0.9.6-1.el6.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================
Package Arch Version Repository Size
==========================================================
Updating:
fail2ban noarch 0.9.6-1.el6.1 epel 468 k

Transaction Summary
==========================================================
Upgrade 1 Package(s)

Total download size: 468 k
Downloading Packages:

fail2ban-0.9.6-1.el6.1.noarch.rpm | 468 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : fail2ban-0.9.6-1.el6.1.noarch 1/2
Cleanup : fail2ban-0.9.4-2.el6.noarch 2/2
Verifying : fail2ban-0.9.6-1.el6.1.noarch 1/2
Verifying : fail2ban-0.9.4-2.el6.noarch 2/2

Updated:
fail2ban.noarch 0:0.9.6-1.el6.1
Complete!
2. 구성 파일 복사
기본 fail2ban 구성파일은 /etc/fail2ban/jail.conf로 되어있습니다. 기본으로 기동하게 되면 에러를 발생하게 합니다.
따라서, 적용할 수 있도록 다음과 같이 변경하셔야 합니다.
[root@www ~]# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
위와 같이 복사가 완료한 후 설정 파일을 열게 되면 보호할 수 있는 여러가지 방법이 존재합니다.
3. jail.local의 기본값 설정
[root@www ~]# vim /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 (and/or comma) separator.
# 제외할 아이피를 설정합니다.
ignoreip = 127.0.0.1/8
# "bantime"은 호스트에 접근을 제안하는 시간(초 단위)입니다.
bantime = 3600
# "findtime" 시간 동안 "maxretry"를 초과할 경우 대상이 되도록 합니다. (초 단위)
findtime = 600
# "maxretry"는 /var/log/secure내에 fail 횟수에 대한 제안 설정입니다
# 아래는 3회 이상일 경우 bantime동안 차단됩니다.
maxretry = 3
ignoreip줄에 개인서버 IP를 입력하시기 바랍니다. 또한, 각 주소는 공백으로 구분할 수 있습니다. 접근하시는 IP를 넣을 경우 이 서버에서 실수로 접근하는 분을 차단하지 않을 것입니다.
bantime은 호스트에 접근 제한 시간입니다. 기본 단위는 초이며, 해당 시간 이후 자동으로 해제 됩니다.
maxretry는 접근 실패시 몇번이후 차단할 수 있도록 하는 것이며, 횟수로 설정합니다. (기본 6회)
findtime은 호스트가 로그인 시도후 600초 이내에 maxretry값 이상 실패하면, 해당 IP를 bantime동안 차단합니다.
4. jail.local에 ssh-iptables 섹션 구성
ssh 세부 정보 섹션은 구성에서 아래 있습니다. 하지만 이 섹션에는 따로 세부정보를 설정할 수가 없습니다. 예를 들면, fail시 담당 email을 발송 할 수 있도록 하는 기능도 포함되어있습니다.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=jaehun@me.com]
logpath = /var/log/secure
maxretry = 5
enabled는 해당 섹션의 동작유무를 나타냅니다. 기동은 true 중지는 fail로 설정할 수 있습니다. 기본적으로 sshd 설정에 fail2banuses가 일치하는 구성 파일이 있습니다. /etc/fail2ban/filter.d/sshd.conf  내에 기본 설정이 되어있습니다.
Action은 fail2ban이 일치하는 IP주소를 차단하기 위해 행할 단계입니다. failter 항목과 마찬가지로 각 작업은 action.d 디렉토리 내에 파일을 참조합니다. 기본 금지 조치인 IPTABLES는 /etc/fail2ban/action.d/iptables.conf 내에 존재합니다. iptables 세부사항에서 fail2ban을 추가로 사용자 정의가 가능합니다. 예를 들어 비표준 포트를 사용하는 경우 대괄호 내에 포트 번호와 일치하도록 변경하여 다음과 같이 표시 할 수 있습니다.
ex: iptables [name = SSH, port = 30000, protocol = tcp]
fail2ban에서 모니터링하는 프로토콜은 tcp에서 udp까지 변경이 가능합니다. 해당 엑션이 동작되면 fail2ban이 이메일을 발송할 수 있습니다. 해당 명령인 sendmail-whois는 /etc/fail2ban/action.d/sendmail-whois.conf 에 기본 설정이 되어있으므로 참조하시기 바랍니다. logpath는 secure 파일의 위치를 나타냅니다.
5. fail2ban 기동하기
fail2ban의 설정값을 변경하면 항상 fail2ban을 재시작하여 주시기 바랍니다.
/etc/init.d/fail2ban restart 또는 service fail2ban restart
항상 root로 기동하셔야 합니다. 만일 fail2ban이 iptables내에 적용되어있는지를 확인하고 싶다면 아래와 같이 확인할 수 있습니다.
iptables -L
요즘들어 SSH로 접근시도하는 중국발 blueforce공격이 심해지고 있습니다. 어이없는 패스워드 설정으로 공격자에게 root를 주는 황당한 일을 당하지 맙시다~
2017/03/17 14:22 2017/03/17 14:22
Posted by JParker

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

Leave your greetings.

1 ... 3 4 5 6 7 8 9 10 11 ... 27