각 연결에서 발생하는 역방향 DNS PTR 조회

다니엘 F

저는 Debian 기반 VPS (Linux vps 2.6.32-042stab092.3 # 1 SMP Sun Jul 20 13:27:24 MSK 2014 x86_64 GNU / Linux)를 실행 중입니다. 새 연결이 설정 될 때마다 PTR 조회를 수행합니다.

원격 컴퓨터의 Python 스크립트가 VPS의 페이지를 지속적으로 가져 오는 포트 80에서 몇 가지 성능 테스트를 실행하고 있습니다. 모든 페이지 요청에 대해 새로운 PTR 조회가 이루어지며 수천 개의 활성 DNS 요청으로 끝납니다.

나는 이것을 tcpdump -n port not 22 and host not MY_REMOTE_IP. 따라서 -n조회를 방지하는 것입니다.

나는 또한으로 모니터링하고 ntop있는데 -n도 사용됩니다.

멈춰서 ntop보면 tcpdump룩업이 나온다. 중지 tcpdump하고 시작 ntop하면 나도 가져옵니다. 따라서 그들 중 어느 것도 조회를 일으키지 않는다고 가정하는 것이 공정 할 수 있습니다.

또한 xinetd분명히 PTR 조회를 사용하는 백그라운드에서 실행 중입니다. 그러나 해당 서비스를 중지해도 조회는 계속 발생합니다.

그리고 /usr/sbin/rsyslogd -c5살해 당해도 상황을 바꾸지 않는.

동일은 간다 rabbitmq-server와 erlangs epmd. authbind또한 책임이없는 것처럼 보이며 일반적으로 서버로 실행되는을 screen중지 openvpn해도 아무런 차이가 없습니다.

지구상의 Wuaht가 이것을 일으킬 수 있습니까?

다음은 프로세스 트리입니다.

init
`- SCREEN -AmdS py-http authbind python server.py ---scr:py-http
|  `- python server.py ---scr:py-http
`- /sbin/getty 38400 tty2
`- /sbin/getty 38400 console
`- /bin/sh /usr/sbin/rabbitmq-server
|  `- /usr/lib/erlang/erts-5.9.1/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /us
t start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_o
|     `- inet_gethost 4
|     |  `- inet_gethost 4
`- /usr/lib/erlang/erts-5.9.1/bin/epmd -daemon
`- /usr/sbin/ntop -d -L -u ntop -P /var/lib/ntop --access-log-file /var/log/ntop/access.log -i venet0:0 -p /etc/ntop/protocol.list -O /var/log/ntop
`- /usr/bin/mongod --config /etc/mongod.conf
`- /usr/sbin/cron
`- /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
`- /usr/sbin/sshd
|  `- sshd: user [priv]
|     `- sshd: user@pts/0
|        `- -bash
|           `- htop
`- sendmail: MTA: accepting connections
`- /usr/sbin/openvpn --writepid /var/run/openvpn.server.pid --daemon ovpn-server --cd /etc/openvpn --config /etc/openvpn/server.conf
`- /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
|  `- /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
`- /usr/sbin/rsyslogd -c5
`- upstart-socket-bridge --daemon
`- /sbin/udevd --daemon
|  `- /sbin/udevd --daemon
|  `- /sbin/udevd --daemon
`- upstart-udev-bridge --daemon

최신 정보

이 조회는 모든 새로운 연결에서 발생합니다. 포트 80이나 22, 어떤 포트 든 상관 없습니다.

하나의 HTTP 요청에 대한 Strace의 결과

sendto(10, "C~\1\0\0\1\0\0\0\0\0\0\0016\00270\003168\003192\7in-add"..., 43, MSG_NOSIGNAL, NULL, 0) = 43
print statement in server.py -> request #5 from client 192.168.70.6
sendto(10, "\23\372\1\0\0\1\0\0\0\0\0\0\0016\00270\003168\003192\7in-add"..., 43, MSG_NOSIGNAL, NULL, 0) = 43
sendto(9, "HTTP/1.1 200 OK\r\nDate: Fri, 24 O"..., 146, 0, NULL, 0) = 146

VPS에 설치할 수 없으므로 Sysdig를 사용할 수 없습니다.

iptables 로깅 결과 다음 항목이 생성됩니다. 새 ssh 연결의 경우 :

Oct 24 06:06:11 vps kernel: [6547020.638594] DNS Traffic match:IN= OUT=venet0 SRC=VPS_IP_ADDRESS DST=8.8.8.8 LEN=99 TOS=0x00 PREC=0x00 TTL=64 ID=56490 DF PROTO=UDP SPT=50366 DPT=53 LEN=79 UID=0 GID=0

새 http 연결의 경우 :

Oct 24 06:06:53 vps kernel: [6547062.417763] DNS Traffic match:IN= OUT=venet0 SRC=VPS_IP_ADDRESS DST=8.8.8.8 LEN=71 TOS=0x00 PREC=0x00 TTL=64 ID=32702 DF PROTO=UDP SPT=59091 DPT=53 LEN=51 UID=1000 GID=1000

ss 결과

ESTAB      0      0            VPS_IP_ADDRESS:42414         8888:53     users:(("python",2375,10))
스티븐 D

먼저, 공유 한 프로세스 트리에서 ntop을 호출하면 -n플래그 가없는 것 같습니다 .

/usr/sbin/ntop -d -L -u ntop -P /var/lib/ntop --access-log-file /var/log/ntop/access.log -i venet0:0 -p /etc/ntop/protocol.list -O /var/log/ntop

그러나 나는 ntop이 죽어도 계속되는 쿼리에 대한 귀하의 진술을 고려할 때 문제가 아니라고 가정합니다. 또한 명확히하기 위해 조회를 수행하는 머신이 포트 80에서 요청을 처리하는 동일한 머신이라고 가정합니다.

다음은 몇 가지 디버깅 아이디어입니다.

ss

문제의 프로그램이 한동안 소켓을 유지하는 경우 ss, -p플래그 와 함께 (또는 netstat)를 사용 하여 tcpdump에서 볼 소스 포트의 소유자를 찾을 수 있습니다.

Strace

첫 번째 용의자는 요청을 처리하는 애플리케이션이어야합니다. 화면에서 실행되는 다음 파이썬 프로세스가 테스트중인 응용 프로그램이라고 가정하고 있습니다.

 `- SCREEN -AmdS py-http authbind python server.py ---scr:py-http
|  `- python server.py ---scr:py-http

이 프로세스를 strace에서 실행하고 DNS 트래픽을 생성하는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.

strace -e trace=sendmsg,sendto -f YOUR_PROGRAM_HERE

그런 다음 포트 53으로 전송 된 것처럼 보이는 메시지의 출력을주의 깊게 살펴 봅니다.

[pid  3367] sendmsg(20, {msg_name(16)={sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.254")}, msg_iov(1)=[{"\31\322\1\0\0\1\0\0\0\0\0\0\0014\0014\0018\0018\7in-addr\4arp"..., 38}], msg_controllen=0, msg_flags=0}, 0) = 38

루프에서 ss

문제의 프로그램이 소켓을 빠르게 닫는다면 ss 또는 netstat에서 정보를 얻기 어려울 수 있습니다.

그러나 한 가지 가능성은 ss명령을 반복적으로 폴링하는 스크립트를 작성하는 것입니다 . 당신은 조회 중 하나를 잡을만큼 운이 좋다고 베팅 할 것입니다.

while true; do ss -p -n -u | tail -n +2; done

ss 명령에 필터를 추가하여 해당 시스템에 다른 UDP 트래픽이 많이 표시되는 경우 범위를 좁힐 수 있습니다. 이것이 작동하는지 여부는 당신이 운이 좋다는 것에 달려 있습니다.

Sysdig

비교적 새로운 sysdig유틸리티를 사용하여 모든 sendmsg 또는 sendto 시스템 호출을 볼 수 있습니다.

sudo sysdig evt.type=sendmsg or evt.type=sendto | grep ':53'

출력에는 프로세스 이름 (이 경우 nslookup)이 있습니다.

47852 01:15:33.454946732 4 nslookup (3349) > sendmsg fd=20(<4>) size=38 tuple=0.0.0.0:49847->192.168.1.254:53

iptables

iptables를 사용하면 패킷을 생성 한 프로세스의 사용자 ID를 기록 할 수 있습니다. 대부분의 서비스가 동일한 사용자로 실행되는 경우 이는별로 도움이되지 않지만 서비스 별 사용자가있는 경우에는 그럴 수 있습니다. 다음과 같은 일련의 iptable 규칙 :

iptables -N LOGGING
iptables -A OUTPUT -p udp --dport 53 -j LOGGING
iptables -A LOGGING -j LOG --log-prefix="DNS Traffic match:" --log-uid

관련된 UID와 함께 모든 아웃 바운드 DNS 트래픽을 기록합니다. 로깅 설정에 따라 kmesg를 통해 또는 syslog 메시지가 이동하는 모든 위치에서 찾을 수 있으며 출력은 다음과 같습니다.

Oct 24 01:09:53 localhost.localdomain kernel: DNS Traffic match:IN= OUT=enp0s3 SRC=10.0.2.15 DST=192.168.1.254 LEN=66 TOS=0x00 PREC=0x00 TTL=64 ID=35264 PROTO=UDP SPT=51767 DPT=53 LEN=46 UID=1000 GID=1000

이 출력에서 ​​문제의 프로세스의 UID가 1000이라는 것을 알 수 있으며, 이는 적어도 검색 범위를 좁 힙니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

IP 주소 당 PDO 연결로 역방향 DNS 조회를 방지하는 방법은 무엇입니까?

분류에서Dev

값 목록에서 역방향 DNS 조회-Python

분류에서Dev

역방향 DNS 조회는 LAN에서 네트워크 작업을 느리게합니다.

분류에서Dev

역방향 DNS 조회는 LAN에서 네트워크 작업을 느리게합니다.

분류에서Dev

DNS 역방향 조회는 localhost에서만 올바른 것으로 표시됩니다.

분류에서Dev

역방향 DNS 조회는 다른 도메인 이름을 반환합니다.

분류에서Dev

Python을 사용하여 역방향 DNS 조회에서 올바른 호스트 이름을 얻는 방법은 무엇입니까?

분류에서Dev

IP 주소에서 도메인 이름으로 역방향 DNS 조회를 수행하려면 어떻게합니까?

분류에서Dev

파이썬에서 역방향 DNS 조회가 잘못된 호스트를 반환 함

분류에서Dev

DNS 정방향 및 역방향 조회는 터미널에서 작동하지만 vCSA 6.7 사이트는 웹 브라우저에서로드되지 않습니다.

분류에서Dev

Bash : 활성 IP 주소의 역방향 DNS 조회

분류에서Dev

쉘 스크립트 역방향 DNS 조회

분류에서Dev

장치 방향 변경 후 조각에서 IllegalStateException 발생

분류에서Dev

조각 Android에서 도구 모음 작업을 연결 해제하는 방법

분류에서Dev

Windows 10에서 폴더 접합에 대해 "역방향 조회"를 수행하는 방법이 있습니까?

분류에서Dev

Django에서 인수로 역방향 URL 조회를 사용하는 방법은 무엇입니까?

분류에서Dev

LibXML2 : 노드에서 XPath 표현식을 역방향 조회하는 방법

분류에서Dev

Python에서 Regex를 사용하는 역방향 DNS 스크립트

분류에서Dev

Postfix 역방향 DNS 조회 : 450 4.7.1 클라이언트 호스트 거부

분류에서Dev

DNSpython에는 전달 된 값에 따라 정방향 또는 역방향 조회를 자동으로 수행하는 메서드가 있습니까?

분류에서Dev

DNS 도메인으로 SIP 서버에 연결하는 방법

분류에서Dev

조각을 Navigationview에 연결하는 방법

분류에서Dev

Django 템플릿에서 역방향 조회 필터링

분류에서Dev

ManyToManyField에서 OneToOneField의 Django 역방향 조회

분류에서Dev

Python Django에서 외래 키 역방향 조회

분류에서Dev

Ubuntu 16.10에서 로컬 DNS 조회를 구성하는 방법은 무엇입니까?

분류에서Dev

모뎀에 직접 연결하는 경우 DNS 조회는 어떻게 수행됩니까?

분류에서Dev

화면 워크 플로에서 "활동에 연결되지 않은 조각"을 방지하는 방법

분류에서Dev

지역화 된 문자열을 역방향 조회하는 방법

Related 관련 기사

  1. 1

    IP 주소 당 PDO 연결로 역방향 DNS 조회를 방지하는 방법은 무엇입니까?

  2. 2

    값 목록에서 역방향 DNS 조회-Python

  3. 3

    역방향 DNS 조회는 LAN에서 네트워크 작업을 느리게합니다.

  4. 4

    역방향 DNS 조회는 LAN에서 네트워크 작업을 느리게합니다.

  5. 5

    DNS 역방향 조회는 localhost에서만 올바른 것으로 표시됩니다.

  6. 6

    역방향 DNS 조회는 다른 도메인 이름을 반환합니다.

  7. 7

    Python을 사용하여 역방향 DNS 조회에서 올바른 호스트 이름을 얻는 방법은 무엇입니까?

  8. 8

    IP 주소에서 도메인 이름으로 역방향 DNS 조회를 수행하려면 어떻게합니까?

  9. 9

    파이썬에서 역방향 DNS 조회가 잘못된 호스트를 반환 함

  10. 10

    DNS 정방향 및 역방향 조회는 터미널에서 작동하지만 vCSA 6.7 사이트는 웹 브라우저에서로드되지 않습니다.

  11. 11

    Bash : 활성 IP 주소의 역방향 DNS 조회

  12. 12

    쉘 스크립트 역방향 DNS 조회

  13. 13

    장치 방향 변경 후 조각에서 IllegalStateException 발생

  14. 14

    조각 Android에서 도구 모음 작업을 연결 해제하는 방법

  15. 15

    Windows 10에서 폴더 접합에 대해 "역방향 조회"를 수행하는 방법이 있습니까?

  16. 16

    Django에서 인수로 역방향 URL 조회를 사용하는 방법은 무엇입니까?

  17. 17

    LibXML2 : 노드에서 XPath 표현식을 역방향 조회하는 방법

  18. 18

    Python에서 Regex를 사용하는 역방향 DNS 스크립트

  19. 19

    Postfix 역방향 DNS 조회 : 450 4.7.1 클라이언트 호스트 거부

  20. 20

    DNSpython에는 전달 된 값에 따라 정방향 또는 역방향 조회를 자동으로 수행하는 메서드가 있습니까?

  21. 21

    DNS 도메인으로 SIP 서버에 연결하는 방법

  22. 22

    조각을 Navigationview에 연결하는 방법

  23. 23

    Django 템플릿에서 역방향 조회 필터링

  24. 24

    ManyToManyField에서 OneToOneField의 Django 역방향 조회

  25. 25

    Python Django에서 외래 키 역방향 조회

  26. 26

    Ubuntu 16.10에서 로컬 DNS 조회를 구성하는 방법은 무엇입니까?

  27. 27

    모뎀에 직접 연결하는 경우 DNS 조회는 어떻게 수행됩니까?

  28. 28

    화면 워크 플로에서 "활동에 연결되지 않은 조각"을 방지하는 방법

  29. 29

    지역화 된 문자열을 역방향 조회하는 방법

뜨겁다태그

보관