Tcpdump wird ausgeführt durch:
/usr/sbin/tcpdump -U -n -i eth0 icmp or tcp dst port 22 or tcp dst port
Wenn ich die erfassten Daten überprüfe, wird Folgendes angezeigt:
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
Das Seltsame ist, dass all diese Adressen weder SCR noch DST meine IP-Adresse sind! Bedeutet das, dass jemand meinen Host als „Relay“ verwendet, um die SSH-Adressen anderer anzugreifen?
Ich möchte hier das Lineal und das Protokoll von iptables als Referenz veröffentlichen:
-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
Das Protokoll zeigte unten, dass meine IP (194.156.xxx.xxx) anscheinend andere angreift …
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
Antwort1
Tcpdump hört alle Pakete ab, die über Ihre Netzwerkschnittstelle gehen. Ein Ethernet-Switch reicht ausseine besteum nur Pakete weiterzuleiten, die an Ihren MAC adressiert sind. Ein Hub ohne Switch wird es nicht einmal versuchen, er wird Ihnen alles anzeigen.
Sie erhalten daher alle Pakete in Ihrem LAN. Normalerweise würden wir keine Pakete von einer so vielfältigen Gruppe von IP-Adressen erwarten. Beim Nachschlagen Ihrer IP-Adresse stellen wir jedoch fest, dass Sie sich in einem Rechenzentrum befinden, das Petersburg Internet Network Ltd. gehört. Leiten sie den Internetverkehr weiter? Könnte dieser Verkehr an Ihrem Computer vorbeigehen?
Suchen Sie sich bitte einen sichereren Ort für Ihr Training.
Antwort2
Tcpdump versetzt Ihre Netzwerkschnittstelle in den „Promiscuous“-Modus. Wenn Sie einen Hub im Netzwerk haben, sendet dieser alle Pakete an alle Schnittstellen. Eine Schnittstelle überprüft dann die MAC-Nummer und prüft, ob das Paket für diese Schnittstelle bestimmt ist. Wenn dies der Fall ist, leitet sie es an die empfangende Software weiter. Wenn nicht, verwirft sie das Paket.
Im Promiscuous-Modus kann die Schnittstelle jedoch alle Pakete empfangen. Um sie beispielsweise mit tcpdump anzuzeigen.
Wenn Sie einen Switch statt eines Hubs haben, sollte der Switch die Pakete filtern und Ihnen nur die senden, die wirklich für Sie bestimmt sind. Bei Multicast-Verkehr ist das Szenario komplizierter und ich werde es hier nicht näher erläutern.
Netzwerkgeräte leiten den Verkehr nicht nach IP-Nummern, sondern nach MAC-Nummern weiter.
Weitere Informationen finden Sie hier
- https://en.wikipedia.org/wiki/Address_Resolution_Protocol
- https://www.informit.com/articles/article.aspx?p=130895&seqNum=5
- Wie erfasse ich alle eingehenden Pakete an die Netzwerkkarte, auch wenn diese Pakete nicht mir gehören?
Nach Ihrem Kommentar finden Sie hier einige zusätzliche Informationen:
Sie fragen sich, welche Protokolle iptables erstellt? Eine Sache ist, dass Sie nur Protokolle einer hergestellten Verbindung anzeigen. Wenn die Verbindung hergestellt wurde, sollte es auch Protokolle darüber geben. Das bedeutet, dass diese Verbindungen bereits hergestellt und funktionsfähig sind. Versuchen Sie mit dem Dienstprogramm herauszufinden, welche Prozesse diese Verbindungen verwenden lsof
. Wenn Sie den Prozessnamen haben, sollten Sie feststellen können, ob die Verbindung zulässig ist oder nicht.
Wenn Sie den Verdacht haben, dass Ihr Computer kompromittiert sein könnte, empfehle ich Ihnen, einige Prüfungen durchzuführen. Prüfen Sie, ob Sie etwas installiert haben, das Sie nicht kennen. Bei RedHat/CentOS/Fedora/Oracle Linux, die RPM/YUM-Pakete verwenden, können Sie dies ganz einfach mit wenigen Befehlen prüfen:
rpm -qa
listet alle installierten Pakete auf. Prüfen Sie, ob verdächtige dabei sind.rpm -Va
zeigt alle Dateien an, die sich nach der Installation der Pakete geändert haben. Sehen Sie, welche Dateien sich geändert haben.- Sie können auch die Quelle des Pakets überprüfen, obwohl die Informationen möglicherweise gefälscht sind.https://serverfault.com/questions/62026/how-to-know-from-which-yum-repository-a-package-has-been-installed
Finden Sie bei anderen Distributionen selbst heraus, wie Sie die Installationsintegrität überprüfen.