Linux

udp 53 무작의 질의

CHOMAN 2019. 10. 24. 17:22

cat /var/log/messgaes

Oct 24 17:16:52 ip-172-31-35-71 named[23893]: client @0x7fb1580c6370 101.xx.xx.159#40860 (PEACECORPS.GOV): query (cache) 'PEACECORPS.GOV/ANY/IN' denied

정상적인 질의로는 보이지 않음 (PEACECORPS.GOV) 는 관련없는 도메인임

기본적으로 /etc/named.conf 에 리커즌은 노로 무조건

/etc/named.conf

recursion no;

logging {
        channel default_debug {
                file "/var/log/queries";
                severity dynamic;
        };

불법 접근 아이피 수집

/root/depend.sh

#!/bin/bash
#PATTERN="PEACECORPS.GOV"
PATTERN="denied"
cnt=1

while (( "${cnt}" < 29 )); do
DROPIP=`tail -n 1 /var/log/queries | grep $PATTERN | awk '{print $3}' | sed "s/#.*$//g"`
DROPIP1=`ipset -L DROP_IP | grep $DROPIP`
if [ ! -z "$DROPIP" -a "$DROPIP" != " " ] && [ "$DROPIP1" != "$DROPIP" ]; then
/sbin/ipset -A DROP_IP $DROPIP
fi
(( cnt = "${cnt}" + 1 ))
sleep 2
done

다시 수정 (스크립트)

#!/bin/bash
PATTERN="denied"
cnt=1

while (( "${cnt}" < 29 )); do
DROPIP=`tail -n 1 /var/log/queries | grep $PATTERN | awk '{print $3}' | sed "s/#.*$//g"`
ipset -A DROP_IP $DROPIP -quiet
(( cnt = "${cnt}" + 1 ))
sleep 2
done

crontab

* * * * * root sh /root/depend.sh

logrotate 설정

/etc/logrotate.d/named (아래 내용 추가)

/var/log/queries {
  compress
  create 0644 named named
  daily
  dateext
  missingok
  notifempty
  rotate 30
  sharedscripts
  postrotate
  /usr/sbin/rndc reconfig > /dev/null 2>/dev/null || true
  endscript
}

ipset 설정은 아래 링크 참고

https://kensei.co.kr/980

ipset 개수가 65535개인가 여튼 제한이 있는걸로 알고 있는데 수시로 확인해서 초기화 해주자

ipset 초기화

ipset -F DROP_IP

일단 DNS 는 정상적인 질의가 아니므로 refuse 처리하지만 패킷은 계속 발송되는 상황
named.conf 에서 정상적인 질의가 아닌 경우 응답하지 않는 옵션이 없다면
방화벽에서 차단해야지만 불필요한 아웃바운드 트래픽이 발생하지 않으며 named 의 부하도 떨어짐