Lemat, strona prywatna

Przeciwdziałanie wirusom w sieci LAN

Stronę dedykuję tym, którzy ostanimi czasy dostają komunikat podczas wysyłania poczty np. z konta na wp.pl:
Odpowiedź serwera: 550 [IP:x.x.x.x] Twoj adres IP znajduje sie na publicznej czarnej liscie CBL - zobacz strone http://cbl.abuseat.org/lookup.cgi?ip=x.x.x.x oraz http://profil.wp.pl/polityka_antyspamowa.html / your IP address is blacklisted - see http://cbl.abuseat.org/lookup.cgi?ip=x.x.x.x and http://profil.wp.pl/bulk_email_policy.html

Według tych instrukcji należy odwirusować własne sieci i zabezpieczyć je. Stanowczo odradzam zawracanie gitary maintainerom listy CBL, bo i tak nic nie wskóracie

Te wszystkie fajne nowoczesne wirusy mają własne silniki do rozsyłania się, rozsyłania spamu, skanowania portów innych kompów oraz inne ciekawe rzeczy np. DDOSowanie.

Jest to to bardzo trudne aby utrzymać wszystkie komputery w sieci LAN czyste (pomijając fakt, że niektóre wirusy trzeba rozpakować z zipa podając hasło - a to już musi zrobić blondynka).

Ale jest pewien sposób: dzięki regułkom iptables można znacznie ograniczyć rozprzestrzenianie się wirusów poza sieć LAN, oraz w miarę szybko wykrywać zawirusowanie któregoś z kompów. Poniżej podaję kawałek mojego skryptu budującego firewalla.

$pub to nazwa interfacju zewnetrznego (eth0,eth1,ppp...)
zmienne *_DENY_FORWARD zawierają listę portów, ktore wypadałoby blokować - należy zaglądać na strony antywirusowe i uaktualniać je.

SMTP_SERVERS="tu podajemy IP serwerow SMTP rozdzielone spacjami, używanych przez userów np. poczta.onet.pl, mail.lemat.priv.pl"
TCP_DENY_FORWARD="135:139 445 1080 3127 3128 6588 8080 194 529 994 6665:6669 3531 2745 1025 6129 17300 901"
UDP_DENY_FORWARD="135:139 445"

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

for port in ${TCP_DENY_FORWARD} ; do
   iptables -A FORWARD -p tcp -o ${pub} --dport ${port} -j DROP
done
for port in ${UDP_DENY_FORWARD} ; do
   iptables -A FORWARD -p udp -o ${pub} --dport ${port} -j DROP
done

# zakladamy lancuch do logowania poczty wychodzacej
iptables -N ESEMTEPE 2> /dev/null
iptables -F ESEMTEPE

iptables -A FORWARD -p tcp -s ${net} -o ${pub} --dport 25 -j ESEMTEPE

iptables -A ESEMTEPE -m limit --limit 12/minute --limit-burst 12 -j LOG --log-level info --log-prefix "smtp "
for adr in ${SMTP_SERVERS} ; do
   iptables -A ESEMTEPE -d ${adr} -m limit --limit 2/minute --limit-burst 2 -j ACCEPT
done
iptables -A ESEMTEPE -j DROP


Jak widać na załączonym obrazku, taki skrypt zręcznie wkomponowany w istniejące regułki firewalla na ruterze linuxowym zabrania połączeń z niektórymi portami - tymi portami, które są używane przez wirusy np. jako backdoory.

Dodatkowo robiąc listę serwerów poczty pozwalamy na wysyłanie poczty przez te serwery i ograniczamy rozsyłanie poczty gdzie popadnie.

Dzięki temu oszczędzamy pasmo (!) a dzięki regułce logującej możemy zaobserwować w logach kto w LANie ma zawirusowanego kompa. Siedzimy sobie wygodnie na czterech literach i ze 2 razy dziennie zaglądamy w logi.


Natomiast jeżeli mamy dużo userów i nie mają oni stałej listy serwerów SMTP to można zastosowac trick z modułem recent - podobnie jak w moim artykule opisującym blokowanie skanowania ftp.

modprobe ipt_recent ip_list_tot=32
iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 25 -m recent --name SMTP --seconds 60 --update -j DROP
iptables -A FORWARD -p tcp --dport 25 -m limit --limit 1/second --limit-burst 5 -j LOG --log-level info --log-prefix "smtp "
iptables -A FORWARD -p tcp --dport 25 -m recent --name SMTP --set -j ACCEPT

powyższe regułki ograniczają wysyłanie mejli do jednego na 60s przy czym, jeżeli w trakcie tych 60 sekund będzie znowu próba połączenia się to czas jest liczony od nowa - w ten sposób wirusy będą w stanie nawiązać tylko jedno (pierwsze) połączenie a reszta będzie DROPowana.

Środkowa regułka loguje nam do /var/log/kernel/info wszystkie próby połączenia do serwerów SMTP. Zawartość pliku /proc/net/ipt_recent/SMTP powie nam, który komp w sieci LAN prawdopodobnie jest zarażony.


Często tu zaglądają ludzie, co to postawili już ruter/NAT i nagle urodzili się z ręką w nocniku - po kilku dniach spokoju ktoś z ich sieci załapał wirusa, który teraz się rozsyła. Gorzej - dzwoni do nich Tepsa, mówiąc, że jak nie przestanie (on) wysyłać wirusów to mu odetną łącze (zgodnie z regulaminem - tak te małe literki co to się podpisywało pod nimi) ;)

Jak wykryć wirusa we własnej sieci mając dostęp (administracyjny) do rutera?:

iptables -I FORWARD -p tcp --dport 25 --syn -m limit --limit 1/second --limit-burst 5 -j LOG --log-level info --log-prefix "smtp "

następnie należy się wygodnie rozsiąść i obserwować logi. Interesuje nas źródłowy IP - ten pochodzący z naszej sieci. Po namierzeniu gościa:

iptables -I FORWARD -p tcp --dport 25 -s $IP -j DROP
ewentualnie:
iptables -I FORWARD -s $IP -j DROP
w tym drugim przypadku za ~5 sekund będziemy mieć go na linii ;)


Ważna uwaga (by Jacek Zapala): użytkownicy mogą używać portu 587 albo połączenia szyfrowanego (port 465) zamiast 25. Oczywiście ich serwery pocztowe muszą to wspierać.


Data utworzenia : 2004-07-30, data aktualizacji :2007-03-21

Skomentuj ten tekst

Komentarze:

misio
2015-05-07 15:29:23
plik logu
Witam,
mam pytanie do którego pliku pisze log?
Odpowiedź Lemata:
logi są w /var/log
sterowaniem jakie zdażenie jest logowanie do jakiego pliku zajmuje się syslog lub rsyslog
domyślnie (zależnie od dystrybucji) będzie to syslog, messages lub kern.log
Hesus
2012-01-21 14:31:17
A jak to po nowemy w sensie port 587
Czołem, a raczej chylę czoła :)
Czy aby to działało w obecnej epoce używania portu 587 wystarczy powielić linie od 3 do 5 i zmienić w nich port z 25 na 587 czy więcej czarów tak jak to opisywałeś w przypadku postfixa?
Odpowiedź Lemata:
nie. Aby cokolwiek weszło na serwer pocztowy po porcie 587 potrzebny jest login i hasło. Wirusy opisane w artykule sieją po porcie 25 po całym świecie. Wirus, który będzie siał po porcie 587 będzie się łączył do jednego serwera. Będzie istotna różnica w ilości połączeń z takiego zainfekowanego kompa.
linux lamer
2011-01-20 21:14:16
samoczynne restarty komputera pod linuksem
Witam, a co może być przyczyną samoczynnych restartów komputera. Na komputerze mam windows XP SP3 na jednym dysku podpiętym pod SATA oraz Ubuntu tzw. "jurny jarząbek" na HDD podpiętym po USB (przejściówka) i kiedy pracuję na tym systemie to co jakieś kilka minut mam restart kompa. Dodam to, że zasilacz mam markowy przetestowałem pamięć, sprawdziłem i wymieniłem kabelki, wyczyściłem komputer z kurzu (bo mógł się przegrzewać.
Odpowiedź Lemata:
ja potrafię wiele rzeczy ale leczyć na odległość jak Kaszpirowski nie (jeszcze nie) - w /var/log masz logi systemowe - może coś ciekawego tam się pokazać
lamer linux
2011-01-20 01:17:12
odzyskanie prawie zapomnianej nazwy użytkownika
Nie wiedziałem gdzie umieścić ten temat więc zdecydowałem się umieścić go tutaj. Mam pewien problem, chcę się nauczyć obsługi linuksa, nawet poradziłem sobie jakoś z instalacją tylko przy wpisywaniu nazwy użytkownika zapomniałem, gdzie umieściłem dużą, a gdzie małą literę (jak się okazało jest to ważne). Można jakoś odzyskać nazwę użytkownika. Hasło znam, nazwę też tylko nie chce mi się kombinować i próbować iluś tam kombinacji. Nie chce też na nowo instalować systemu, bo jeszcze bardziej się "zamotam" lub coś zepsuję.
Pozdrawiam i proszę o jakąś poradę dla linuksiarza lamera
Odpowiedź Lemata:
podczas startu linuxa spróbuj wcisnąć ESC i wybrać tryb "naprawczy" - a jak już wszystko wstanie wpisz less /etc/passwd - dostaniesz listę userów
Blondi AKA żona infola
2010-07-31 02:44:57
;)
lemat # shutdown -h now # ;-)
wszystkie opinie »
Czy tepsa powinna odłączać lamerów od sieci?
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞
Cookie Bullshit
Mapa strony
engine: lem.. at lemat·priv·pl