Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-02-26 14:40:51

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

iptables - gdzie robię błąd

Witam
próbuję ograniczyć ruch icmp do 1/s dla ipka

Kod:

# Generated by iptables-save v1.4.14 on Fri Feb 26 14:38:15 2016
*mangle
:PREROUTING ACCEPT [20980:2621600]
:INPUT ACCEPT [20979:2621572]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17608:9785058]
:POSTROUTING ACCEPT [17608:9785058]
COMMIT
# Completed on Fri Feb 26 14:38:15 2016
# Generated by iptables-save v1.4.14 on Fri Feb 26 14:38:15 2016
*nat
:PREROUTING ACCEPT [9855:693081]
:INPUT ACCEPT [9809:690215]
:OUTPUT ACCEPT [5702:404030]
:POSTROUTING ACCEPT [5702:404030]
-A POSTROUTING -s 10.255.0.0/16 -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Feb 26 14:38:15 2016
# Generated by iptables-save v1.4.14 on Fri Feb 26 14:38:15 2016
*filter
:INPUT DROP [26:1507]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [17015:9504188]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -f -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m set --match-set mynetworks src -m hashlimit --hashlimit-upto 100/sec --hashlimit-burst 200 --hashlimit-mode srcip --hashlimit-name DNS -j ACCEPT
-A INPUT -p tcp -m set --match-set goodports dst -j ACCEPT
-A INPUT -p udp -m set --match-set goodports dst -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p icmp -m length --length 28:1500 -m hashlimit --hashlimit-upto 1/sec --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name ICMP -j ACCEPT
-A fail2ban-ssh -j RETURN
COMMIT
# Completed on Fri Feb 26 14:38:15 2016

niestety, teoretycznie hashlimit powinien mi ograniczyć do 1/sekunde a tak się nie dzieje.
gdzie robię błąd?

----

Qrde, ICMP łapie się w ESTABLISHED?
wprowadziłem tą regółkę właśnie przed to i działa, ładnie limituje

----

Dobra, już doczytałem. szkoda, że nie można usunąć wątku.

Ostatnio edytowany przez Nicram (2016-02-26 15:23:38)

Offline

 

#2  2016-02-26 18:52:48

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Po co hashlimit do ICMP?

Pierwszy lepszy goowniarz potrafi wysłać pakiety ICMP z 1000 fałszywych adresów równocześnie.
A jak znajdzie się jakiś niezabezpieczony broadcast, to wysyła je spoofując Twój adres IP, a tym  dostajesz tysiące odpowiedzi na pinga, którego w ogóle nie wysłałeś.

IMHO lepiej dać limit pakietów ICMP globalnie modułem limit, haslimit do tego potrzebny jak łysemu grzebień.
Hashlimit się używa do TCP, gdzie system śledzi stan połączenia.

ICMP trzeba traktować tak, żeby ani na rurce, ani w tablicach w pamięci ram (conntrack, haslimit, recent) nie stanowił problemu.


PS:

Qrde, ICMP łapie się w ESTABLISHED?[/quote]
ESTABLISHED ZAWSZE daję się jako OSTATNIĄ regułę.

W tablicy conntrack masz wszystkie połączenia realizowane [url=https://pl.wikipedia.org/wiki/Protok%C3%B3%C5%82_internetowy]protokołem IP[/url]... :D

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2016-02-26 18:57:34)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2016-02-26 18:56:48

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex]Po co hashlimit do ICMP?

Pierwszy lepszy goowniarz potrafi wysłać pakiety ICMP z 1000 fałszywych adresów równocześnie.
A jak znajdzie się jakiś niezabezpieczony broadcast, to wysyła je spoofując Twój adres IP, a tym  dostajesz tysiące odpowiedzi na pinga, którego w ogóle nie wysłałeś.

IMHO lepiej dać limit pakietów ICMP globalnie modułem limit, haslimit do tego potrzebny jak łysemu grzebień.
ICMP trzeba traktować tak, żeby ani na rurce, ani w tablicach w pamięci ram (conntrack, haslimit, recent) nie stanowił problemu.[/quote]
oo, dzięki za sugestię
[quote=Jacekalex]Hashlimit się używa do TCP, gdzie system śledzi stan połączenia.
Pozdro[/quote]
Tylko do tcp? w wielu fw co przejrzałem też jest stosowany do udp i w moim przypadku użyłem do dnsa. to źle? serwer ten służy tylko jako cachujący dla userów

Offline

 

#4  2016-02-26 19:04:24

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

[quote=Nicram].....
Tylko do tcp? w wielu fw co przejrzałem też jest stosowany do udp i w moim przypadku użyłem do dnsa. to źle? serwer ten służy tylko jako cachujący dla userów[/quote]
Do UDP ok, chociaż UDP jest protokołem bezpołączeniowym, to jednak FW śledzi połączenia UDP, żeby wiedzieć, które połączenia przepuszczać, a które nie.
Przy czym i tak do Binda dałbym normalny limit np 10 czy 20/s, (podobnie do każdego UDP, i globalnie dla całego systemu).
W każdym razie taką ilość, żeby serwer DNS i cały system tego praktycznie "nie odczuł".

Tymczasem ICMP to protokół do diagnozowania sieci i śledzić go nie ma sensu.
natomiast w dużej ilości może zmasakrować serwer, i dlatego trzeba na niego uważać.
Serwer chyba zajmuje się serwowaniem usług (na których czasem się zarabia),
a nie pomocą w diagnozowaniu sieci?

Ostatnio edytowany przez Jacekalex (2016-02-26 19:07:54)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2016-02-26 19:07:11

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex]Tymczasem ICMP to protokół do diagnozowania sieci i śledzić go nie ma sensu.
natomiast w dużej ilości może zmasakrować serwer, i dlatego trzeba na niego uważać.
Serwer chyba zajmuje się serwowaniem usług (na których czasem się zarabia),
a nie pomocą w diagnozowaniu sieci?[/quote]
czyli do samego icmp lepiej użyć?

Kod:

iptables -A INPUT -m icmp -p icmp --icmp-type echo-request -m state --state NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT

Offline

 

#6  2016-02-26 19:11:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Kod:

iptables -A INPUT -m icmp -p icmp --icmp-type echo-request -m state --state NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT

[/quote]
Po cholerę do tego conntrack mieszasz?

Kod:

iptables -A INPUT -p icmp -m limit --limit 10/s -j ACCEPT

nie wystarczy?

PS.
Moduł state wylatuje z FW, zamiast tego używa się:

Kod:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Szykuj się też na [url=http://netfilter.org/projects/nftables/]nftables[/url]
- za jakiś czas  wejdzie do powszechnego użytku zamiast iptables, ebtables i arptables.

Pozdro

Ostatnio edytowany przez Jacekalex (2016-02-26 19:15:08)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2016-02-26 19:13:42

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

OK, dzięki
zrobiłem teraz tak, czy lepiej?

Kod:

# Generated by iptables-save v1.4.14 on Fri Feb 26 19:31:12 2016
*mangle
:PREROUTING ACCEPT [8021:1031917]
:INPUT ACCEPT [8021:1031917]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6303:3984801]
:POSTROUTING ACCEPT [6303:3984801]
COMMIT
# Completed on Fri Feb 26 19:31:12 2016
# Generated by iptables-save v1.4.14 on Fri Feb 26 19:31:12 2016
*nat
:PREROUTING ACCEPT [3023:206198]
:INPUT ACCEPT [2975:202956]
:OUTPUT ACCEPT [1857:132086]
:POSTROUTING ACCEPT [1857:132086]
-A POSTROUTING -s 10.255.0.0/16 -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Feb 26 19:31:12 2016
# Generated by iptables-save v1.4.14 on Fri Feb 26 19:31:12 2016
*filter
:INPUT DROP [9:621]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5555:3490104]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -f -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p icmp -m limit --limit 10/sec -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m set --match-set mynetworks src -m hashlimit --hashlimit-upto 20/sec --hashlimit-burst 60 --hashlimit-mode srcip --hashlimit-name DNS -j ACCEPT
-A INPUT -p tcp -m set --match-set goodports dst -j ACCEPT
-A INPUT -p udp -m set --match-set goodports dst -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A fail2ban-ssh -j RETURN
COMMIT
# Completed on Fri Feb 26 19:31:12 2016

Ostatnio edytowany przez Nicram (2016-02-26 19:33:20)

Offline

 

#8  2016-02-26 19:40:24

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: iptables - gdzie robię błąd

Co jest złego z łapaniem ICMP w ESTABLISHED,RELATED i limitowaniem tylko nowych zapytań?

Offline

 

#9  2016-02-26 19:41:32

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=morfik]Co jest złego z łapaniem ICMP w ESTABLISHED,RELATED i limitowaniem tylko nowych zapytań?[/quote]
DDoS na ICMP?

Offline

 

#10  2016-02-26 19:49:01

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Każde połączenie śledzone w conntrack to jest 1,5 kB  w RAM.
Podobnie w hashlimit czy recent.
Miliard pakietów ICMP, każdy z innego - spoofowanego adresu, to ile będzie w RAM?

Serwerki do "stress-testów" i różne chmury można wynajmować za grosze na godziny,  a możliwości mają coraz większe...


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#11  2016-02-26 20:21:15

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: iptables - gdzie robię błąd

Dobra, niech wam będzie. xD

Offline

 

#12  2016-02-26 20:28:08

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

OK, dzięki
zrobiłem teraz tak, czy lepiej?[/quote]
Nie wiem, po kiego czorta Tobie fail2ban do SSH.

Nie lepiej sprawę [url=https://forum.dug.net.pl/viewtopic.php?pid=269383]ipsetem[/url] załatwić?

PS.
Jeśli np:

Kod:

net.netfilter.nf_conntrack_max = 65536
net.netfilter.nf_conntrack_icmp_timeout = 30

to ile pakietów ICMP na sekundę trzeba mu wysłać, żeby zapchać tablicę conntrack i praktycznie wyłączyć sieć na serwerze?

Z całą pewnością nie miliard (starczy nawet komórka z netem LTE na kartę), dlatego lepiej nie używać [b]conntrack --ctstate[/b] do ICMP.
Filtrowanie protokołów bezpołączeniowych przez conntrack nieźle się sprawdza w przypadku bezpiecznego desktopa, ale na serwerze, który udostępnia usługi w necie i wpuszcza takie pakiety, nie ma w ogóle  co liczyć na ten mechanizm.

Jeśli ktoś chce dokładnie limitować liczbę wpisów dla np icmp w ip_conntrack, to polecam moduł [b]connlimit[/b] z opcją [b]--connlimit-mask=0[/b].

Ostatnio edytowany przez Jacekalex (2016-02-26 20:37:51)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2016-02-26 20:37:44

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex]

OK, dzięki
zrobiłem teraz tak, czy lepiej?[/quote]
Nie wiem, po kiego czorta Tobie fail2ban do SSH.

Nie lepiej sprawę [url=https://forum.dug.net.pl/viewtopic.php?pid=269383]ipsetem[/url] załatwić?[/quote]
fail2ban banuje po podaniu x blednych haseł. nie rozważałem by wykorzystać do tego ipseta

Offline

 

#14  2016-02-26 20:44:24

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

[quote=Nicram][quote=Jacekalex]

OK, dzięki
zrobiłem teraz tak, czy lepiej?[/quote]
Nie wiem, po kiego czorta Tobie fail2ban do SSH.

Nie lepiej sprawę [url=https://forum.dug.net.pl/viewtopic.php?pid=269383]ipsetem[/url] załatwić?[/quote]
fail2ban banuje po podaniu x blednych haseł. nie rozważałem by wykorzystać do tego ipseta[/quote]
Po X błędnych haseł to SSH ma zamknąć połączenie, a hashlimit zakomunikować, że "zapraszamy za godzinkę".

Fail2ban Tobie jest potrzebny, jak łysemu grzebień.

W ogóle nie czaję, po cholerę do ICMP próbowałeś pchać haslimit, co sensu nie ma żadnego, za to do SSH, gdzie hashlimit sprawdza się cudownie (po to właśnie powstał), wolisz Fail2bana.

Nie próbuję tego zrozumieć, nie jestem psychoanalitykiem. ;)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15  2016-02-26 20:49:17

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex]Po X błędnych haseł to SSH ma zamknąć połączenie, a hashlimit zakomunikować, że "zapraszamy za godzinkę".

Fail2ban Tobie jest potrzebny, jak łysemu grzebień.

W ogóle nie czaję, po cholerę do ICMP próbowałeś pchać haslimit, co sensu nie ma żadnego, za to do SSH, gdzie hashlimit sprawdza się cudownie (po to właśnie powstał), wolisz Fail2bana.

Nie próbuję tego zrozumieć, nie jestem psychoanalitykiem. ;)[/quote]
tu nie ma co próbować zrozumieć. dawno nie bawiłem się iptables, zawsze był mi potrzebny do podstawowych opcji: zablokuj, odblokuj :)
po prostu skopiowałem regółkę z jakiegoś tutoriala. nie wiem jak który moduł dokładnie działa, czy wrzuca do pamięci i nie znam "good practices", ale dzięki takim osobom jak Ty, to poznaje i ciesze się, że w ogóle są chętni by podpowiedzieć co nie co.

ps. właśnie "studiuję" Twój wpis z podanego linku z ipsetem i muszę przyznać, że jest tam logika


--

hmm, zrobiłem sobie testowo analogicznie, tak samo jak w Ty i odrazu wpada mi do bana a do tego nie ma timeouta :/

Kod:

# Generated by iptables-save v1.4.21 on Fri Feb 26 21:05:23 2016
*raw
:PREROUTING ACCEPT [607:44924]
:OUTPUT ACCEPT [617:46644]
-A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400
-A PREROUTING ! -i lo -p tcp -m multiport --dports 22 -j SET --add-set wypad src --timeout 3600
-A PREROUTING -m set --match-set wypad src -j DROP
COMMIT
# Completed on Fri Feb 26 21:05:23 2016
# Generated by iptables-save v1.4.21 on Fri Feb 26 21:05:23 2016
*filter
:INPUT ACCEPT [8100:627593]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7831:626125]
COMMIT
# Completed on Fri Feb 26 21:05:23 2016

ipset list wypad
Name: wypad
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 448
References: 0
Members:
192.168.57.1

Ostatnio edytowany przez Nicram (2016-02-26 21:21:06)

Offline

 

#16  2016-02-26 21:06:40

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Ten wpis z ipsetem na porcie 22 zastosuj w sytuacji, kiedy SSH wystawiasz  na porcie losowym, np 3893 - chroniony hashlimitem.
Do tego ustaw serwer SSH, żeby zamykał połączenie po jednym lub max dwóch źle wpisanych hasłach, obuduj hashlimitem, i nie ma szansy, żeby ktoś ten serwer zajechał.

Jeśli pacjentom udostępniasz powłokę SSH, to możesz w nim w ogóle wyłączyć logowanie na roota, a dla roota osobno wystawić np [b]Dropdbear[/b] na porcie wylosowanym w totolotku, chronionym hashlimitem i obsługującym logowanie wyłącznie kluczami SSH2.

Z haslimitem uważaj, on do jedno połączenie TCP do SSH czy SMTP widzi jako dwa.
Tu masz moje regułki do haslimita:
https://forums.gentoo.org/viewtopic-p-7081326.html?#7081326

Ostatnio edytowany przez Jacekalex (2016-02-26 21:09:31)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#17  2016-02-26 21:18:22

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex]Ten wpis z ipsetem na porcie 22 zastosuj w sytuacji, kiedy SSH wystawiasz  na porcie losowym, np 3893 - chroniony hashlimitem.[/quote]
Qrde, chyba z powodu choroby mam problem ze zrozumieniem tego Twojego zdania :/
to ssh ma słuchać na dwóch portach? na 22 ipseta a na losowym hashlimit? bo nie kumam

[quote=Jacekalex]Jeśli pacjentom udostępniasz powłokę SSH, to możesz w nim w ogóle wyłączyć logowanie na roota, a dla roota osobno wystawić np [b]Dropdbear[/b] na porcie wylosowanym w totolotku, chronionym hashlimitem i obsługującym logowanie wyłącznie kluczami SSH2.[/quote]
standardowo mam wyłączoną możliwość logowania dla roota.

Offline

 

#18  2016-02-26 21:25:25

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

SSH nie musi słuchać na dwóch portach, bo i tak chodzi na jednym konfigu.

Możesz osobno wystawić Dropbera - taki lekki serwerek SSH2, osobno dla roota.
Dropberar jest w repo, używa się go np w OpenWRT i DDWRT, obrabia też standardowe klucze SSH.
Sytuacja o tyle sympatyczna, że jak jeden serwer SSH zdechnie albo jest niedostępny, to zawsze jest drugi, zapasowy.

Hashlimit i connlimit używam na porcie (lub zakresie portów), na którym działa(ją) usługa(i).

Ipset w tamtym wątku o autoban to jest taka zabawka-pułapka na skanery portów, morderczo skuteczna.

Ostatnio edytowany przez Jacekalex (2016-02-26 21:58:38)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#19  2016-02-26 21:34:56

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

Aaa, już teraz kumam :-)
Tylko z tym ipsetem próbuje ale już pierwsza linijka wrzuca mi do hash a ostatnia blokuje. No i nie widać timeouta :-(

Offline

 

#20  2016-02-26 21:35:46

  thomsson - Dyskutant

thomsson
Dyskutant
Zarejestrowany: 2011-10-26

Re: iptables - gdzie robię błąd

To jeszcze wyłącznie PasswordAuthentication w sshd configu i wrzuć klucz publiczny, szkoda czasu na bujanie się z firewallem żeby zabezpieczyć SSH,model powinien być taki że ufassz swojemu SSH na tyle że okazujesz mu odznakę i jesteś panem na hoście względnie jeśli jesteś strachliwy to dorzuć tam vpna i zamknij port SSH na świat czy tam wszystkie te które wg ciebie są wrażliwe

Jeśli pletę bzdury niech mnie ktoś poprawi

Pozdro


ilin napisał
[i]"DUG to tez moja mała ojczyzna"[/i]

Offline

 

#21  2016-02-26 21:36:47

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: iptables - gdzie robię błąd

[quote=Jacekalex]PS.
Jeśli np:

Kod:

net.netfilter.nf_conntrack_max = 65536
net.netfilter.nf_conntrack_icmp_timeout = 30

to ile pakietów ICMP na sekundę trzeba mu wysłać, żeby zapchać tablicę conntrack i praktycznie wyłączyć sieć na serwerze?

Z całą pewnością nie miliard (starczy nawet komórka z netem LTE na kartę), dlatego lepiej nie używać [b]conntrack --ctstate[/b] do ICMP.
Filtrowanie protokołów bezpołączeniowych przez conntrack nieźle się sprawdza w przypadku bezpiecznego desktopa, ale na serwerze, który udostępnia usługi w necie i wpuszcza takie pakiety, nie ma w ogóle  co liczyć na ten mechanizm.

Jeśli ktoś chce dokładnie limitować liczbę wpisów dla np icmp w ip_conntrack, to polecam moduł [b]connlimit[/b] z opcją [b]--connlimit-mask=0[/b].[/quote]
O ile dopuszczasz możliwość pingowania serwera. Ja mam u siebie zrobione tak, że tylko zaufane maszyny mogą pingować. xD Ale nawet jeśli, by to zostawić i zezwolić wszystkim, to coś mi nie chce ten conntrack zostawić tych ICMP w spokoju. xD

Mam niby takie regułki jako pierwsze w INPUT:

Kod:

-A INPUT -p icmp -m limit --limit 20/sec -j icmp-in
-A INPUT -p icmp -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Tam w icmp-in mam te reguły, które zezwalają tym zaufanym hostom pingować. Loguję się na jednego z tych hostów i pinguję tę maszynę. W conntracku pojawia się wpis z ICMP. Wszystkie pakiety ping są złapane przed tą regułą z ESTABLISHED,RELATED w INPUT, w OUTPUT nie ma reguł. Zatem WTF? xD U was nie pojawiają się wpisy w conntracku?

Offline

 

#22  2016-02-26 21:48:25

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Ja do monitorowania serwerków w ogóle nie używam ICMP, tylko jabbera, albo ejabber na serwerze, w domenie, albo jakiś lekki robocik np w Perlu (20 -50 linijek kodu).

Dużo to skuteczniejsze od durnego ICMP, serwerek może tą drogą np wezwać pomoc, jak zaczyna się dziać coś naprawdę niedobrego, a np Pidgin grzecznie zameldować, kiedy serwerek się wyloguje z jabbera. :D

To jest taki przykładowy robocik:

Kod:

#!/usr/bin/perl
use utf8;
use AnyEvent;
use AnyEvent::XMPP::IM::Connection;
use AnyEvent::XMPP::IM::Presence;
use AnyEvent::XMPP::Util qw/split_jid/;

my $j = AnyEvent->condvar;

# Enter your credentials here
my  $cl = AnyEvent::XMPP::IM::Connection->new (
      jid              => 'robocik@domena.tld',
      password         => 'HASEŁKO',
   );

 # Callback functions. Their are plenty more but here I have only included some as an example
 # Also, remember that the Connection object ($con in my case), is
 # always the first argument in the call backs. This is according to the documentation.
$cl->reg_cb (
   session_ready => sub {
      my ($con, $acc) = @_;
      print "session ready\n";

      # Sends a message to the user specified when the session starts and is ready
      my $immsg = AnyEvent::XMPP::IM::Message->new (to => 'pacjent@domena.tml', body => 'Hey man, I am a bot!');
      $immsg->send ($con);
   },
   connect => sub {
      print "Connected \n";
   },
   message => sub {
      my ($con, $msg) = @_;
      if ($msg->any_body ne ""){
         my ($user, $host, $res) = split_jid ($msg->from);
         my $username = join("", $user,'@',$host);
         print "Message from " . $username . ":\n";
         print "Message: " . $msg->any_body . "\n";
         print "\n";
      }
   },
   stream_pre_authentication => sub {
      print "Pre-authentication \n";
   },
   disconnect => sub {
      my ($con, $h, $p, $reason) = @_;
      warn "Disconnected from $h:$p: $reason\n";
      $j->broadcast;
   },
   error => sub {
      my ($cl, $err) = @_;
      print "ERROR: " . $err->string . "\n";
   },
   roster_update => sub {
      my ($con, $roster, $contacts) = @_;
      for my $contact ($roster->get_contacts) {
         print "Roster Update: " . $contact->jid . "\n";
      }
   },
   presence_update => sub {
      my ($con, $roster, $contacts, $old_presence, $new_presence) = @_;
      for my $cont ($contacts) {
         if($pres = $cont->get_priority_presence ne undef){
            # When user is online
            print "contact: " . $cont->jid . "\n";
            print "Presence: " . $pres . "\n";
            print "Status: " . $new_presence->show . "\n";
            print "Status Message: " . $new_presence->status . "\n";

            if ($cont->is_on_roster ne undef){
               print "Is On Roster: " . $cont->is_on_roster() . "\n";
            }
         } else {
            # When user has logged off
            print $cont->jid . "\n";
            print "Status offline \n";
         }
      }
   },
   message_error => sub {
      print "error";
   }
);
$cl->connect();
$j->wait;

Do utrzymania robocika przy życiu niezależnie od okoliczności  polecam daemontools.

Pozdro

Ostatnio edytowany przez Jacekalex (2016-02-26 21:57:06)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#23  2016-02-26 22:00:10

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

[quote=Nicram]Aaa, już teraz kumam :-)
Tylko z tym ipsetem próbuje ale już pierwsza linijka wrzuca mi do hash a ostatnia blokuje. No i nie widać timeouta :-([/quote]
U mnie też na jaju 4.4 nie pokazuje timeouta, nie wiem dlaczego, bo jeszcze niedawno pokazywał.
Jak ten stan się utrzyma na jaju 4.5, to będzie trzeba w tej sprawie trochę narozrabiać. :D

Ostatnio edytowany przez Jacekalex (2016-02-26 22:00:23)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#24  2016-02-26 22:17:53

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables - gdzie robię błąd

[quote=Jacekalex][quote=Nicram]Aaa, już teraz kumam :-)
Tylko z tym ipsetem próbuje ale już pierwsza linijka wrzuca mi do hash a ostatnia blokuje. No i nie widać timeouta :-([/quote]
U mnie też na jaju 4.4 nie pokazuje timeouta, nie wiem dlaczego, bo jeszcze niedawno pokazywał.
Jak ten stan się utrzyma na jaju 4.5, to będzie trzeba w tej sprawie trochę narozrabiać. :D[/quote]
pokazuje, tylko przy tworzeniu ipseta trzeba podać timeout.

możecie podrzucić jak te regółki powinny działać? bo robię

Kod:

iptables -t raw -A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400
iptables -t raw -A PREROUTING ! -i lo -p tcp -m multiport --dports 22 -j SET --add-set wypad src --timeout 3600

jak odpalę tą drugą regółkę to wrzucany jest ip odrazu do ipseta a wtedy pierwsza robi update timeoutu. jak teraz zrobię dropa dla tego ipseta to odrazu mnie wywala :/

Offline

 

#25  2016-02-26 22:48:51

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables - gdzie robię błąd

Kod:

iptables -t raw -S | grep  wypad
-A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400
-A PREROUTING ! -i lo -p tcp -m multiport --dports 22,113,445,1433,1512,2175,2176,3306,5432 -j SET --add-set wypad src --timeout 3600
-A PREROUTING -m set --match-set wypad src -j DROP

Musisz tylko pamiętać, że w tej wersji - jak zawołasz o połączenie na port pułapki - np 22 albo 3306, to przez godzinę albo cały dzień na żadnym porcie się nie połączysz.

Dlatego testuj to w domu, a na serwer wrzuć gotową i sprawdzoną wersję.

Zasada działania była i jest taka, na pierwszej próbie połączenia pacjent dostaje bana na 3600 sekund, jak w tym czasie spróbuje, to ma już bana na 86400 sekund.

Tak to działało do niedawna, ale teraz coś się zmieniło w ipsecie, już pokazuje timeouty (jak w poleceniu tworzenia dałem [b]timeout 3600[/b]), ale nikt jeszcze nie dostał 86400, więc nie wiem, czy bierze 3600 z domyślnej wartości, czy z regułki nr 2 w przykładzie.
Jutro będę znał więcej szczegółów. :D

Ostatnio edytowany przez Jacekalex (2016-02-26 22:52:14)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.020 seconds, 10 queries executed ]

Informacje debugowania

Time (s) Query
0.00014 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00114 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.189.184.99' WHERE u.id=1
0.00098 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.189.184.99', 1732745775)
0.00059 SELECT * FROM punbb_online WHERE logged<1732745475
0.00087 DELETE FROM punbb_online WHERE ident='3.148.106.49'
0.00132 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28321 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00262 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28321 ORDER BY p.id LIMIT 0,25
0.00113 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28321
Total query time: 0.00888 s