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/.
Strony: 1
Witam,
dlaczego, gdy „odhaszuję” ostatnią linię przedstawionego poniżej skryptu, tracę kontakt z internetem?
Sam skrypt zaczerpnąłem z: http://ubuntuforums.org/showthread.php?t=159661 pkt.3
#!/bin/bash ### BEGIN INIT INFO # Provides: firewall # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: firewall # Description: fireawall ### END INIT INFO # Bez podszywania się (spoofingu)!!! if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] then for filtre in /proc/sys/net/ipv4/conf/*/rp_filter do echo 1 > $filtre done fi # Bez icmp (nieprawidłowych komunikatów o błędach) echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #Załadowanie niektórych modułów, które mogą się przydać modprobe ip_tables modprobe ip_nat_ftp modprobe ip_nat_irc modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack_irc modprobe ip_conntrack_ftp # Czyszczenie wszystkie reguł i łańcuchów iptables -F iptables -X # należy najpierw ustawić domyślne zachowanie => akceptowanie połączeń iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Tworzymy 2 łańcuchy pozwalające napisać czysty skrypt iptables -N FIREWALL iptables -N TRUSTED # Zezwalaj na ESTABLISHED i RELATED dla połączeń przychodzących iptables -A FIREWALL -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Zezwalaj na ruch loopback iptables -A FIREWALL -i lo -j ACCEPT # Wyślij wszystkie pakiety do łańcucha Trusted iptables -A FIREWALL -j TRUSTED # DROP -porzuć wszystkie pozostałe pakiety iptables -A FIREWALL -j DROP # Wyślij wszystkie pakiety INPUT do łańcucha FIREWALL # iptables -A INPUT -j FIREWALL
Wynik polecenia # iptables -L dla firewalla w postaci j.w.
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain FIREWALL (0 references) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere TRUSTED all -- anywhere anywhere Chain TRUSTED (1 references) target prot opt source destination
Proszę o podpowiedź.
Nadmieniam, że do tej pory używam innego skryptu o troszkę innej konstrukcji lecz to opracowanie Fordon'a, zafrapowało mnie.
Offline
Tego skrypta możesz sobie w buty wsadzić.
Domyślna polityka INPUT na ACCPET, tony reguł choooj wie do czego,
krótko pisząc, "porady z ubuntuforums" :D
Jeżeli autor tego skrypta jeszcze nie siedzi w psychiatryku, to się jego pytaj, co tam wyrzeźbił.
Jeśli to desktop:
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
to jest pełnowartościowy firewall z kontrolą stanu pakietu.
Jeśli to serwer, to zajrzyj tu:
http://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netfilter
Jak koniecznie chcesz przepis w typie *buntu, to tutaj też jest:
http://ubuntu.pl/forum/viewtopic.php?t=103825
Przy okazji, jak chcesz otworzyć jakiś port na taką czy inną usługę sieciową (dostępny z netu), to zainteresuj się modułami limit, hashlimit, connlimit, to do ochrony przed atakami dos,ddos, i podobnymi.
Tuning ustawień sieciowych kernela mam od bardzo dawna zrobiony tak:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 2 > $i ; done; /bin/echo 1 > /proc/sys/net/ipv4/ip_forward /bin/echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts /bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route /bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects /bin/echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses /bin/echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter /bin/echo 1 > /proc/sys/net/ipv4/tcp_syncookies /bin/echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter /bin/echo "18192" > /proc/sys/net/ipv4/route/max_size
SOA#1
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-04-19 14:22:02)
Offline
Bardzo dziękuję za odpowiedź i podpowiedzi.
Nie twierdziłem, że fragment skryptu który zaprezentowałem, będzie powalał na kolana...heh
Zafrapowało mnie jedynie to, że włączając linię:
iptables -A INPUT -j FIREWALL
odcinam się od internetu.
W tym skrypcie Fordon-owym zaciekawiło mnie rozwiązanie takie oto:
... iptables -N FIREWALL iptables -N TRUSTED ...
które pozwala na "skanalizowanie" ruchu sieciowego.
A tak apropo, nie jestem przywiązany do rozwiązań Ubuntowych w tym temacie chociaż, zasady tu są bardzo podobne.
Nie będę też się wymądrzał, gdyż jestem tylko zwykłym użytkownikiem Debiana może bardziej drążącym zagadnienia ale nie mającym na pewno takiej wiedzy jak sam "miszczu" Jacekalex.
Duuuużo mi jeszcze zgłębić w tym temacie trzeba i nie wiem, czy do swojego kresu wszystko opanuję hi..hi.
Zdrowych i wesołych świąt Wielkiej Nocy życzę i pozdrawiam.
Offline
morfik napisał(-a):
Jacekalex — mógłbyś napisać coś więcej o tym tuningu kernelowym, co konkretnie robią te opcje i czemu ustawić je, tak jak je ustawiłeś?
Książka kucharska:
http://linuxreviews.org/howtos/networking/lartc/pl/
I wersja PDF:
W sznurku rozdział nazywa się Parametry Sieciowe Kernela
- numer rozdziału 13.
Aktualna wersja zawsze jest tutaj:
/usr/src/linux/Documentation/networking/ip-sysctl.txt
o ile oczywiście do /usr/src/linux są podlinkowane źródła kernela.
Albo np tutaj:
https://git.kernel.org/cgit/linux/kernel/git/torval … ip-sysctl.txt
@morfik
Napisz lepiej cyfrą, ile razy mam wklejać te same sznurki na jednym forum. ;)
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-04-20 07:49:48)
Offline
Chyba o to chodziło?
Offline
morfik napisał(-a):
A nie mógłbyś po prostu w paru zdaniach napisać? xD Jeden link nie działa, ten z pdf, ten drugi nie potrafi kodowania ustawić i się tego czytać z deka nie da. xD
Faktycznie, Google jeszcze widzi dokument, a link wygasł (dokument.pdf)
Zapasowy masz tutaj (z domowych zapasów ;) )
http://jacekalex.sh.dug.net.pl/2.4routing.pdf
Kodowanie na stronie?
Taki z Ciebie "hakier", a nie potrafisz przestawić kodowania w przeglądarce na iso-8859-2?
W Firerfoxie to jest =>Widok=>Zestaw znaków=>Środkowoeuropejski (ISO).... - trudne?
W kilku zdaniach opisać setkę parametrów sieciowych kernela?
Wszystkich, do ipv4, ipv6?
Dokumentacja kernela gryzie?
Jeśli chcesz moich wyjąsnień, to nie uczyłem się tego na pamięć, sam w razie czego patrzę do oficjalnej dokumentacji.
W /etc/sysctl.conf mam jeszcze tonę rożnych ustawień robionych metodą prób i błędów, aż w miarę dobrze zaczęło chodzić to przeklęte PPPoE, na które się przeprowadził mój ISP.
Wygląda to tak:
net.ipv4.ip_forward = 1 net.ipv4.ip_dynaddr = 1 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.ip_default_ttl = 128 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_syncookies = 1 net.netfilter.nf_conntrack_tcp_timeout_established = 1800 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 1 net.ipv4.conf.default.secure_redirects = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.ip_local_port_range = 32768 61569 net.ipv4.conf.net.arp_ignore = 0 net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.neigh.default.base_reachable_time = 86400 net.ipv4.neigh.default.gc_stale_time = 86400 net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1 net.core.netdev_max_backlog = 2500 net.core.rmem_default = 524288 net.core.wmem_default = 524288 net.ipv4.tcp_wmem = 4096 87380 524288 net.ipv4.tcp_rmem = 4096 87380 524288 net.ipv4.tcp_mem = 524288 524288 524288 net.core.rmem_max = 524288 net.core.wmem_max = 524288 net.ipv4.neigh.default.gc_thresh1 = 4096 net.ipv4.neigh.default.gc_thresh2 = 8192 net.ipv4.neigh.default.gc_thresh3 = 16384 net.ipv4.tcp_rfc1337 = 1 net.ipv4.ip_no_pmtu_disc = 0 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_ecn = 0
I też nie pamiętam dokładnie, co jest do czego, od tego jest dokumentacja, żeby do niej zaglądać.
Zwłaszcza, że w miarę rozwoju kernela różne nowe opcje się pojawiają, a niektóre starsze wylatują od czasu do czasu.
Teraz cały podsystem sieciowy ma być spakowany do postaci wirtualnej maszyny, to się wiąże z zmianą iptables => nftables,
także się szykuje gruntowna rewolucja w ustawieniach kernela.
O całym podsystemie sieciowym Linuxa można by książki pisać, a nie w kilku zdaniach.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2014-04-20 08:13:24)
Offline
Kodowanie na stronie?
Taki z Ciebie "hakier", a nie potrafisz przestawić kodowania w przeglądarce na iso-8859-2?
W Firerfoxie to jest =>Widok=>Zestaw znaków=>Środkowoeuropejski (ISO).... - trudne?
Sprawdziłem tylko utf i windowsa, potem się poddałem. xD
W kilku zdaniach opisać setkę parametrów sieciowych kernela?
E tam setkę, ledwo co 10. xD
I też nie pamiętam dokładnie, co jest do czego, od tego jest dokumentacja, żeby do niej zaglądać.
Trza robić komcie.
numer_inaczej — może być.
Offline
Serwus. Jacku dostrzegłem, że do pliku /etc/sysctl.conf, masz dodaną dwukrotnie opcję net.ipv4.tcp_syncookies. Przepraszam za małe odejście od głównego tematu.
Offline
remi napisał(-a):
Serwus. Jacku dostrzegłem, że do pliku /etc/sysctl.conf, masz dodaną dwukrotnie opcję net.ipv4.tcp_syncookies. Przepraszam za małe odejście od głównego tematu.
Poprawione, dzięki.
Offline
A co sądzicie o ustawieniu z tej strony, https://wiki.debian.org/iptables ?
*filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You could modify this to only allow certain traffic -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT # Allows SSH connections # THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE -A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT # Now you should read up on iptables rules and consider whether ssh access # for everyone is really desired. Most likely you will only allow access from certain IPs. # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls (access via 'dmesg' command) -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy: -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT
Offline
Jacekalex -- tak sobie przeglądam te wpisy z sysctl i tam jest jeszcze coś takiego:
net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.all.rp_filter = 2 ... net.ipv4.conf.default.rp_filter = 1
A jeszcze takie zapytanie, jak się ustawi jakiś parametr w .all. to automatycznie jest to aplikowane do każdego interfejsu? Bo z tego co zauważyłem, to w .all. może być np. wartość 0, a w eth0 może bić wartość 1. Które ustawienia wtedy się liczą?
Ostatnio edytowany przez morfik (2014-04-29 03:23:53)
Offline
O ile mi wiadomo, all dotyczy wszystkich aktualnie istniejących interfejsów, default ustala wartość domyślną dla nowo tworzonych interfejsów, np tup/tap/ipsec, czy kart sieciowych usb.
all 0 a eth0 1?
Sprawdź, co się stanie, jak dasz all, a potem zmienisz dla eth0,
i odwrotnie.
All powinien zmienić wartość dla wszystkich interfejsów, ale potem zawsze taką wartość można nadpisać dla każdej karty.
Offline
No to coś u mnie to nie działa jak trza. Mam linijki od:
net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0
i mi wyrzuca coś takiego:
# sysctl -a | grep -i accept_redirects net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.br0.accept_redirects = 1 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 1 net.ipv4.conf.ifb0.accept_redirects = 0 net.ipv4.conf.ifb1.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.br0.accept_redirects = 1 net.ipv6.conf.default.accept_redirects = 0 net.ipv6.conf.eth0.accept_redirects = 1 net.ipv6.conf.ifb0.accept_redirects = 1 net.ipv6.conf.ifb1.accept_redirects = 1 net.ipv6.conf.lo.accept_redirects = 1
Tak samo z:
net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1
a jest:
# sysctl -a | egrep -i "\.rp_" net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.br0.rp_filter = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.conf.ifb0.rp_filter = 1 net.ipv4.conf.ifb1.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1
i podobnie z:
net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0
bo jest:
# sysctl -a | egrep -i accept_source_route net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.br0.accept_source_route = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 1 net.ipv4.conf.ifb0.accept_source_route = 0 net.ipv4.conf.ifb1.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv6.conf.br0.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0 net.ipv6.conf.eth0.accept_source_route = 0 net.ipv6.conf.ifb0.accept_source_route = 0 net.ipv6.conf.ifb1.accept_source_route = 0 net.ipv6.conf.lo.accept_source_route = 0
Także se to ustawia jak chce.
Offline
To do skrypta FW dorzuć np:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 2 > $i ; done;
Z każdym problematycznym parametrem możesz tak zrobić.
Wtedy na pewno będzie jak trzeba.
Offline
Sysctl.conf, to kolejny piękny ułatwiaczo/ulepszacz, któremu czasem coś wychodzi lepiej, czasem gorzej.
Jedyne, co w Linuxie działa zawsze, i zawsze można na to liczyć, to jest powłoka.
Offline
Tam masz kolejne 2 duplikaty:
net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_window_scaling = 1
I tam jeszcze jest jedna opcja przestarzała — base_reachable_time:
base_reachable_time (since Linux 2.2) Once a neighbor has been found, the entry is considered to be valid for at least a random value between base_reachable_time/2 and 3*base_reachable_time/2. An entry's validity will be extended if it receives positive feedback from higher level protocols. Defaults to 30 seconds. This file is now obsolete in favor of base_reachable_time_ms. base_reachable_time_ms (since Linux 2.6.12) As for base_reachable_time, but measures time in milliseconds. Defaults to 30000 milliseconds.
Ostatnio edytowany przez morfik (2014-05-01 11:30:43)
Offline
Doszukałem się w końcu o co chodzi z tymi wartościami w `all`.
As far as I researched for IPv4 some time ago, the "default" value gets
copied to newly created interfaces only once.
"all" on the other hand allways gets applied in addition to the current
setting, but it depends on the exact setting, if its ORed, ANDed, or
whatevered:
log_martians OR
accept_redirects AND
forwarding ?
mc_forwarding AND
medium_id
proxy_arp OR
shared_media OR
secure_redirects OR
send_redirects OR
bootp_relay AND
accept_source_route AND
rp_filter AND
arp_filter OR
arp_announce MAX
arp_ignore MAX
arp_accept
app_solicit
disable_policy
disable_xfrm
tag
(see include/linux/inetdevice.h:83 for IN_DEV_{AND,OR,MAX}CONF)
Putting a new value in "all" doesn't change the value you read from
"$interface", but it only gets computed and used internally.
Offline
Strony: 1