다음에서 실행되는 Tcpdump:
/usr/sbin/tcpdump -U -n -i eth0 icmp or tcp dst port 22 or tcp dst port
캡처된 데이터를 검토하면 다음과 같이 표시됩니다.
132.132.211.221.40372 > 89.31.125.17.ssh: Flags [S], cksum 0xde63 (correct), seq 524121044, win 29200, length 0
146.136.44.207.4855 > 45.66.134.253.ssh: Flags [S], cksum 0x86a2 (correct), seq 1106964113, win 29200, length 0
46.228.217.79.64595 > 81.90.190.31.ssh: Flags [S], cksum 0xdf11 (correct), seq 4132328538, win 29200, length 0
109.89.72.226.19846 > 89.31.126.248.ssh: Flags [S], cksum 0xf42c (correct), seq 2627129631, win 29200, length 0
186.102.253.234.58270 > 45.146.123.96.ssh: Flags [S], cksum 0xc8a3 (correct), seq 3373229862, win 29200, length 0
139.204.89.135.64050 > 81.90.190.31.ssh: Flags [S], cksum 0x9afe (correct), seq 3997943153, win 29200, length 0
146.17.189.108.mbl-battd > 45.66.134.42.ssh: Flags [S], cksum 0xbf0e (correct), seq 1369840100, win 29200, length 0
그런데 이상한 점은 이 주소가 모두 SCR도 DST도 내 IP 주소가 아니라는 점입니다! 누군가 내 호스트를 "릴레이"로 사용하여 다른 사람의 SSH를 공격하고 있다는 의미입니까?
iptables의 눈금자를 게시하고 참조용으로 여기에 기록하겠습니다.
-P FORWARD DROP
-A FORWARD -p tcp -m tcp --dport 22 -j LOG --log-prefix "[forward_ssh] "
-A OUTPUT -p tcp -m tcp --dport 22 -m state --state NEW -j LOG --log-uid --log-prefix "[out_ssh_new] "
-A OUTPUT -p tcp -m tcp --dport 22 -m state --state ESTABLISHED -j LOG --log-uid --log-prefix "[out_ssh_est] "
-A OUTPUT -p tcp -m tcp --dport 22 -j DROP
아래 로그를 보면 내 IP(194.156.xxx.xxx)가 다른 사람을 공격하고 있는 것 같습니다....
Mar 15 08:56:35 oneserver kernel: [out_ssh_est] IN= OUT=eth0 SRC=194.156.xxx.xxx DST=2.59.135.116 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=443 DPT=22 WINDOW=64240 RES=0x00 ACK SYN URGP=0
Mar 15 09:21:02 oneserver kernel: [out_ssh_est] IN= OUT=eth0 SRC=194.156.xxx.xxx DST=162.248.88.193 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=443 DPT=22 WINDOW=64240 RES=0x00 ACK SYN URGP=0
Mar 15 10:52:45 oneserver kernel: [out_ssh_est] IN= OUT=eth0 SRC=194.156.xxx.xxx DST=172.106.16.136 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=443 DPT=22 WINDOW=64240 RES=0x00 ACK SYN URGP=0
답변1
Tcpdump는 네트워크 인터페이스를 통과하는 모든 패킷을 수신합니다. 이더넷 스위치가 할 것입니다최고야MAC으로 주소가 지정된 패킷만 전달합니다. 비 스위칭 허브는 이벤트 시도를 하지 않으며 모든 것을 보여줍니다.
따라서 LAN의 모든 패킷을 받게 됩니다. 일반적으로 우리는 이렇게 다양한 IP 주소 집합에서 패킷을 기대하지 않습니다. 그러나 귀하의 IP 주소를 검색한 결과 귀하는 Petersburg Internet Network Ltd.에 속한 데이터 센터에 있다는 것을 알게 되었습니다. 인터넷 트래픽을 라우팅합니까? 이 트래픽이 귀하의 컴퓨터를 지나갈 수 있습니까?
훈련을 하기에 더 안전한 장소를 찾으세요.
답변2
Tcpdump는 네트워크 인터페이스를 "무차별" 모드로 전환합니다. 네트워크에 허브가 있으면 모든 패킷을 모든 인터페이스로 보냅니다. 그런 다음 인터페이스는 MAC 번호를 확인하고 패킷이 해당 인터페이스에 대한 것인지 확인합니다. 그렇다면 이를 수신 소프트웨어로 전달합니다. 그렇지 않은 경우 패킷을 삭제합니다.
그러나 무차별 모드에서는 인터페이스가 모든 패킷을 수신할 수 있습니다. 예를 들어 tcpdump를 사용하여 표시합니다.
허브 대신 스위치가 있는 경우 스위치는 패킷을 필터링하고 실제로 사용자에게 맞는 패킷만 보내야 합니다. 멀티캐스트 트래픽의 경우 시나리오는 더 복잡하므로 여기서는 설명하지 않겠습니다.
네트워크 장비는 IP 번호가 아닌 MAC 번호에 따라 트래픽을 라우팅합니다.
자세한 내용은 여기를 참조하세요.
- https://en.wikipedia.org/wiki/Address_Resolution_Protocol
- https://www.informit.com/articles/article.aspx?p=130895&seqNum=5
- 해당 패킷이 나에게 속하지 않은 경우에도 NIC로 들어오는 모든 패킷을 캡처하는 방법
여기에 의견을 남기면 몇 가지 추가 정보가 있습니다.
iptables가 생성하는 로그가 무엇인지 궁금합니다. 한 가지 점은 설정된 연결의 로그만 표시한다는 것입니다. 연결이 설정되면 이에 대한 로그도 있어야 합니다. 이는 이 연결이 이미 설정되어 작동 중임을 의미합니다. 유틸리티를 사용하여 어떤 프로세스가 이러한 연결을 사용하는지 알아보세요 lsof
. 프로세스 이름이 있으면 연결이 합법적인지 여부를 식별할 수 있어야 합니다.
귀하의 컴퓨터가 손상된 것으로 의심된다면 몇 가지 확인 사항을 제안해 드립니다. 인식하지 못하는 것이 설치되어 있는지 확인하세요. RPM/YUM 패키지를 사용하는 RedHat/CentOS/Fedora/Oracle Linux의 경우 몇 가지 명령으로 쉽게 확인할 수 있습니다.
rpm -qa
설치된 모든 패키지가 나열됩니다. 의심스러운 부분이 있는지 살펴보세요.rpm -Va
패키지가 설치된 후 변경된 모든 파일을 표시합니다. 어떤 파일이 변경되었는지 확인하세요.- 정보가 가짜일 수도 있지만 패키지의 출처를 확인할 수도 있습니다.https://serverfault.com/questions/62026/how-to-know-from-which-yum-repository-a-package-has-been-installed
다른 배포판의 경우 설치 무결성을 확인하는 방법을 직접 찾아보세요.