Fedoras Posted May 20 Report Share Posted May 20 W 2013 roku nie było możliwości blokowania całego ruchu wychodzącego poza wybranymi portami:https://lists.fedorahosted.org/pipermail/firewalld-users/2013-February/000053.html Czy coś się zmieniło? Ostatnio walczyłem z Rocky Linux i w końcu musiałem wrócić do iptables, bo w firewalld nie znalazłem takich możliwości. Link to comment Share on other sites More sharing options...
tomcio Posted May 20 Report Share Posted May 20 Da się https://fedoraproject.org/wiki/Firewalld?rd=FirewallD#Direct_options Przykład z dozwolonym tylko portem 80 zajumany stąd https://serverfault.com/questions/618164/block-outgoing-connections-on-rhel7-centos7-with-firewalld firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP Btw spojrzałem w git blame i wygląda na to, że tę opcję dodano jakieś 10 lat temu, mniej więcej pół roku po zalinkowanej przez ciebie wypowiedzi https://github.com/firewalld/firewalld/blame/2b58cb7d4a973ddb34d9084de542c433e68aec50/src/firewall-cmd.in#L432 Link to comment Share on other sites More sharing options...
Fedoras Posted May 27 Author Report Share Posted May 27 Tak, znam ten sposóbhttps://superuser.com/questions/1391650/how-can-i-configure-firewalld-to-block-all-outgoing-traffic-except-for-specific ale to załatwia tylko ipv4. Potem drop dla ipv6?, icmp w obydwu wersjach?, a co z IGMP czy innymi? Chodziło mi raczej o odpowiednik polityki DROP OUTBOUND, tak żeby jedną regułą/polityką zablokować wszystko, co chciałoby nawiązywać połączenia na zewnątrz, a nie blokować pojedyncze dziurki w sitku. Nic takiego nie mogę znaleźć. Link to comment Share on other sites More sharing options...
tomcio Posted May 27 Report Share Posted May 27 Czyli tobie bardziej chodzi o permanentny panic mode. Fakt nie ma prostego przełącznika (nie licząc tego --panic-on, który działa tylko do restartu) trzeba wszystkie protokoły podać osobno. No ale od czego jest bash jak nie od ułatwiania sobie życia Na szybko skleciłem takie coś i wydaje się działać #!/bin/bash cat /etc/protocols | awk '{print $1}' | sed '/^#/d' | while read line; do firewall-cmd --add-rich-rule="rule protocol value=$line drop" done Link to comment Share on other sites More sharing options...
Fedoras Posted June 3 Author Report Share Posted June 3 Tak. Chodzi mi o panic mode, ale nie docelowo tylko jako bazę, podstawę, politykę, a następnie możliwość dodawania pozwolenia na konkretne protokoły i porty. Tak, żeby dostępne były tylko te połączenia, które jawnie zdefiniuję w regułach i nic innego. Do firewalld miał być zbudowany jakiś język. Może w nim da się coś takiego wyrzeźbić? Link to comment Share on other sites More sharing options...
tomcio Posted June 3 Report Share Posted June 3 5 godzin temu, Fedoras napisał: Do firewalld miał być zbudowany jakiś język. Może w nim da się coś takiego wyrzeźbić? Tak, Rich Language, skorzystałem z niego w tym skrypcie. Niestety nie da się w nim zablokować wszystkiego, trzeba określić protokół, serwis albo inny element. Ten język nie został wymyślony po to aby blokować wszystko z marszu, a po to aby jeszcze bardziej szczegółowo określić co ma być zablokowane lub odblokowane. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/configuring_complex_firewall_rules_with_the_rich-language_syntax Link to comment Share on other sites More sharing options...
Fedoras Posted 3 hours ago Author Report Share Posted 3 hours ago OK. Jeszcze inaczej. Dawno, dawno temu uczono mnie, że w firewallingu istnieją dwie podstawowe polityki - pozwól na wszystkie protokoły/ porty i blokuj te niepożądane - blokuj wszystkie protokoły/porty i pozwól na te pożądane Pamiętam długie dyskusje, która z tych polityk jest "lepsza". Firewalld realizuje pierwszą z tych polityk. Moje pytanie dotyczyło możliwości zastosowania drugiej z nich w równie prosty sposób jak pierwszej. Link to comment Share on other sites More sharing options...
SeeM Posted 11 minutes ago Report Share Posted 11 minutes ago 3 godziny temu, Fedoras napisał: - blokuj wszystkie protokoły/porty i pozwól na te pożądane W przypadku ruchu przychodzącego jest to dosyć łatwe. W dokumentacji poszczególnych produktów jest napisane, jakie porty należy otworzyć. Dla ruchu wychodzącego jest dużo trudniej, ponieważ mało kto nawet wie, do czego jego produkt się łączy w celu aktualizacji, czy aktywacji. Zwykle do bardzo rozbudowanego CDN w rodzaju Cloudflare, albo Akamai, którego producent oprogramowania sobie wykupił oraz repozytoriów Dockera, PyPI, NPM, czy Mavena. Taki Red Hat to nawet opisuje - https://access.redhat.com/solutions/65300 - ale zwykle jest zakładane, że oprogramowanie ma nieograniczony dostęp do całego internetu. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now