웹마스터 팁
장비 침입 탐지 및 자동 ip 차단 프로그램 소개
2014.04.09 01:22
안녕하세요. 고구마군 입니다.
인터넷으로 사업을 하시다 보면 비정상적인 인터넷 접속 등으로 운영중인 서비스에 지장을 초래 하는 일이 빈번하여
조그만 도움이라도 드리고자 글 올립니다.
사용 환경 : Fedora / Centos LINUX
제약 사항 : root 권한이 있어 프로그램 설치가 가능하여 함.
vi 유틸리티를 사용 할줄 알아야 함.
패키지 명 : fail2ban
설치 방법 : yum 유틸리티를 이용한 패키지 설치
[설치 방법]
1. fail2ban 유틸리티가 설치 되어 있는지 확인
[root@woorimail ~]# yum list installed | grep fail2ban
[root@woorimail ~]#
2. fail2ban 유틸리티의 존재 유무 확인
[root@woorimail ~]# yum list | grep fail2ban
fail2ban.noarch 0.8.11-2.el6 @epel
3. fail2ban 설치
[root@woorimail ~]# yum install fail2ban.noarch
...
...
(생략)
4. fiail2ban 설정
[root@woorimail /]# cd /etc/fail2ban
[[root@woorimail fail2ban]# ls
action.d fail2ban.conf filter.d jail.conf
[root@woorimail fail2ban]# vi fail2ban.conf
5. 로그 위치 변경 ( vi 유틸리티를 이용한 편집 )
(before) logtarget = SYSLOG
( after ) logtarget = /var/log/fail2ban.log
변경 후 저장 및 종료
6. 가장 중요한 프로그램 별 설정
[root@woorimail fail2ban]# vi jail.conf
7. 감시 주기 / 시도 횟수 및 ban 시간 설정 ( vi 유틸리티를 이용한 편집 )
ex) 1분 동안 5번의 접속 시도를 하여 정상적인 로그인이 되지 않은 경우 24시간 동안 접속 불가 상태로 만듬
jail.conf 파일 내부 [DEFAULT] 섹션 수정
findtime = 60 : 1분 = 60초
maxretry = 3 : 5회 시도
bantime = 86400 : 60초 * 60분 * 24 시간 = 86400 초
위 예제를 참고 하여 본인의 취향에 맞게 기본 동작 설정.
8. 프로그램 별 설정 ( vi 유틸리티를 이용한 편집 )
ex ) ssh로 불법적인 root 권한 취득 방지 설정
jail.conf 파일 내부 [ssh-iptables] 섹션 수정
[ssh-iptables]
enabled = true ( false 에서 true 로 변경 )
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com, sendername="Fail2Ban"]
logpath = /var/log/secure
maxretry = 5
dest=root 를 변경 하여 본인이 메일 받기 원하는 곳의 E-mail로 변경 ( 해당 장비가 외부 Email 발송이 가능 해야 함 )
위와 같이 사용하고자 하는 프로그램 별로 enabled = true 로 변경 하여 사용 하시면 됩니다.
[fail2ban 유틸리티의 실행]
1. 위 과정에서 기본적인 설정 후 fail2ban 유틸리티 실행
[root@woorimail fail2ban]# service fail2ban start
fail2ban ?? 以: WARNING 'ignoreregex' not defined in 'Definition'. Using default one: ''
[ OK ]
[root@woorimail fail2ban]#
2. 리눅스 장비 재기동 시 자동 실행을 위한 설정
[root@woorimail fail2ban]# chkconfig --level 2345 fail2ban on
[root@woorimail fail2ban]# chkconfig --list | grep fail2ban
fail2ban 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@woorimail fail2ban]#
fail2ban 패키지를 사용하면 따로 모니터링 하고 있지 않아도 불법적인 접속 시도를 자동으로 모니터링 하여
주어진 조건 1분간 5번의 불법적 접속( 예 : ssh 접속 실패 )를 감지 하여 자동으로 해당 ip 블럭
이후 주어진 시간( 위 예제의 경우 86400초 = 1일 ) 경과 후 자동 ip 블럭 해제가 이루어 집니다.
iptables / route 명령을 사용하기 위해서는 운용 중인 서비스의 이상이 이미 발생 하고 나서 후 조취를 취하는 것인데
위의 fail2ban 패키지 사용 시 조건 설정 만으로도 자동 모니터링이 이루어 지게 됩니다.
또한 운용 중인 서버에서 외부 메일 발송이 가능하면 메일로 ip 블럭 / 해제 에 대한 리포팅 메일을 보내 주기 때문에
현재 서버의 상태를 이메일을 통해 보고 받을 수 있습니다.
소 잃고 외양간 고치기 보다는 외양간 출입구에 경보기를 달아 자동으로 침입탐지 및 접근 금지를 하시는 것이 더 좋을 것이라 판단 됩니다.
저도 최근에 사용 하고 있어 속속들이 알고 있지는 못하지만 아는 부분에 대해서는 알려 드리도록 하겠습니다.
그럼 설치 성공 하시길 빕니다. ^^
댓글 4
-
HolyJohn
2014.04.09 23:22
-
고구마군
2014.04.11 11:39
도움되신 분이 있다니 다행이네요 ^^;
좋은 하루 되세요
-
HolyJohn
2014.04.11 20:04
이 방법이 확실히 효과가 있긴 한데 제 사이트를 접속하는 로봇 아이피가 자꾸 변칙적이더군요...
나라를 추적해보니 루마니아에서 다 오길래 아예 루마니아 자체를 막으니 이제 사이트가 잠잠해졌습니다 ^^;;
-
고구마군
2014.04.12 08:22
ㅎㅎㅎ 제가 이야기 드린 방법이 최선은 아니겠습니다만 저도 국가별로도 막아버리고 있기는 합니다.
그 외에 개별적인 부분들에 대해서는 fail2ban 이 편리해서 권해 드렸습니다. ^^
효과가 있다고 하시니 저도 기분 좋네요.
오늘도 즐거운 하루 되시길 빕니다. ^^
고구마군님, 좋은 팁 진심으로 감사드립니다.
덕분에 많은 공부와 도움이 되었습니다.