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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-06-16 17:13:47

  Novi-cjusz - Użytkownik

Novi-cjusz
Użytkownik
Zarejestrowany: 2013-03-05

Moje pierwsze regolki iptables

Kod:

# 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)


------------------------------------------------------------------------------------
"Inveniam viam aut faciam" : I will either find a way, or I shall make one
"Złoto to pieniądz królów, srebro to pieniądz dżentelmenów, barter to pieniądz chłopów ale dług to pieniądz niewolników."

Offline

 

#2  2015-06-16 17:58:06

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Moje pierwsze regolki iptables

2001

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

Offline

 

#3  2015-06-16 18:42:51

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Moje pierwsze regolki iptables

[b]@Novi-cjusz[/b]

Kod:

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 [b]iptables[/b], to i tak Ci się przydadzą jak łysemu grzebień.

Sznurek:
https://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netfilter/iptables/przyk%C5%82ady

Ostatnio edytowany przez Jacekalex (2015-06-16 18:43:33)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2015-06-16 19:00:41

  Novi-cjusz - Użytkownik

Novi-cjusz
Użytkownik
Zarejestrowany: 2013-03-05

Re: Moje pierwsze regolki iptables

Dziekuje za kazda konstruktywna uwage.

KOMP nie zdefiniowane[/quote]
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[/quote]
Czy firewall stanu bedzie dzialal bez tych regolek?

Antyspoofing
(estetyka)
tutaj pewnie przez zmienną chcesz podawać adres[/quote]
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ć.[/quote]
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 ;-)


------------------------------------------------------------------------------------
"Inveniam viam aut faciam" : I will either find a way, or I shall make one
"Złoto to pieniądz królów, srebro to pieniądz dżentelmenów, barter to pieniądz chłopów ale dług to pieniądz niewolników."

Offline

 

#5  2015-06-16 19:07:40

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Moje pierwsze regolki iptables

2002

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

Offline

 

#6  2015-06-16 19:12:31

  Novi-cjusz - Użytkownik

Novi-cjusz
Użytkownik
Zarejestrowany: 2013-03-05

Re: Moje pierwsze regolki iptables

@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[/quote]
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)


------------------------------------------------------------------------------------
"Inveniam viam aut faciam" : I will either find a way, or I shall make one
"Złoto to pieniądz królów, srebro to pieniądz dżentelmenów, barter to pieniądz chłopów ale dług to pieniądz niewolników."

Offline

 

#7  2015-06-16 19:19:03

  Novi-cjusz - Użytkownik

Novi-cjusz
Użytkownik
Zarejestrowany: 2013-03-05

Re: Moje pierwsze regolki iptables

[quote=uzytkownikubunt][quote=Novi-cjusz]

# Wlaczenie regol firewalla stanu.
w tym miejscu większość połączeń akceptujesz, a jednak chociaż w output na końcu skryptu się powtarza[/quote]
Czy firewall stanu bedzie dzialal bez tych regolek?[/quote]
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)[/quote]

Wpuszczenie (accept) kończy przetwarzanie pakietu.[/quote]
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/Netfilter/iptables/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[/quote]
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!

Kod:

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)


------------------------------------------------------------------------------------
"Inveniam viam aut faciam" : I will either find a way, or I shall make one
"Złoto to pieniądz królów, srebro to pieniądz dżentelmenów, barter to pieniądz chłopów ale dług to pieniądz niewolników."

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.010 seconds, 13 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00006 SET NAMES latin2
0.00140 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='3.128.94.255' WHERE u.id=1
0.00078 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.128.94.255', 1728228157)
0.00053 SELECT * FROM punbb_online WHERE logged<1728227857
0.00068 DELETE FROM punbb_online WHERE ident='3.144.97.187'
0.00082 DELETE FROM punbb_online WHERE ident='85.208.96.212'
0.00061 SELECT topic_id FROM punbb_posts WHERE id=288152
0.00006 SELECT id FROM punbb_posts WHERE topic_id=27490 ORDER BY posted
0.00090 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=27490 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00088 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=27490 ORDER BY p.id LIMIT 0,25
0.00094 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27490
Total query time: 0.00786 s