[질문] 비정상적(?)으로 과도한 DNS 질의

lattente의 이미지

Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=41981 DF PROTO=UDP SPT=59450 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=71 TOS=0x00 PREC=0x00 TTL=64 ID=41981 DF PROTO=UDP SPT=59451 DPT=53 LEN=51
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=41981 DF PROTO=UDP SPT=59452 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=41981 DF PROTO=UDP SPT=59453 DPT=53 LEN=53
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=41981 DF PROTO=UDP SPT=59454 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=41982 DF PROTO=UDP SPT=59456 DPT=53 LEN=53
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=41982 DF PROTO=UDP SPT=59455 DPT=53 LEN=53
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=41982 DF PROTO9693 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59691 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59692 DPT=53 LEN=53
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59693 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59694 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59697 DPT=53 LEN=54
Dec 15 17:44:50 www kernel: IN= OUT=eth1 SRC=서버아이피 DST=DNS아이피 LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=42005 DF PROTO=UDP SPT=59696 DPT=53 LEN=53

iptables 의 udp 53 차단 로그입니다.
------------------------------------------------------------------------------------------------------------------------------------------------

00:41:35.267319 IP (tos 0x0, ttl 64, id 2271, offset 0, flags [DF], proto: UDP (17), length: 72) 서버도메인.52977 > DNS서버.domain: [bad udp cksum 497a!] 63820+ PTR? 1.105.224.211.in-addr.arpa. (44)
00:41:35.268130 IP (tos 0x0, ttl 64, id 2271, offset 0, flags [DF], proto: UDP (17), length: 73) 서버도메인.52978 > DNS서버.domain: [bad udp cksum 8c26!] 55383+ PTR? 역DNSIP.in-addr.arpa. (45)
00:41:35.268353 IP (tos 0x0, ttl 64, id 2272, offset 0, flags [DF], proto: UDP (17), length: 72) 서버도메인.52979 > DNS서버.domain: [bad udp cksum b779!] 63820+ PTR? 역DNSIP.in-addr.arpa. (44)
00:41:35.268686 IP (tos 0x0, ttl 64, id 2272, offset 0, flags [DF], proto: UDP (17), length: 73) 서버도메인.52980 > DNS서버.domain: [bad udp cksum e29d!] 689+ PTR? 역DNSIP.in-addr.arpa. (45)
00:41:35.273351 IP (tos 0x0, ttl 64, id 2273, offset 0, flags [DF], proto: UDP (17), length: 71) 서버도메인.52980 > DNS서버.domain: [bad udp cksum c8f7!] 13137+ PTR? 역DNSIP.in-addr.arpa. (43)
00:41:35.274794 IP (tos 0x0, ttl 64, id 2273, offset 0, flags [DF], proto: UDP (17), length: 72) 서버도메인.52981 > DNS서버.domain: [bad udp cksum def8!] 6152+ PTR? 역DNSIP.in-addr.arpa. (44)
00:41:35.274837 IP (tos 0x0, ttl 64, id 2273, offset 0, flags [DF], proto: UDP (17), length: 73) 서버도메인.52982 > DNS서버.domain: [bad udp cksum 30b0!] 8138+ PTR? 역DNSIP.in-addr.arpa. (45)
00:41:35.275099 IP (tos 0x0, ttl 64, id 2273, offset 0, flags [DF], proto: UDP (17), length: 73) 서버도메인.52984 > DNS서버.domain: [bad udp cksum 9db7!] 16200+ PTR? 역DNSIP.in-addr.arpa. (45)
00:41:35.275209 IP (tos 0x0, ttl 64, id 2273, offset 0, flags [DF], proto: UDP (17), length: 72) 서버도메인.52985 > DNS서버.domain: [bad udp cksum e3e9!] 9216+ PTR? 역DNSIP.in-addr.arpa. (44)

tcpdump의 dst 53번포트의 로그입니다.

------------------------------------------------------------------------------------------------------------------------------------------------

tcpdump의 역dns 조회값을 보면 한 IP에서 몇십개씩 남기긴해도 그게 계속된다거나 그렇지는 않습니다. 한두개만 그런것도 아니구요. 그렇지만 전체적으로는

저 로그 시간대를 보시면 아시겠지만 미친듯이 뿌려댑니다

기본적으로 iptables 에서 dport 53을 통째로 막아버리면 괜찮으나 그럼 몇가지 서비스가 불가능하고... 그냥 마냥 열어놓으면 IDC측에서 같은 네트웍의 서버까지 다죽어버린다고 할정도로 UDP 53으로 뿌려대더군요 -_-;

제가 무지하여 그런지 모르지만 정상적인 DNS질의로 보이고 문제점을 못찾겠어서...

udp 0 0 서버아이피:53694 DNS 아이피:53 ESTABLISHED 28466/httpd
udp 1904 0 서버아이피:53863 DNS 아이피:53 ESTABLISHED -
udp 1904 0 서버아이피:53865 DNS 아이피:53 ESTABLISHED -
udp 1904 0 서버아이피:53866 DNS 아이피:53 ESTABLISHED -
udp 0 0 서버아이피:53867 DNS 아이피:53 ESTABLISHED -
udp 0 0 서버아이피:53868 DNS 아이피:53 ESTABLISHED -
udp 0 0 서버아이피:53869 DNS 아이피:53 ESTABLISHED -

--------------------------------------------------------------------------------------------------------------------------------------------
netstat -naup 결과입니다. 실제 사용하는 udp 제외한 내역입니다. 원래 무지막지하게 열려있을때도 있는데 -_-; 일부만 추렸습니다.
저런식으로 httpd 프로세스가 DNS 질의를 무지막지하게 요청할 일이 있을까요 -_-;
지금 웹서비스 부분에서 외부DNS로 질의가 필요한 부분은 PV가 일일 10000도 안나오는데...

iptables string으로 필터링을 하여 필요한 부분의 서비스만 해보려고도 해봤는데
이게 로드할땐 암 에러 없는데 대신 차단도 안되더군요 -_-;

iptables는 1.3.5버젼입니다. OS는 Fedora 코어 6 이구요. 배포상태 커널 2.6.18 입니다.
string 패치 하지 않아도 포함되어있는걸로 아는데 그게 아니였던걸까요.

무튼 그래서 이러지도 저러지도 못하고 서비스는 엉망이고 한 상태입니다.
iptables의 string 필터링으로 차단한다고 할지라도 그게 근본적인 해결책일까 싶기도 하구요.

무엇보다 웹서비스 내용은 바뀐것이 없는데 저렇게 난리를 친다는게 일단 공격의 의심이 가구요.

2대의 똑같은 서비스를 하는 웹서버중 한대만 저럽니다 -_-; 차이라면 저러고 있지 않은 나머지 서버는 서비스만 돌아가고 실데이터는 저쪽 서버에서 nfs로 끌어온다는것뿐입니다.

없는 실력으로 인터넷을 다 뒤져가며 해본다고 해보고 있습니다만 역부족이라 조언 구합니다.

무지한 관리자가 서버를 혹사시키고 있습니다. 삽질할 준비는 되어있으니 정답까지는 바라지도 않고 가이드만이라도 제시해주시면 열심히 삽질해보겠습니다.

모두 추운날씨 건강하시고 모쪼록 조언 부탁드립니다.

감사합니다.

블루스크린의 이미지

웹 서버에서 역 DNS 참조를 켜 놓아서 그런것 아닌가요?
http://network.hanb.co.kr/view.php?bi_id=771
----------------------------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요

-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.

lattente의 이미지

lookup은 off되어있는 상태입니다. ^^; 그리고 깜빡하고 서명을 못봤군요 -_-;; 댓글 삭제 어떻게 하나요 ㅠㅠ

블루스크린의 이미지

nscd 등을 이용해서 dns 캐쉬 하면 트래픽은 줄것 같은데요
먼저 트래픽을 줄여 놓고 근본적인 dns 쿼리 원인을 찾아보세요.
그리고 php프로그램내에에서도 역 DNS를 발생시킬수 있으니 찾아보세요.

----------------------------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요

-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.

bushi의 이미지

gethostbyaddr() 을 LD_PRELOAD 등으로 무력화시키면 ... 손 번쩍들고 나오는 웹 서비스들이 있을 것 같은데요 ?

OTL

lattente의 이미지

말씀해주신대로 진행해봐야겠군요ㅎㅎ 과연 손을 번쩍 들어줄것인가
조언 감사합니다.

lattente의 이미지

정상 질의라면 확실히 효과를 보겠군요 일단 말씀하신대로 진행하면서 떨구는식으로 확인해봐야겠습니다. ^^ 답글감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.