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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam wszystkich
Dopiero się ucze więc prosze o wyorzumiałość ; )
Loguje się na konto robocze (brak uprawnień, wyłączone logowanie po hasłach.) poprzez ssh. Możliwość logowania do roota wyłączona (w razie potrzeby zrobione osobne konto z uprawnieniami sudo). Czy fail2ban jest potrzebny? Słyszałem że logując przez ssh ataki typu brute force mamy z głowy. Czy to prawda?
Offline
Taki brute-force się zdarzają nawet, jak masz logowanie po hasłach wyłączone, po prostu nie wszystkie booty skrypciarzy pisane są bezbłędnie i z należytą starannością.
Przy czym nie czaję, do czego tu potrzebny fail2ban, jeśli sam Netfiter ma dosyć zabawek, żeby ochronić demona SSH.
Ostatnio edytowany przez Jacekalex (2018-02-07 23:10:59)
Offline
Dziękuje bardzo za odpowiedź. Ucze się od niedawna metodą prób i błędów więc póki co to straszny amator ze mnie ;)
Generalnie to firewall przepuszcza tylko określoną pule IP na zmienionych portach i zastanawiam się, czy w takim wypadku takie coś jest mi w ogóle potrzebne?
Nie ukrywam, że zależy mi na jak najprościejszym rozwiązaniu i jeśli da się to zrobić tylko w iptablesie (o ile jest to w ogóle potrzebne) to cieszyłbym się, jeśli nakierowałby mnie Pan na dobrą droge. Pozdrawiam
Offline
Kiedyś używałem czegoś działającego na podobnej do tego zasadzie:
-N IN_SSH -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -j IN_SSH -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 3 --seconds 10 -j DROP -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 4 --seconds 1800 -j DROP -A IN_SSH -m recent --name sshbf --set -j ACCEPT
Offline
Dobrze to interpretuje?
1. Zezwól na połączenie ssh
2/3. (Tutaj mam wątpliwości) 3 błędne próby = ban 10 s. czy 3 błębne próby w przeciągu 10 sec = ban forever?
4. Zezwól na połączenie jeśli nie zostało odfiltrowane przez powyższe reguły
Czy próby logowania są zapisywane w logach? bany są zapisywane w pamięci ram/w plikach? wolałbym aby pamięć nie została przepełniona bez mojej wiedzy.
Druga sprawa - jeśli logować przez ssh moge się tylko z mojeg IP to są jakieś realne szanse, że potencjalnemu napastnikowi uda wykonać się brute force? (pomijamy rzeczy takie jak backdoor na moim PC)
Offline
Tak mniej więcej:
1. Tworzy nowy łańcuch IN_SSH
2. Każde nowe połączenie ssh kieruje do łańcucha IN_SSH
3. Jeśli w ciągu 3 sekund zostaną zarejestrowane 3 nowe połączenia to każde kolejne jest porzucane
4. Jeśli w ciągu 1800 sekund zostaną zarejestrowane 4 nowe połączenia to każde kolejne będzie porzucane
5. Jeśli paczka przeszła pomyślnie przez powyższe sprawdziany to jest akceptowana.
http://compilefailure.blogspot.com/2011/04/better-ssh-brute-force-prevention-with.html
https://wiki.archlinux.org/index.php/simple_stateful_firewall
http://pcserver.uk/iptrecent.htm
Ostatnio edytowany przez arecki (2018-02-07 18:07:51)
Offline
[quote=gracz1010]Dobrze to interpretuje?[/quote]
A do manuala nie możesz zajrzeć? Np tu:
http://ipset.netfilter.org/iptables-extensions.man.html#lbBW
Iptables to nie pole do interpretacji, tam zachodzą konkretne operacje. xD
Offline
Ja kiedyś dawno temu (dokładnie całe 13 sekund temu), na jednym VPS miałem tak:
-N SSH iptables -A INPUT -p tcp -m tcp -m multiport --dports 11541,23486 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -j SSH iptables -A SSH -m hashlimit --hashlimit-upto 5/hour --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name ssh -j ACCEPT iptables -A SSH -j RETURN
Ponieważ jednak taki numer mnie też potrafi mocno przyblokować, małe uzupełnienie było potrzebne:
ipset create brama hash:net maxelem 65535 timeout 86400 iptables -t raw -I PREROUTING -m set --match-set brama src -j ACCEPT iptables -I INPUT -m set --match-set brama src -j ACCEPT
i taki mały skrypcik:
[b]cat /etc/profile.d/sshbrama.sh[/b]
#!/bin/sh if [ -n "$SSH_CLIENT" ]; then if [ "`id -u`" -eq 0 ]; then FROMIP=$(echo $SSH_CLIENT |awk '{print $1}' ) ipset add brama $FROMIP timeout 86400 --exist; fi fi
Ilekroć zaloguję się na SSH do powłoki systemowej na konto root, automatycznie mój adres IP (z którego się połączyłem), jest dodawany do tablicy [b]brama[/b] ipseta.
SOA#1
PS.
Jeżeli masz na VPSie IPv6, to tak samo robisz na IPv6.
Pozdro
Ostatnio edytowany przez Jacekalex (2018-03-05 17:20:36)
Offline
[quote=gracz1010]Dobrze to interpretuje?
1. Zezwól na połączenie ssh
2/3. (Tutaj mam wątpliwości) 3 błędne próby = ban 10 s. czy 3 błębne próby w przeciągu 10 sec = ban forever?
4. Zezwól na połączenie jeśli nie zostało odfiltrowane przez powyższe reguły
Czy próby logowania są zapisywane w logach? bany są zapisywane w pamięci ram/w plikach? wolałbym aby pamięć nie została przepełniona bez mojej wiedzy.
Druga sprawa - jeśli logować przez ssh moge się tylko z mojeg IP to są jakieś realne szanse, że potencjalnemu napastnikowi uda wykonać się brute force? (pomijamy rzeczy takie jak backdoor na moim PC)[/quote]
To nie działa na zasadzie jakiegoś banowania i tworzenia listy zbanowanych adresów.
Po prostu zbyt często nawiązywane nowe połączenia zostają zostają odrzucane przez netfilter.
Można to sobie podejrzeć w /proc (wirtualnym systemie plików). Przykładowo:
cat /proc/net/xt_recent/sshbf
Do bardziej zaawansowanych ustawień można użyć narzędzia [tt]ipset[/tt]
Offline
Do bardziej zaawansowanych ustawień można użyć narzędzia ipset[/quote]
Oj tam, oj tam, zaawansowanych ;)
Ipset najlepiej się sprawdza w tablicy RAW, na "portierni".
Tu jest metoda:
https://forum.dug.net.pl/viewtopic.php?pid=269383#p269383
A tu ostatni rezultat z jednego VPSa:Kod:
root ~> ipset list wypad Name: wypad Type: hash:net Revision: 6 Header: family inet hashsize 1024 maxelem 65535 timeout 3600 Size in memory: 12536 References: 5 Number of entries: 27 Members: 148.153.39.186 timeout 3451 202.29.215.226 timeout 60759 222.186.139.109 timeout 73503 113.102.213.237 timeout 598 45.76.45.199 timeout 82555 95.42.248.53 timeout 46342 212.237.46.179 timeout 43131 52.226.66.5 timeout 64074 211.60.83.218 timeout 83068 59.125.19.171 timeout 75906 125.160.224.67 timeout 64234 63.246.129.181 timeout 2590 60.190.104.228 timeout 2258 121.244.36.226 timeout 78579 60.23.29.186 timeout 3099 121.97.63.210 timeout 54396 5.188.10.179 timeout 84263 52.165.134.213 timeout 63621 220.178.61.54 timeout 658 89.218.138.250 timeout 50977 190.3.118.166 timeout 73530 200.111.8.59 timeout 56797 116.196.121.141 timeout 2684 122.176.97.120 timeout 49259 158.140.171.4 timeout 60287 190.72.57.144 timeout 68541 67.78.200.86 timeout 67059Pozdro
Ostatnio edytowany przez Jacekalex (2018-02-08 22:52:17)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Dziękówa Panowie za odpowiedzi. Powiedzcie mi jeszcze z czystej ciekawości - załóżmy, że nie zabezpieczam w żadnen sposób demona ssh przed brute force (oczywiście nie mam zamiaru tego robić-bezpieczenstwa nigdy mało) ale firewall przepuszcza tylko moje IP na zmienionym porcie ssh, to czy istnieje jakieś realne zagrożenie atakiem? Na logike wydaje mi się, że nie ale wole podopytać bardziej ogarniętych w temacie
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00121 | 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='13.58.18.135' WHERE u.id=1 |
0.00061 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.58.18.135', 1732252675) |
0.00040 | SELECT * FROM punbb_online WHERE logged<1732252375 |
0.00067 | SELECT topic_id FROM punbb_posts WHERE id=317389 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=30258 ORDER BY posted |
0.00030 | 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=30258 AND t.moved_to IS NULL |
0.00023 | SELECT search_for, replace_with FROM punbb_censoring |
0.00178 | 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=30258 ORDER BY p.id LIMIT 0,25 |
0.00076 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30258 |
Total query time: 0.00615 s |