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,
Z iptables mam stycznosc 1 raz. Kupilem sobie ksiazke i przerabiam przyklad, ktory na dzien dobry dal mi w tylek i odrazu sie zablokowalem. Probuje przeanalizowac co jest nie tak, lecz nie moge nigdzie znalezc bledu. Co prawda przyklad jest dla eth1, ale dodalem ponizej regulke, ktora powinna mi pozwolic logowac sie na ssh.
Pomoze ktos ?
#!/bin/sh IPTABLES=/sbin/iptables MODPROBE=/sbin/modprobe INT_NET=192.168.10.0/24 # flush existing rules and set chain policy setting to DROP" $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -X $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # load connection-tracking modules $MODPROBE ip_conntrack $MODPROBE iptable_nat $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp # input chain $IPTABLES -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options $IPTABLES -A INPUT -m state --state INVALID -j DROP $IPTABLES -A INPUT -m state --state ESTABILISHED,RELATED -j ACCEPT # anti-spoofing rules $IPTABLES -A INPUT -i eth1 -s ! $INT_NET -j LOG --log-prefix "SPOOFED PKT" $IPTABLES -A INPUT -i eth1 -s ! $INT_NET -j DROP # accept rules $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT (teoretycznie, zeby nie zablokowac dostepu do ssh) $IPTABLES -A INPUT -i eth1 -p tcp -s $INT_NET --dport 22 --syn -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # default input log rule $IPTABLES -A INPUT -i ! lo -j LOG --log-prefix "DROP" --log-ip-options --log-tcp-options # output chain $IPTABLES -A OUTPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options $IPTABLES -A OUTPUT -m state --state INVALID -j DROP $IPTABLES -A OUTPUT -m state --state ESTABILISHED,RELATED -j ACCEPT # accept rules for allowing connections out $IPTABLES -A OUTPUT -p tcp –dport 22 –syn -m state –state NEW -j ACCEPT $IPTABLES -A OUTPUT -p tcp –dport 80 –syn -m state –state NEW -j ACCEPT $IPTABLES -A OUTPUT -p tcp –dport 4321 –syn -m state –state NEW -j ACCEPT # output log rule $IPTABLES -A OUTPUT -o ! lo -j LOG –log-prefix "DROP" –log-ip-options –log-tcp-options # forward chain $IPTABLES -A FORWARD -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options –log-tcp-options $IPTABLES -A FORWARD -m state --state INVALID -j DROP $IPTABLES -A FORWARD -m state --state ESTABILISHED,RELATED -j ACCEPT # anti-spoofing rules $IPTABLES -A FORWARD -i eth1 -s ! $INT_NET -j LOG --log-prefix "SPOOFED PKT" $IPTABLES -A FORWARD -i eth1 -s ! $INT_NET -j DROP
Z gory dziekuje,
Pozdrawiam,
Ostatnio edytowany przez bryn1u (2014-04-23 22:11:49)
Offline
700
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 00:50:40)
Offline
bryn1u - zasada jest prosta: najpierw odblokowujesz wszystko co chcesz przepuścić z/do serwera a dopiero potem blokujesz resztę i ewentualnie "czarujesz" z połączeniami przychodzącymi.
Iptables działa jak każdy interpreter: linjka po linijce. Jeśli trafi na regułkę która pasuje do danego połączenia przerywa działanie.
Offline
Iptables ma dwie cechy przewodnie:
Reguły ACCEPT, DROP i REJECT kończą przetwarzanie pakietu natychmiast.
Inne już różnie, zależy od konkretnej sytuacji/reguły.
Dlatego bardzo ważna jest kolejność reguł.
Dodatkowo, najpierw pakiet jest dopasowywany do kolejnych reguł, jeśli nie dopasuje do żadnej konkretnej reguły, to stosuje zasadę z polityki domyślnej.
Jak się o tym pamięta, i pisze regułę po regule, sprawdzając co regułę-trzy, czy z chronionymi usługami można się prawidłowo łączyć, to to się robi prosty jak konstrukcja cepa, i wypasionego FW się postawi w pół godzinki, wliczając w to jedno piwko.
Poważna jazda będzie dopiero za kilka miechów, przy przesiadce na nftables, choć podobno ma powstać translator reguł.
I dobrze konfigurację testować w domu, a na serwer wrzucać gotową
i sprawdzoną.
I nie ma się co szczypać, jak ktoś zna PF-a, to w iptables każda reguła kończąca działa jak reguła quick z PF.
PF też w nowszych wersjach domyślnie traktuje reguły, jakby miały parametr keep state, w iptables trzeba dorzeźbić dodatkowo regułki
...-m conntrack --ctstate ...
Poza tym to żadna magia, tylko nie warto robić copy& paste z jakichś gotowych skryptów, a potem dumać dwa tygodnie, dlaczego cośtam nie działa, i pierdolić się w debugowanie FW modułem TRACE.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2014-04-24 02:04:15)
Offline
Coś ta książka jakaś przeterminowana, nie mówię bynajmniej o nftables tylko np. o modułach:
ip_conntrack ip_conntrack_ftp ip_nat_ftp
Tych modułów, przynajmniej u mnie nie ma. A sam ip_conntrack , z tego co kiedyś znalazłem, został chyba zastąpiony przez xt_conntrack .
Dodatkowo ten -m state jest już od wieków przestarzały i się zamiast niego używa -m conntrack .
Co to za książka, jeśli można wiedzieć — by nie kupować. xD
winnetou --raczej na odwrót, najpierw blokujesz all, a potem przepuszczasz co potrzebujesz. xD
Poważna jazda będzie dopiero za kilka miechów, przy przesiadce na nftables, choć podobno ma powstać translator reguł.[/quote]
Z tego co ja wyczytałem gdzieś tam, to będzie można używać tych samych konstrukcji co przy iptables oraz, że to co działa obecnie na iptables będzie działało na nftables — http://netfilter.org/projects/nftables/ :The nftables project provides a backward compatibility layer that allows you run iptables/ip6tables (using the same syntax) over the nftables infrastructure:[/quote]
A i tu jeszcze masz linka z opisem całego iptables — http://www.iptables.info/en/iptables-contents.htmlOstatnio edytowany przez morfik (2014-04-24 02:53:40)
Offline
Ksiazka to:
http://helion.pl/ksiazki/bezpieczenstwo-sieci-w-linuksie-wykrywanie-atakow-i-obrona-przed-nimi-za-pomoca-iptables-psad-i-fw-michael-rash,bsieli.htm
I chyba zdecydowanie jest przestarzala, ale bardzo ciekawie opisana. Zainteresowalo mnie bardziej system psad+fw+snort.
Na codzien uzywam PF dziala rewelacyjnie, ale potrzebuje uzyc iptables dla kontenerow z lxc bo chce pozamykac tam pare uslug i borykam sie z iptables.
P.S
Jacek nie ma copy i paste wszystko recznie pisalem czytajac "znaczenie" reguly.
Offline
To nie pisz na siłę całego skrypta równocześnie, tylko dorzucaj po jednej, kilku regułach do FW, i patrz, co działa, a co nie.
I nie sugeruj się psadem i fwsnortem, bo znacznie ciekawiej można użyć na razie modułów [b]connlimit[/b], [b]hashlimit[/b] i [b]recent[/b] firewalla, do tego można użyć filtra opartego na Fail2banie, jak się lubisz "kąpać w regexach".
Jak ktoś myśli, że Fwsnort zastąpi Snorta, to niech myśli dalej, przy czym Snort do serwera z kontenerami LXC to strzelanie z armaty do wróbla,
samym Iptables można bardzo elegancko poobcinać liczbę i rodzaje połączeń w taki sposób, żeby się nic strasznego nie wydarzyło,
a krytyczne błędy w demonach sieciowych są dosyć szybko łatane,
licząc od wykrycia.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-04-24 09:36:38)
Offline
Data wydania książki drukowanej: 2008-09-01[/quote]
Za 15 zł może i bym się skusił, ale 6 dych to o wiele za dużo. xDOstatnio edytowany przez morfik (2014-04-24 15:29:12)
Offline
[quote=morfik]
Data wydania książki drukowanej: 2008-09-01[/quote]
Za 15 zł może i bym się skusił, ale 6 dych to o wiele za dużo. xD[/quote]
Wrzucilem do siebie na server ta ksiazke w .pdf jakbys chcial sobie poczytac. Jezyk [EN].
[b]Sznurek:[/b] http://oksymoron.edu.pl/~bryn1u/Linux%20Firewalls%20-%20AttackDetectionResponseWithIPtablesPsadFwsnort.pdf
Tutaj jest lepszy nekromanta:
[b]Debian Linux. Księga eksperta[/b]
Data wydania książki drukowanej: [b]2001-10-10[/b]Na płycie CD-ROM znajdziesz:
dystrybucję Debian 2.1;[/quote]
:D
Cena:130,00 zł
http://helion.pl/ksiazki/debian-linux-ksiega-eksperta-mario-camou-john-goerzen-aaron-van-couwenberghe,dlinke.htm#opisOstatnio edytowany przez bryn1u (2014-04-25 08:25:50)
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]Offline
Witajcie drodzy koledzy.
Pozwoliłem sobie zaczerpnąć miejsca w tym oto wątku (dzięki [b]bryn1u[/b]) w poszukiwaniu rozwiązania problemu bo...trafiłem na to samo.
[quote=Jacekalex]Poza tym to żadna magia, tylko nie warto robić copy& paste z jakichś gotowych skryptów, a potem dumać dwa tygodnie, dlaczego cośtam nie działa, i pierdolić się w debugowanie FW modułem TRACE.[/quote]
[b]Jacekalex[/b] na pewno piszę mądre rzeczy, godne zapamiętania i wykorzystania ale...no niestety "ale" ja jako zwykły zjadacz chleba, któremu przestawiło się coś w głowie, wziął się za tworzenie serwerka testowego w domu oczywiście ku czci nauce i poszerzania swoich horyzontów myślowych i wklepałem gotowca na podstawie tegoż artykułu:
http://pl.wikibooks.org/wiki/Debian_-_uniwersalna_instalacja/Konfigurowanie_iptables
Ok...dosyć biadolenia i przejdźmy zatem do meritum.
Podobnie jak [b]bryn1u[/b] zablokowałem sobie dostęp do niektórych usług. W moim przypadku ssh i vnc - wiadomo przez copy&paste "gotowiec" z ów linka wyżej.
Zanim trafiłem na temat naszego autora, zdążyłem załapać że drzemiący w moim serwie "skrypt" (/etc/init.d/firewall) działa jak interpretator poleceń linijka po linijce.
Dodawanie na samym końcu linijek: iptables -A INPUT blabla, nie dało pożądanego efektu; dopiero wpisanie linijek zaraz po "interpretacji polityki" (INPUT DROP, FORWARD DROP, etc.), łączenie się po ssh i vnc wróciło do żywych :)
Moje działania to czyste testy, serwer jest online ale nadal nie czuję się bezpiecznie.
Chciałbym stworzyć możliwość łączenia się np. po vnc tylko wtedy kiedy ja wyrażam na to zgodę na serwerze, a po zamknięciu sesji port (5900) dalej byłby zablokowany. Po ssh sprawa wygląda troszeczkę inaczej - tutaj zabawa z kluczami rsa.
Teraz pytanko.
Czy istnieje możliwość, aby np. podczas uruchamiania "x11vnc" odblokowywał się na ten czas port w iptables (w konf. firewall), a następnie po wyłączeniu usługi x11vnc, firewall przechodziłby z powrotem do "blokowania wszystkiego co popadnie"?
Offline
[b]@noSound[/b]
HINT: port knocking
Offline
Czyli coś na zasadzie tunelu zwrotnego. To nawet sobie skonf. zarówno dostęp do ssh jak i vnc (jak dobrze myślę). Dzięki za odpowiedź.
Ostatnio edytowany przez noSound (2014-05-16 09:32:16)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00095 | 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.217.252.194' WHERE u.id=1 |
0.00061 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.217.252.194', 1732573440) |
0.00039 | SELECT * FROM punbb_online WHERE logged<1732573140 |
0.00058 | DELETE FROM punbb_online WHERE ident='18.117.75.53' |
0.00326 | DELETE FROM punbb_online WHERE ident='18.188.223.120' |
0.00058 | DELETE FROM punbb_online WHERE ident='18.224.56.127' |
0.00062 | DELETE FROM punbb_online WHERE ident='3.135.214.139' |
0.00035 | 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=25681 AND t.moved_to IS NULL |
0.00048 | SELECT search_for, replace_with FROM punbb_censoring |
0.00346 | 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=25681 ORDER BY p.id LIMIT 0,25 |
0.00076 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25681 |
Total query time: 0.01218 s |