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
# Skrypt dla workstation na Debianie 8, ze szczegolnym uwzglednieniem bezpieczenstwa tzn: # selektywny INPUT, rejestr skanow, logi. #!/bin/bash # moduly Kernela $mod ip_tables $mod ip_conntrack $mod iptable_filter $mod iptable_nat $mod iptable_mangle $mod ipt_LOG $mod ipt_limit $mod ipt_state $mod ipt_MASQUERADE $mod ipt unclean # Wlacza logowanie dziwnych (spoofed, source routed, redirects) pakietów /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians ## Czyszczenie starych reguł ## iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X ## Polityka bezpieczeństwa ## iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP ## Reguły dla pętli zwrotnej - loopback (zawsze pierwsze) ## iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -o lo -j ACCEPT iptables - A OUTPUT -o lo -j ACCEPT ## Wlaczenie regol firewalla stanu. ## iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Upuszczanie wszystkich pakietow ktore poruszaja sie z/do 127.0.0.1 # nie przez petle zwrotna iptables -A INPUT -i ! lo -s 127.0.0.1 -j DROP iptables -A INPUT -i ! lo -d 127.0.0.1 -j DROP iptables -A OUTPUT -o ! lo -s 127.0.0.1 -j DROP iptables -A OUTPUT -o ! lo -d 127.0.0.1 -j DROP # Upuszczanie pakietow INVALID iptables -A INPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP ## INPUT ## # Akceptacja polaczen powiazanych do istniejacych polaczen. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # przeciwdzialanie rekonfiguracji z zewnatrz # iptables -A INPUT -s $KOMP -j ACCEPT # Pingi # iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT #odpowiedz na echo request iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT #żądanie echa iptables -A INPUT -p icmp --icmp-type network-unreachable -j ACCEPT #siec nieosiągalna iptables -A INPUT -p icmp --icmp-type host-unreachable -j ACCEPT #host nieosiągalny iptables -A INPUT -p icmp --icmp-type port-unreachable -j ACCEPT #port nieosiągalny iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT #wymagana fragmentacja # Upuszczanie pakietow “bogus” iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP # Ochrona przed atakiem IDENT i SOCK SCANNING # iptables -A INPUT -p tcp –dport 113 -j REJECT –reject-with icmp-port-unreachable iptables -A INPUT -p tcp –dport 1080 -j REJECT –reject-with icmp-port-unreachable # Logowanie zablokowanych prob polaczen: iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Stworzenie nowego lancucha o nazwie 'LOGNEW' iptables -N LOGNEW iptables -I LOGNEW 1 -m limit --limit 2/min -j LOG --log-prefix "iptables-new: " # iptables -I LOGNEW 1 -m iprange --src-range 127.0.0.1-127.0.0.255 -j RETURN # disables logging loopbacks #iptables -I LOGNEW 1 -m iprange --dst-range 223.0.0.1-223.0.0.255 -j RETURN # disables logging multicasts #iptables -I LOGNEW 1 -m iprange --dst-range 224.0.0.1-224.0.0.255 -j RETURN # disables logging multicasts # Przekierowanie wszystkich pakietow NEW do lancucha 'LOGNEW' iptables -I INPUT 1 -m state --state NEW -j'LOGNEW ' # Logowanie wszystkich NEW polaczen: iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New Connection: "iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New Connection: " # Wykrycie i odpisanie w logach róby skanowania TCP SYN: iptables -A INPUT -m conntrack –cstate NEW -p tcp -tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j LOG –log-level info -log-prefix „uwaga! ktoś skanuje tcp syn!” # logowanie skanów typu TCP FIN np. wymaga analogicznej regułki: iptables -A INPUT -m conntrack –cstate NEW -p tcp -tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j LOG –log-level info -log-prefix „uwaga! ktoś skanuje tcp fin!” # logowanie skanów typu TCP NULL. Tutaj nie jest ustawiana żadna flaga, więc za pomocą opcji INVALID poinformujemy iptables – że pakiet nie należy do żadnego prawidłowo nawiązanego połączenia: iptables -A INPUT -m conntrack –cstate INVALID -p tcp -tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j LOG –log-level info -log-prefix „uwaga! skany tcp NULL!” # Możemy również (pod warunkiem że nie udostępniamy żadnych usług) wycinać takie połączenia: iptables -A INPUT -m conntrack –cstate NEW -p tcp -tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP # Kazdy kto nas skanuje zostanie zablokowany na caly dzien: iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP # Po uplywie dnia zostanie usuniety z “listy skanujacych” iptables -A INPUT -m recent --name portscan --remove iptables -A FORWARD -m recent --name portscan –remove # Regoly, ktore dodaja skanujacych do “ listy skanerow “ I zapisuja proby skanow: iptables -A INPUT -p tcp -m tcp --dport 139 \ -m recent --name portscan --set -j LOG --log-prefix "Portscan:" iptables -A INPUT -p tcp -m tcp --dport 139 \ -m recent --name portscan --set -j DROP iptables -A FORWARD -p tcp -m tcp --dport 139 \ -m recent --name portscan --set -j LOG --log-prefix "Portscan:" iptables -A FORWARD -p tcp -m tcp --dport 139 \ -m recent --name portscan --set -j DROP # Upuszczanie polaczen nie zainicjowanych przez naszego hosta: iptables -A INPUT -p tcp --syn -j DROP # Upuszczanie polaczen ze statusem: NEW, INVALID - nie zainicjowanych przez nasz komputer: -A INPUT -i eth1 -m state --state NEW,INVALID -j DROP # Uszczelnienie reguł dla nowych połączeń iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j LOG --log-level debug --log-prefix "IPT BAD NEW: " iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP # Test czy można wyłączyć sfragmetnowane pakiety. iptables -A INPUT -i eth0 -f -j LOG --log-level debug --log-prefix "IPT FRAGMENTS: " iptables -A INPUT -i eth0 -f -j DROP # Upuszczanie nietypowych pakietow (eksperymentalny modul “unclean”) iptables -A INPUT -j DROP -m unclean # Upuszczanie pakietow RFC1918 class network (min, spoofed) iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 169.254.0.0/16 -j DROP iptables -A INPUT -s 192.168.0.0/16 -j DROP iptables -A INPUT -s 172.16.0.0/12 -j DROP iptables -A INPUT -s 127.0.0.0/8 -j DROP iptables -A INPUT -s 224.0.0.0/4 -j DROP iptables -A INPUT -d 224.0.0.0/4 -j DROP iptables -A INPUT -s 240.0.0.0/5 -j DROP iptables -A INPUT -d 240.0.0.0/5 -j DROP iptables -A INPUT -s 0.0.0.0/8 -j DROP iptables -A INPUT -d 0.0.0.0/8 -j DROP iptables -A INPUT -d 239.255.255.0/24 -j DROP iptables -A INPUT -d 255.255.255.255 -j DROP # Antyspoofing # iptables -A INPUT -i eth0 -s 111.222.333.444 -j DROP #Pakiety z adr. źródłowycm ustawionym na nasz odrzucamy # Pakiety z adresow nierutowalnych, multicast i zarezerwowanych iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP # class A iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP # class B iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP # class C iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP # multicast iptables -A INPUT -i eth0 -d 224.0.0.0/4 -j DROP # multicast iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP # reserved iptables -A INPUT -i eth0 -d 127.0.0.0/8 -j DROP # na eth0 do loopbacka? iptables -A INPUT -i eth0 -d 111.222.333.255 -j DROP # broadcasty iptables -A INPUT -i eth1 -p udp -d 192.168.1.255 --dport 137:138 -j DROP ## FORWARD ## # Powiazane przepuszczamy # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT # Ochrona przed atakiem “Syn-flood” # iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT # Logowanie pakietow SYN I ACK czyli nawiazanych polaczen:# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix ' LOGNEW ' ## OUTPUT ## # Powiazane przepuszczamy # iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # regoly logowania polaczen z modulem conntrack# iptables -I OUTPUT -m conntrack --ctstate NEW,INVALID -j LOG --log-prefix "OUTPUT" # Upuszczanie wszystkich wychodzacych pakietow, ktore nie maja zrodla w naszym komputerze # iptables -A OUTPUT -o eth0 -s ! $MYIP -j DROP # zamknięcie wykrytej ostatnio luki w iptables # iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP
Staralem sie, naprawde . Prosze o korekty i nad czym musze jeszcze popracowac.
Ostatnio edytowany przez Novi-cjusz (2015-06-16 17:24:17)
Offline
2001
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:19:13)
Offline
@Novi-cjusz
iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
To jest na desktopa, a te wypociny ściągnięte z netu wywal, jak nie rozumiesz logiki działania iptables, to i tak Ci się przydadzą jak łysemu grzebień.
Sznurek:
https://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netf … rzyk%C5%82ady
Ostatnio edytowany przez Jacekalex (2015-06-16 18:43:33)
Offline
Dziekuje za kazda konstruktywna uwage.
KOMP nie zdefiniowane
w tym miejscu ma byc IP static, a jak zrobic z IP dynamic???
# Wlaczenie regol firewalla stanu.
w tym miejscu większość połączeń akceptujesz, a jednak chociaż w output na końcu skryptu się powtarza
Czy firewall stanu bedzie dzialal bez tych regolek?
Antyspoofing
(estetyka)
tutaj pewnie przez zmienną chcesz podawać adres
Mea culpa, zaraz poprawiam.
# Upuszczanie pakietow INVALID
to chcesz przed akceptowaniem, tylko że jeszcze przed akceptowaniem trzeba dać invalid z jakąś flagą, by nie poblokować sobie dostępu do ip, które podczas zamykania połączenia wysyłały w miarę poprawne pakiety, a mimo wszystko były uznawane przez invalid za niepoprawne. Szczerze mówiąc nie pamiętam dokładnie jakie to były pakiety, pewnie coś z RST. Możesz nie ustawiać najpierw tego przed invalid i potem z logów odczytać.
Musze poczytac
Ps. Zalozenie mialem takie zeby:
- blokowac wszystko na starcie
- przepuszczac tylko polaczenia zainicjowane i nawiazujace do nich.
- blokowac proby nawiazania polaczenia z zewnatrz.
- upuszczac wszystkie: bogus, martians, unclean, redirected, spoofed.
- logowac polaczenia NEW w lancuchu IN i OUT.
- Komp nie dziala jako router czyli FORWARD mozna zamknac, chociaz tu tez jest do nauki.
- blokowac jak najwiecej skanow i logowac je.
- niemozliwic remote settings modyfication
Bede wdzieczny za inne podpowiedzi. To jest znakomita lamiglowka na ogolny networking ;-)
Offline
2002
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:19:14)
Offline
@Jacekalex
Nikt sie nie urodzil z umiejetnoscia pisania regolek, wszyscy uczyli sie na bledach. Pozwol mi je popelniac, a bedzie ich coraz mniej. Prawdopodobnie nigdy nie osiagne poziomu Twojej wiedzy, ale sama nauka i male kroczki do przodu sprawiaja mi juz wielka radoche.
Jezeli moge prosic z mej skromnej pozycji, to prosze nie obcinaj Twoich odpowiedzi na moje problemy do "nie da sie, masz minimum i wooolna droga" Rozumiem, ze "problemy" beginnersa sa irytujace dla profusa, ale kazda Twoja wypowiedz daje mi bardzo wiele, bo jezeli nawet
nie wszystko rozumiem to jestem pewien ze Ty wiesz co piszesz, a to jest dla mnie drogowskaz.
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Jezeli za pomoca tej regolki przypadkiem! zainicjuje polaczenie z "niezyczliwym" serwerem w Sieci (np, przekierowanie) to nie bede mial wplywu na analityke i logi polaczen. Tak sobie spekuluje, moze sie myle?
Ostatnio edytowany przez Novi-cjusz (2015-06-16 19:51:02)
Offline
uzytkownikubunt napisał(-a):
Novi-cjusz napisał(-a):
# Wlaczenie regol firewalla stanu.
w tym miejscu większość połączeń akceptujesz, a jednak chociaż w output na końcu skryptu się powtarzaCzy firewall stanu bedzie dzialal bez tych regolek?
Wpuszczenie (accept) kończy przetwarzanie pakietu. Kolejne regułki blokujące czy akceptujące dalej nie mają więc sensu. Gdzieś musisz akceptować, ale zwykle na końcu (oprócz tych, które nie mogą/muszą być przez dodatkowe regułki filtrowane)
Wpuszczenie (accept) kończy przetwarzanie pakietu.
Tego nie doczytalem, myslalem, ze tylko DROP konczy przetwarzanie pakietu;-(
Pamietasz co jeszcze oprocz ACCEPT i DROP konczy przetwarzanie pakietu?
Juz znalazlem odpowiedz: https://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netf … ptables/akcje
Zeby uniknac podobnych bledow na przyszlosc:
PRZETWARZANIE
KONCZY NIE KONCZY = 2 akcje
TABLICA LANCU -j --jump/cel/lancuch
/dalsze przetwarzanie/
-g --goto lancuch
/kontynuacja polityki domyslnej/
FILTER INPUT – przekazanie do aplikacji uzytkownika.
ACCEPT FORWARD – przekazany dalej
OUTPUT - wyprowadzony z komputera
RAW
MANGLE Następuje koniec przetwarzania pakietu
NAT
DNAT NAT PREROUTING
OUTPUT
SNAT NAT PREROUTING
OUTPUT
POSTROUTING
DROP FILTER INPUT
FORWARD
OUTPUT
MASQUERADE NAT POSTROUTING
NETMAP NAT PREROUTING
POSTROUTING
OUTPUT
REDIRECT NAT PREROUTING
OUTPUT
REJECT FILTER INPUT
FORWARD
OUTPUT
Formatowanie znieksztalcone, ale i tak zrozumiale.
W jakiej kolejnosci lepiej pisac regolki?
a/ Lancuchy (zgodnie z trasowaniem pakietow, Prerouting,Input,ew Forwarding,Output,Postrouting)
- Tabele
b/Tabele (filter, mangle,nat,raw,)
- Lancuchy
Chcialem sprawdzic funkcjonalnosci Kernela w moim Jessie, i taki komunikat - niestety!
root@debian:/home/anthony# make xconfig make: *** No rule to make target 'xconfig'. Stop. root@debian:/home/anthony# make menuconfig make: *** No rule to make target 'menuconfig'. Stop.
Prosze o dwa slowa pomocy.
Ostatnio edytowany przez Novi-cjusz (2015-06-17 14:05:49)
Offline
Strony: 1