리눅스 auditctl로 dns 쿼리 pid 확인
회사 리눅스 서버에서 /etc/resolv.conf 설정상 Cache DNS의 L4 VIP로 쿼리가 날아가야 정상인데, Cache DNS 로그상 Real IP로 쿼리가 들어오는 경우가 일부 보였다. 해당 서버를 찾아가봤지만 resolv.conf는 정상 설정 상태였고 도무지 어떤 데몬이 DNS 쿼리를 Real IP로 날리는지 알 수 없었다.
구글링으로 여러가지 방법을 찾아본 결과 auditd를 활용하는게 제일 편했다.
1. audit rule 추가
auditctl -a always,exit -F arch=b64 -S connect,sendto,sendmsg,socket -k udp_connections
2. 테스트
아래와 같이 내 블로그의 주소를 구글 DNS에 쿼리해 보았다.
dig @8.8.8.8 www.snoopybox.co.kr
3. 검색
ausearch에 -i 옵션을 줘야 주소가 16진수가 아닌 정상 표시된다. grep -A1은 찾은 주소 다음 줄에 실제 필요한 auid, pid 등의 정보가 출력되기 때문에 After 1 줄을 더 보겠다는 뜻이다.
ausearch -i | grep -A1 8.8.8.8
4. 결과
아래와 같이 내가 원했던 pid와 auid 등을 찾을 수 있었다.
type=PROCTITLE msg=audit(04/08/2019 17:12:28.891:102) : proctitle=dig @8.8.8.8 www.snoopybox.co.kr type=SYSCALL msg=audit(04/08/2019 17:12:28.891:102) : arch=x86_64 syscall=socket success=yes exit=6 a0=inet a1=SOCK_DGRAM a2=udp a3=0x0 items=0 ppid=12528 pid=12580 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=3 comm=dig exe=/usr/bin/dig key=udp_connections
5. 삭제
전체 rule을 삭제하려면 auditctl -D 하면 된다. 하지만 다른 rule을 건드리지 않고 삭제하고픈 특정 rule만 삭제하려면 auditctl -d로 삭제해야 하는데, -a로 rule을 추가했던 값 그대로 -d를 입력하면 되지만 기억을 못할 수 있으니 -l로 먼저 조회를 해보자.
[root@CentOS7 ~]# auditctl -l -a always,exit -F arch=b64 -S socket,connect,sendto,sendmsg -F key=udp_connections
조회된 rule에서 삭제하고 싶은 라인을 -a 대신 -d로 변경하면 삭제 가능하다.
[root@CentOS7 ~]# auditctl -d always,exit -F arch=b64 -S socket,connect,sendto,sendmsg -F key=udp_connections [root@CentOS7 ~]# auditctl -l No rules
'리눅스' 카테고리의 다른 글
BlueStacks 4 vdi 파일 용량 축소 (1) | 2019.07.16 |
---|---|
BlueStacks 4 Disk 용량 증설 (0) | 2019.07.09 |
리눅스 특정 라인 이하 삭제 (0) | 2019.05.21 |
Docker Hub 이미지 tag list 확인 방법 (0) | 2019.05.01 |
리눅스 swap 스왑 파일 추가하기 (0) | 2019.03.03 |
리눅스 라우팅 테이블로 IP 차단하기 (0) | 2019.03.01 |
CentOS6 samba 윈도우10 공유 폴더 접근 (0) | 2018.11.27 |
CentOS7 GRUB2 single mode 부팅 root 패스워드 초기화 (0) | 2018.10.11 |
최근에 달린 댓글 최근에 달린 댓글