Iptables-Fail2ban bind 불법 공격 처리
9-Apr-2013 13:49:33.418 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74)
09-Apr-2013 13:49:33.475 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.487 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.516 queries: info: client 70.39.93.72#49940: view other_user: query: isc.org IN ANY +ED (163.177.24.74) 09-Apr-2013 13:49:33.557 queries: info: client 185.12.119.16#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.588 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.657 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.663 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.758 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.802 queries: info: client 70.39.93.72#49940: view other_user: query: isc.org IN ANY +ED (163.177.24.74) 09-Apr-2013 13:49:33.824 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74) 09-Apr-2013 13:49:33.848 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY +ED (183.60.126.74)
처리 방법:
iptables 규칙 추가(connlimit 모듈 추가), 단일 IP 동시 요청 수 제한:
- -A INPUT -p tcp -m tcp --dport 53 --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j DROP
- -A INPUT -p udp -m udp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -m connlimit --connlimit-above 5 --connlimit-mask 32 -j DROP
- -A INPUT -p tcp -m tcp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -m connlimit --connlimit-above 5 --connlimit-mask 32 -j DROP
1. 우선bind 자체의 안전을 검사하고bind를 이용하여 acl을 추가하며 귀속 조회를 제한하고 블랙리스트를 추가한다.
- acl "mynetwork" {
- 183.61.81.0/25;
- 119.38.123.0/25;
- 180.60.116.0/25;
- 163.172.24.0/25;
- 127.0.0.1/32;
- };
- acl "blackhats" {
- 108.162.204.88;
- 184.168.72.113;
- 93.170.127.96;
- 72.46.155.84;
- 178.33.217.2;
- 72.46.132.122;
- 78.159.111.197;
- 192.96.200.41;
- };
전역 설정 변경:
allow-query { mynetwork; }; #여기에자신의네트워크를설치한다.zone에는any로 설정할 수 있다.
allow-recursion { mynetwork; }; #귀속 처리 #allow-query-cache {mynetwork;};# 쿼리 캐시 처리
version "hello babay"; #숨겨진 버전
edns-udp-size 1024; #udp 메시지 크기, 단위 바이트 설정
max-udp-size 4096; #최대udp 메시지 크기, 단위 바이트 설정
blackhole {blackhats;};#블랙리스트 설정
2. fail2ban 필터 로그를 이용하여 iptables를 호출하여 지정한 ip주소를 제한한다.
fail2ban 다운로드:https://github.com/fail2ban
또는http://sourceforge.net/projects/fail2ban/
저는 fail2ban-0.8.4를 사용해서 가방을 풀고...
python setup을 실행합니다.py 설치가 완료되었습니다.
/etc/fail2ban/jail.conf 관련 서비스 프로필 필터링
/etc/fail2ban/fail2ban.conf 주 프로필, sock 및 로그 파일 설정
/etc/fail2ban/filter.d/해당 서비스의 필터 규칙 파일 경로
/etc/fail2ban/action.d/해당 서비스에 대한 작업 구성 파일 경로
jail.conf 지정된 서비스 매개 변수를 추가합니다.
- [named-refused-udp]
- enabled = true
- filter = named-refused #
- action = iptables-multiport[name=Named, port=53, protocol=udp]
- sendmail-whois[name=Named, [email protected]]
- logpath = /opt/soft/bind/log/query.log #
- bantime = 3600 # , ,
- findtime = 100 #100 ,
- maxretry = 3 #
- ignoreip = 127.0.0.1
-
- [named-refused-tcp]
- enabled = true
- filter = named-refused
- action = iptables-multiport[name=Named, port=53, protocol=tcp]
- sendmail-whois[name=Named, [email protected]]
- logpath = /opt/soft/bind/log/query.log
- bantime = 360000
- findtime = 100
- maxretry = 3
- ignoreip = 127.0.0.1
필터 규칙 추가:named-refused.conf
- # Fail2Ban configuration file for named (bind9). Trying to generalize the
- # structure which is general to capture general patterns in log
- # lines to cover different configurations/distributions
- #
- # $Revision: 730 $
- #
-
- [Definition]
-
- #
- # Daemon name
- _daemon=named
-
- #
- # Shortcuts for easier comprehension of the failregex
- __pid_re=(?:\[\d+\])
- __daemon_re=\(?%(_daemon)s(?:\(\S+\))?\)?:?
- __daemon_combs_re=(?:%(__pid_re)s?:\s+%(__daemon_re)s|%(__daemon_re)s%(__pid_re)s?:)
- # hostname daemon_id spaces
- # this can be optional (for instance if we match named native log files)
- __line_prefix=(?:\s\S+ %(__daemon_combs_re)s\s+)?
-
- # Option: failregex
- # Notes.: regex to match the password failures messages in the logfile.
- # Values: TEXT
- #
- failregex = %(__line_prefix)sclient <HOST>#.+: query: (baidu.com|isc.org) IN ANY \+ED*
-
- # Option: ignoreregex
- # Notes.: regex to ignore. If this regex matches, the line is ignored.
- # Values: TEXT
- #
- ignoreregex =
실행 동작 파일 #egrep -v'^#|^$'/etc/fail2ban/action.d/iptables-multiport.conf
- [Definition]
- actionstart = iptables -N fail2ban-<name>
- iptables -A fail2ban-<name> -j RETURN
- iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
- actionstop = iptables -D INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
- iptables -F fail2ban-<name>
- iptables -X fail2ban-<name>
- actioncheck = iptables -n -L INPUT | grep -q fail2ban-<name>
- actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
- actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP
- [Init]
- name = default
- port = ssh
- protocol = tcp
fail2ban-client start 또는fail2ban-server 시작 서비스
효과를 봅시다. 이미 차단된 IP가 있습니다.
#fail2ban-client status named-ddos-tcp Status for the jail: named-ddos-tcp |- filter | |- File list:/opt/soft/bind/log/query.log | | - Currently failed: 5 |'- Total failed: 299'- action | - Currently banned: 5 |'- IP list: 107.20.206.69 94.75.243.137 61.147.112.29 178.32 61.147.112.32 (외국의 IP는 이미 차단)'- Total banned: 15
Chain OUTPUT(policy ACCEPT 163M packets, 203G bytes) Pkts bytes target prot opt opt in out source destination Iptables에 Chain fail2ban-Named(2 references)가 자동으로 추가되었습니다. pkts bytes target prot opt in out source destination 9 576 DROP all -- * * 174.142.207.122 0.0.0.0/0 241 15424 DROP all -- * * 61.147.120.25 0.0.0.0/0 27 1728 DROP all -- * * 61.147.112.32 0.0.0.0/0 115 7360 DROP all -- * * 178.32.244.170 0.0.0.0/0 119 7616 DROP all -- * * 61.147.112.29 0.0.0.0/0 51 3264 DROP all -- * * 94.75.243.137 0.0.0.0/0 2206 141K DROP all -- * * 107.20.206.69 0.0.0.0/0 12829 833K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
자료 주소:
http://ftp.isc.org/isc/bind9/cur/9.8/doc/arm/Bv9ARM.html
http://www.isc.org/software/bind/documentation
http://www.minihowto.eu/protectio-against-isc-org-any-attack-dns-attack-isc-org-any-query
http://www.bergercity.de/tag/bind/
http://sourceforge.net/projects/fail2ban/
http://www.fail2ban.org/wiki/index.php/HOWTO_fail2ban_0.7.x#Iptables_action_setup
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ecma Script 문법 (2)지난 번에는 es6문법에서 비교적 개념 이해가 쉬우며, 코드 사용법에 대한 변화정도에 대해서 설명했었다. 이번에는 개인적으로 내가 es6문법을 공부할 때 가장 이해하기 어려웠던(지금도 정확하게 이해가 잘 되지 않는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.