Blacklisting eines Servers, obwohl der ausgehende Mailverkehr via Maillog oder MailQ nichts vemuten lässt: Unterschied zwischen den Versionen
K (Standard verschob die Seite Blacklisting enes Servers, obwohl der ausgehende Mailverkehr via Maillog oder MailQ nichts vemuten lässt nach [[Blacklisting eines Servers, obwohl der ausgehende Mailverkehr via Maillog oder MailQ nichts vemuten lässt]…) |
Keine Bearbeitungszusammenfassung |
||
| Zeile 13: | Zeile 13: | ||
nahdem diese Regeln installiert sind bekommt man eine wunderbar große Log-Datei mit bspw. folgendem Inhalt | nahdem diese Regeln installiert sind bekommt man eine wunderbar große Log-Datei mit bspw. folgendem Inhalt | ||
:May 28 16:19:04 www44 kernel: [962487.665876] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30354 DF PROTO=TCP SPT=43862 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 UID=10089 GID=503 | :May 28 16:19:04 www44 kernel: [962487.665876] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30354 DF PROTO=TCP SPT=43862 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 '''UID=10089''' GID=503 | ||
:May 28 16:19:08 www44 kernel: [962491.675908] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=36351 DF PROTO=TCP SPT=46036 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 UID=10089 GID=503 | :May 28 16:19:08 www44 kernel: [962491.675908] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=36351 DF PROTO=TCP SPT=46036 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 '''UID=10089''' GID=503 | ||
Diese Datei führt zum Benutzer mit der ID 10089 und dessen Prozesse lassen sich dann anzeigen | Diese Datei führt zum Benutzer mit der ID 10089 und dessen Prozesse lassen sich dann anzeigen | ||
<code>ps aux | grep -E '^(10089|USER)'</code> | <code>ps aux | grep -E '^('''10089'''|USER)'</code> | ||
:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | :USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
:10089 2423 4.0 0.0 139580 6952 ? Ss May25 206:55 ramf | :10089 2423 4.0 0.0 139580 6952 ? Ss May25 206:55 ramf | ||
Version vom 7. Januar 2021, 17:49 Uhr
Es ist durchaus möglich, dass PHP-Code auch einen Mailserver simuliert und somit über die Hintertür der Server für ausgehenden mailtraffic missbraucht wird.
Zunächst mal muss also ein iptabels regelwerk errichtet werden, welches ausgehenden Traffic explizit erlaubt oder eben auch unterbindet und des Rest loggt. Dieses regelwerk könnte be einer Spam Problematik also so aussehen:
- iptables -A OUTPUT -m owner --gid-owner postfix -p tcp -m tcp --dport 25 -j ACCEPT
- iptables -A OUTPUT -m owner --uid-owner root -p tcp -m tcp --dport 25 -j ACCEPT
- iptables -A OUTPUT -p tcp -m multiport --dports 25 -m state --state NEW -j LOG --log-uid --log-prefix "LOCAL_DROPPED_SPAM "
- iptables -A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable
Damit dürfen nur postfix und root E-Mails versenden. Alle anderen werden werden geloggt. Sollten Kunden der Meinung sein, über ihre eigene Applikation Mails versenden zu wollen, müssen sie Port 587 benutzen.
nahdem diese Regeln installiert sind bekommt man eine wunderbar große Log-Datei mit bspw. folgendem Inhalt
- May 28 16:19:04 www44 kernel: [962487.665876] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30354 DF PROTO=TCP SPT=43862 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 UID=10089 GID=503
- May 28 16:19:08 www44 kernel: [962491.675908] LOCAL_DROPPED_SPAM IN= OUT=venet0 SRC=37.218.252.192 DST=41.216.186.158 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=36351 DF PROTO=TCP SPT=46036 DPT=25 WINDOW=42340 RES=0x00 SYN URGP=0 UID=10089 GID=503
Diese Datei führt zum Benutzer mit der ID 10089 und dessen Prozesse lassen sich dann anzeigen
ps aux | grep -E '^(10089|USER)'
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- 10089 2423 4.0 0.0 139580 6952 ? Ss May25 206:55 ramf
- 10089 2424 3.9 0.0 139736 7296 ? Ss May25 201:36 ramf
- 10089 2425 4.9 0.0 139396 6716 ? Ss May25 250:29 ramf
- 10089 18671 0.3 0.1 247708 19636 ? Ss 08:13 0:00 ramf
- 10089 27005 0.4 0.0 136672 5192 ? Ss 09:09 0:00 ramf
Mit der Prozess-ID kann man etwas anfangen (exemplarisch für die 18671)
lsof -np 18671
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- perl 18671 gkaterelos cwd DIR 182,219777 4096 2 /
- perl 18671 gkaterelos rtd DIR 182,219777 4096 2 /
- perl 18671 gkaterelos txt REG 182,219777 7184 527131 /usr/bin/perl
- perl 18671 gkaterelos mem REG 182,219777 21056 131378 /usr/lib64/perl5/auto/File/Glob/Glob.so
- perl 18671 gkaterelos mem REG 182,219777 120008 131414 /usr/lib64/perl5/auto/POSIX/POSIX.so
- perl 18671 gkaterelos mem REG 182,219777 17976 131375 /usr/lib64/perl5/auto/Fcntl/Fcntl.so
- perl 18671 gkaterelos mem REG 182,219777 25624 131595 /usr/lib64/perl5/auto/Socket/Socket.so
- perl 18671 gkaterelos mem REG 182,219777 19336 131395 /usr/lib64/perl5/auto/IO/IO.so
- perl 18671 gkaterelos mem REG 182,219777 99158720 535398 /usr/lib/locale/locale-archive-rpm
- perl 18671 gkaterelos mem REG 182,219777 10312 393225 /lib64/libfreebl3.so
- perl 18671 gkaterelos mem REG 182,219777 1924768 393235 /lib64/libc-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 143280 393259 /lib64/libpthread-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 15056 393267 /lib64/libutil-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 40872 393239 /lib64/libcrypt-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 596864 393243 /lib64/libm-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 20024 393241 /lib64/libdl-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 113904 393245 /lib64/libnsl-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 111440 393261 /lib64/libresolv-2.12.so
- perl 18671 gkaterelos mem REG 182,219777 1485896 131143 /usr/lib64/perl5/CORE/libperl.so
- perl 18671 gkaterelos mem REG 182,219777 159312 393228 /lib64/ld-2.12.so
- perl 18671 gkaterelos 0r CHR 1,3 0t0 704314 /dev/null
- perl 18671 gkaterelos 1w CHR 1,3 0t0 704314 /dev/null
- perl 18671 gkaterelos 2w CHR 1,3 0t0 704314 /dev/null
- perl 18671 gkaterelos 3r REG 182,219777 75439 64395 /tmp/d1 (deleted)
- perl 18671 gkaterelos 4u IPv4 920889604 0t0 TCP *:37002 (LISTEN)
Da wurde anscheinend /tmp/d1 (wahrscheinlich ein Perl-Script) gestartet und danach gelöscht. Das Script lauscht auf Port 37002 und nimmt darüber wahrscheinlich Befehle entgegen. Mit den Meldungen aus dem angehangen Logfile gehe ich davon aus, dass darüber dann direkt die Mails versendet werden. Es wird also nicht die lokale Mail-Funktion benutzt.
Wenn man direkt noch in /tmp nach den Dateien dieses Users schaut:
ls -la /tmp/ | awk '$3 == "gkaterelos"'
- -rw-r--r-- 1 gkaterelos psacln 5347980 May 27 22:28 js_composer1558988904.zip
- -rw------- 1 gkaterelos psacln 404763 May 24 13:16 php0Uxh1H
- -rw------- 1 gkaterelos psacln 408159 May 24 11:18 php3jvj5M
- -rw------- 1 gkaterelos psacln 404799 May 24 13:17 php4F0nx2
- -rw------- 1 gkaterelos psacln 404787 May 24 10:19 php74SYUL
- -rw------- 1 gkaterelos psacln 404839 May 24 13:15 phpb469E9
- -rw------- 1 gkaterelos psacln 404785 May 24 13:06 phpBiSjrs
- -rw------- 1 gkaterelos psacln 404777 May 24 10:28 phpCxmxxu
- -rw------- 1 gkaterelos psacln 404773 May 24 11:11 phpDcCK09
- -rw------- 1 gkaterelos psacln 408181 May 24 10:11 phph2oJpm
- -rw------- 1 gkaterelos psacln 404749 May 24 15:01 phpHFaNXP
- -rw------- 1 gkaterelos psacln 404809 May 24 10:35 phpHHsohO
- -rw------- 1 gkaterelos psacln 408179 May 24 10:40 phpHviK7L
- -rw------- 1 gkaterelos psacln 404803 May 24 10:40 phpkjpmtT
- -rw------- 1 gkaterelos psacln 404769 May 24 12:25 phpp1Gyhj
- -rw------- 1 gkaterelos psacln 404787 May 24 14:54 phpPd2wHn
- -rw------- 1 gkaterelos psacln 404787 May 24 12:16 phppHLEDq
- -rw------- 1 gkaterelos psacln 405051 May 26 01:14 phpPWi3MK
- -rw------- 1 gkaterelos psacln 408217 May 24 21:11 phpQxfBzl
- -rw------- 1 gkaterelos psacln 404795 May 24 13:06 phpRe2YGT
- -rw------- 1 gkaterelos psacln 408197 May 24 12:52 phpSQwQYx
- -rw------- 1 gkaterelos psacln 408155 May 24 10:11 phpTbGuMR
- -rw------- 1 gkaterelos psacln 408181 May 24 14:15 phpU9lkfi
- -rw------- 1 gkaterelos psacln 404811 May 24 10:29 phpuOF11H
- -rw------- 1 gkaterelos psacln 404795 May 24 10:18 phpvVEB1i
- -rw------- 1 gkaterelos psacln 404757 May 24 12:31 phpxCB065
- -rw------- 1 gkaterelos psacln 404787 May 24 14:43 phpxQJPpH
- -rw-r----- 1 gkaterelos psacln 4 May 23 15:16 [stealth].pid
Der User gkaterelos führt zu seinem Homeverzeichnis und damit auch zu dem Benutzer:
echo ~gkaterelos
- /var/www/vhosts/gkaterelos.www44.hostkraft.de
Dieser Kunde scheint also eine Lücke in seiner Applikation zu haben, über diese wurde das Perl-Script hochgeladen und gestartet. Das laufende Script habe ich nun hart beendet (kill -9).
Ein Delisting bei der CBL ist derzeit nicht möglich, da zuviele Delistings versucht wurden. Ich denke, dass die CBL die wichtige Blacklist ist.
Ein switchen der IP-Adresse ist mit Plesk tatsächlich garnicht so einfach. Ich habe hierfür eine iptables-Regel gesetzt nachdem dogado dem server eine zweite/neue IP zugewiesen hat:
- iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source 37.218.252.206
Alle Verbindungen zum Zielport 25 werden über die IP-Adresse 37.218.252.206 gesendet.