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



Użytkownik




# 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 DROPStaralem sie, naprawde . Prosze o korekty i nad czym musze jeszcze popracowac.
Ostatnio edytowany przez Novi-cjusz (2015-06-16 17:24:17)
Offline




Zbanowany





2001
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:19:13)
Offline







Podobno człowiek...;)








@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



Użytkownik




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




Zbanowany





2002
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:19:14)
Offline



Użytkownik




@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



Użytkownik




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