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
- 내 네트워크 카드에 속하지 않더라도 내 네트워크 카드로 들어오는 모든 패킷을 어떻게 캡처합니까?
귀하의 의견 다음에는 몇 가지 추가 정보가 있습니다.
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
다른 배포판의 경우 설치 무결성을 직접 확인하는 방법을 알아보세요.