Nastavení IPtables na serveru s Debianem

uf

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #15 kdy: 18. 05. 2018, 15:15:02 »
Klidně bych to nechal jako spustitelný skript v /etc/network/if-pre-up.d/.

Nestačí jedno "iptables -F"?

Ohledně VPN: Neměl by být port 1194 přístupný spíš z NEvpn adres? Přece navazování se tvoří na reálných IP, teprve po navázaní se vytvoří rozhraní s 10.8.0.1. Pro povolení provozu vpn by mohla stačit (záleží na üvaze) i jen vazba na příslušné rozhraní (iptables -A INPUT -i vpn -j ACCEPT)


pb.

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #16 kdy: 18. 05. 2018, 15:41:35 »
ufw to fakt nie preboha. to je pre lopaty.

Nepoužívám ufw (používám shorewall), takže to nedovedu zhodnotit. Každopádně je dobré mít alespoň základní ponětí o iptables. Ale dělat takhle jednoduchý fw v iptables může být... ztráta času (jo, cosi se naučíte - z tohoto pohledu to ztráta času není).

Dělat pak v iptables složitější firewall s různými zónami a nedejbože v IPv4 je šílenost. Některá speciální pravidla musíte aplikovat do mnoha směrů a tabulek (nat, prerouting, postrouting, forward). Stačí jeden překlep nebo opomenutí a máte na několik hodin o zábavu vystaráno.

Mezi speciální pravidla můžete započítat i takovou trivialitu, jako je přístup k poště v demilitarizované zóně, pokud chcete, aby se vám mohli pohybovat uživatelé libovolně po internetu, ve vnitřní síti nebo na různých pobočkách firmy.

Je to jak s programováním: v assembleru uděláte všechno, cokoliv jiného je pro lopaty. Ale JavaScript (Java, C, C++, PHP — dle vlastního výběru) bude v libovolných rukách efektivnější a bezpečnější.

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #17 kdy: 20. 05. 2018, 11:13:13 »
Tady to jede furt dokola... Odchozí port 20 je vám tam zcela k hounu, a naopak bez příslušného conntrack modulu si ani neškrtnete.



Ano takze dalsi zadrhel ?
Priznam sa, ze zatial som tie pravidla netestoval  ;) len si ich pripravujem a rad by som ich skonzultoval.
Co sa tyka FTP, tak FTP server budem vyuzivat len ja. Pouzity FTP server je ProFTPd na ktorom je mozne nastavit v proftpd.conf aj
Kód: [Vybrat]
PassivePorts 51001 51002kde by som este povolil 2 dalsie vysoke porty, ale toto asi nebude idalne riesenie.
Nasiel som toto https://unix.stackexchange.com/questions/93554/iptables-to-allow-incoming-ftp
Takze chce to zaviest modul  ip_conntrack_ftp (resp  nf_conntrack_ftp) a dalsie pravidla
Kód: [Vybrat]
modprobe ip_conntrack_ftp
iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"
Alebo ako je uvedene dalej
Kód: [Vybrat]
lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Kde by som si upravil pri inpute -s na 192.168.1.4 a -d 192.168.1.100 a pri outpute -s na 192.168.1.100 a -d 192.168.1.4 (pokial tomu spravne rozumiem (IP servera 192.168.1.100 a moja ip (klient) 192.168.1.4).
Klidně bych to nechal jako spustitelný skript v /etc/network/if-pre-up.d/.

Nestačí jedno "iptables -F"?

Ohledně VPN: Neměl by být port 1194 přístupný spíš z NEvpn adres? Přece navazování se tvoří na reálných IP, teprve po navázaní se vytvoří rozhraní s 10.8.0.1. Pro povolení provozu vpn by mohla stačit (záleží na üvaze) i jen vazba na příslušné rozhraní (iptables -A INPUT -i vpn -j ACCEPT)

Ano stacilo by pouzit F bez retazcov, vtedy to vycisti vsetky + zrusil som pri prihlasovani sa na openvp 1194 -s 10.8.0.0/24
Ping tam je  (NTP a DNS by sa asi tiez zisiel)
Nemělo by to být spíše takto?

iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 1194 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Koukám špatně, nebo z toho stroje pak nepůjde udělat nic (nepojede ntp, dns, ping, ... cokoliv původem v tom stroji)?
ping by tam mal byt. Takze este pridam ntp, dns.

Takze teraz by skript mohol vyzerat nejak takto
Kód: [Vybrat]
#!/bin/bash
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.4 -j ACCEPT
modprobe nf_conntrack_ftp
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --sport 123 -j ACCEPT #povolit NTP
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS udp
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS tcp
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Nuz ale ako by to fungovalo neviem  :)

pb.

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #18 kdy: 20. 05. 2018, 15:14:51 »
Takze teraz by skript mohol vyzerat nejak takto
Kód: [Vybrat]
#!/bin/bash
....
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
...
Nuz ale ako by to fungovalo neviem  :)
[/quote]

A co třeba fragmentace? Protokol ICMP není jenom ping, potřebujete toho povolit více. Takhle to může dopadnout tak, že za týden se budete ptát: "Přes VPN se přihlásím, ale když udělám ls -l, tak spojení zamrzne".

uf

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #19 kdy: 21. 05. 2018, 09:51:18 »
>>> Ping tam je  (NTP a DNS by sa asi tiez zisiel)

>> Koukám špatně, nebo z toho stroje pak nepůjde udělat nic (nepojede ntp, dns, ping, ... cokoliv
>> původem v tom stroji)?

> ping by tam mal byt. Takze este pridam ntp, dns.

Takze teraz by skript mohol vyzerat nejak takto
Kód: [Vybrat]
#!/bin/bash
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.4 -j ACCEPT
modprobe nf_conntrack_ftp
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.100 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 192.168.1.4 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --sport 123 -j ACCEPT #povolit NTP
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS udp
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS tcp
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Nuz ale ako by to fungovalo neviem  :)
[/quote]

----------- Tady je teprve moje reakce ----------

No já tam právě nevidím ani ping, ani dns atd., když má žádost původ v tomto PC. Tyhle všechny INPUTy povolí pakety odjinud dovnitř (pokud se týkají pingu, dns apod.), ale ten PC si nemůže zažádat o čas, poslat dotaz na DNS, ..., protože OUTPUT = DROP (a nespadá to do related ani established) a ta žádost vůbec neodejde.
Být tebou, začal bych s původním "iptables -P OUTPUT ACCEPT".

Nahoře máš
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
jakékoliv následující definice podmnožin jsou zbytečné
(iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS udp
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS tcp)

A "modprobe" bych sem určitě nemíchal, ve skriptu by to prošlo, ale jestli si chceš pravidla ukládat v tom zpracovaném tvaru, tak těžko (podle mne). Tip pro tebe: /etc/modules.


Re:Nastavení IPtables na serveru s Debianem
« Odpověď #20 kdy: 21. 05. 2018, 15:08:53 »
OK, takze znova trochu prerobime (mozno by to uz chcelo nejaky verzovaci system, aby v tom nebol taky bor*el :) )
Pokial dobre viem a malo by to tak byt, tak ked pouzijem pravidla
Kód: [Vybrat]
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Tak prve hovori o tom, ze akakolvek komunikacia z vnutra bude povolena a druhe pravidlo (stavove) hovori, ze vsetka komunikacia zapocata z vnutra  ocakavajuca odpoved z vonka bude prijata (contrack si o tom uchovava info a prepusta to co bolo nadviazane  a zavedene).  V contrack sa daju nastavovat nejake parametre, limity, timeouty a pod .... takze napr. ak by paket z nadviazanej komunikacie dorazil, ale z casovym oneskorenim, alebo nejaky zatulany paket, bude vyhlaseny za invalid a mal by byt zahodeny.
Kód: [Vybrat]
iptables -A INPUT -m state --state INVALID -j DROP
Nahoře máš
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
jakékoliv následující definice podmnožin jsou zbytečné
(iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS udp
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS tcp)

A "modprobe" bych sem určitě nemíchal, ve skriptu by to prošlo, ale jestli si chceš pravidla ukládat v tom zpracovaném tvaru, tak těžko (podle mne). Tip pro tebe: /etc/modules.

Preco DNS port 53 je zbytocny ?
Aby tu nebol velky bordel, tak asi to ulozim sem

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #21 kdy: 21. 05. 2018, 15:26:31 »

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
jakékoliv následující definice podmnožin jsou zbytečné
(iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS udp
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT #DNS tcp)

Pretoze uz v  prvom INPUT pravidle pustas RELATED,ESTABLISHED komunikaciu, cize odpoved z DNS dotazu Ti pusti dane pravidlo a tie dalsie sa uz ani nevyhodnocuju..

iptables -nvL  a vsimaj si countery..

Dalsia vec pouzivaj iptables-save > pravidla a iptables-restore <  pravidla... Lepsie sa to upravuje ako taketo skripty. Dobra vec je tiez iptables-apply < pravidla, ktora Ti loadne pravidla a ak sa do 10 sekund nestlaci klavesa tak ist vrati naspat.(Pre pripad, ze si sa tymi pravidlami odrezal)

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #22 kdy: 21. 05. 2018, 19:47:58 »
V tom pripade nepotrebujem ani pravidlo pre cas NTP.
takze tieto pravidla mozem odmazat
Co sa tyka loadnutia pravidiel, to zatial neriesim, skusam to na LXC, takze v pripade odrezania rebootujem LXC.
Zatial je vsetko v stadiu pomaleho testovania. Az ked to bude ako tak vychytane, tak potom zacnem riesit ako spustat pravidla pri boote
update_rev(1)
« Poslední změna: 21. 05. 2018, 19:51:14 od darebacik »

pb.

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #23 kdy: 21. 05. 2018, 21:18:36 »
Ještě jednou:
ICMP není jen ping a musíte toho povolit více. Už jsem vzpomínal fragmentaci, abyste se nedivil, až vám vpn zkrátí mtu, a spojení vám bude chodit/nechodit. Když se vám to stane, budete hledat řešení týden nebo dva. Jako další mě napadá TTL. Nebo přesměrování na jiný router. To jsou zásadní věci nutné pro fungování sítě. Teď to máte všechno zakázané.

Zapomeňte na to, že ufw je pro lopaty a podívejte se, jak se to řeší tam. Chápu, že si chcete dělat vše ručně, ale nikdo vám nebrání opisovat.

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Nastavení IPtables na serveru s Debianem
« Odpověď #24 kdy: 21. 05. 2018, 21:23:20 »
Rozebehni si ufw firewall, rozchod to pod nim, a pak si muzes pravidla ulozit a prostudovat/upravit. Pripadne ufw odinstalovat/zapomenout na neho

Treba ti aspon tohle pomuze pro inspiraci:

Kód: [Vybrat]
~# iptables-save
# Generated by iptables-save v1.6.0 on Mon May 21 21:21:02 2018
*nat
:PREROUTING ACCEPT [11893633:779635282]
:INPUT ACCEPT [1916299:74516571]
:OUTPUT ACCEPT [1403492:1042277230]
:POSTROUTING ACCEPT [6427205:1214224191]
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.99.99.0/24 -o vmbr0 -j MASQUERADE
COMMIT
# Completed on Mon May 21 21:21:02 2018
# Generated by iptables-save v1.6.0 on Mon May 21 21:21:02 2018
*filter
:INPUT DROP [67:4047]
:FORWARD ACCEPT [5:200]
:OUTPUT ACCEPT [0:0]
:f2b-sshd - [0:0]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-not-local - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-skip-to-policy-forward - [0:0]
:ufw-skip-to-policy-input - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-input - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-output - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A f2b-sshd -j RETURN
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j ACCEPT
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-forward -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-forward -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 8006 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 443 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 5666 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
COMMIT
# Completed on Mon May 21 21:21:02 2018

Kód: [Vybrat]
~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8006/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
5666/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
8006/tcp (v6)              ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
5666/tcp (v6)              ALLOW       Anywhere (v6)
« Poslední změna: 21. 05. 2018, 21:25:08 od Vilith »

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #25 kdy: 22. 05. 2018, 12:32:57 »
Ještě jednou:
ICMP není jen ping a musíte toho povolit více. Už jsem vzpomínal fragmentaci, abyste se nedivil, až vám vpn zkrátí mtu, a spojení vám bude chodit/nechodit. Když se vám to stane, budete hledat řešení týden nebo dva. Jako další mě napadá TTL. Nebo přesměrování na jiný router. To jsou zásadní věci nutné pro fungování sítě. Teď to máte všechno zakázané.

Zapomeňte na to, že ufw je pro lopaty a podívejte se, jak se to řeší tam. Chápu, že si chcete dělat vše ručně, ale nikdo vám nebrání opisovat.
Nieco som si o tom nasiel a odporuca sa nastavit
Kód: [Vybrat]
iptables -A INPUT -p icmp --fragment -j DROP
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type fragmentation -needed -j ACCEPT
iptables -A INPUT -p ICMP -j DROP
iptables -A OUTPUT -p ICMP -j DROP
Kedze output mam nastavene na accept, tak predpokladam, ze outputy nepotrebujem
Kód: [Vybrat]
iptables -A INPUT -p icmp --fragment -j DROP
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p ICMP -j DROP
Rozebehni si ufw firewall, rozchod to pod nim, a pak si muzes pravidla ulozit a prostudovat/upravit. Pripadne ufw odinstalovat/zapomenout na neho

Treba ti aspon tohle pomuze pro inspiraci:

Kód: [Vybrat]
~# iptables-save
# Generated by iptables-save v1.6.0 on Mon May 21 21:21:02 2018
*nat
:PREROUTING ACCEPT [11893633:779635282]
:INPUT ACCEPT [1916299:74516571]
:OUTPUT ACCEPT [1403492:1042277230]
:POSTROUTING ACCEPT [6427205:1214224191]
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.99.99.0/24 -o vmbr0 -j MASQUERADE
COMMIT
# Completed on Mon May 21 21:21:02 2018
# Generated by iptables-save v1.6.0 on Mon May 21 21:21:02 2018
*filter
:INPUT DROP [67:4047]
:FORWARD ACCEPT [5:200]
:OUTPUT ACCEPT [0:0]
:f2b-sshd - [0:0]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-not-local - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-skip-to-policy-forward - [0:0]
:ufw-skip-to-policy-input - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-input - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-output - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A f2b-sshd -j RETURN
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j ACCEPT
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-forward -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-forward -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 8006 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 443 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 5666 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
COMMIT
# Completed on Mon May 21 21:21:02 2018

Kód: [Vybrat]
~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8006/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
5666/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
8006/tcp (v6)              ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
5666/tcp (v6)              ALLOW       Anywhere (v6)
Ja neviem ci ufw je to prave orechove. Ako som pisal na zaciatku ufw som pouzival do teraz, ale chcem sa viac orientovat na iptables
update_(rev2)

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Nastavení IPtables na serveru s Debianem
« Odpověď #26 kdy: 22. 05. 2018, 12:47:37 »
ufw neni zadna magie, ufw je jen snadneni prostredi pro nastavovani iptables pravidel.

Pokud se v iptables neorientujes, vygeneruj si sva vlastni zakladni pravidla v ufw, uloz si je,  a nasledne si je uprav.

Pak muzes ufw odinstalovat a zapomenout na nej

Nebo dal zkus vymyslet kolo...

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #27 kdy: 22. 05. 2018, 17:09:21 »
Radsej ostanem pri nastavovani netfiltra pomocou iptables  ;)
Prve testy:
zatial spusteny len skript s pravidlami.
Vyzera to OK
Testoval som len FTP spojenie z 192.168.1.4 a to fungovalo OK (treba vsak nastavit vo filezilla na aktivny rezim prenosu).
Zatial som nic nelogoval, ani nekontroloval pomocou tcpdump (pretoze to si musim este nastudovat) ale skusil som sa pripojit z inej ip adresy ako je 192.168.1.4 a tam sa ani len nesnazilo o pripojenie, cize firewall funguje dobre.
Zaujmave je, ze mudul conntrack_ftp som nemusel vobec nacitavat a funguje to aj bez neho.
Ak si po reboote VM vipisem moduly
Kód: [Vybrat]
Module                  Size  Used by
tun                    28672  2
bochs_drm              20480  1
ttm                    98304  1 bochs_drm
drm_kms_helper        155648  1 bochs_drm
pcspkr                 16384  0
joydev                 20480  0
evdev                  24576  1
ftdi_sio               53248  2
usbserial              49152  5 ftdi_sio
shpchp                 36864  0
drm                   360448  4 bochs_drm,ttm,drm_kms_helper
sg                     32768  0
serio_raw              16384  0
virtio_balloon         16384  0
button                 16384  0
ip_tables              24576  0
x_tables               36864  1 ip_tables
autofs4                40960  2
ext4                  585728  3
crc16                  16384  1 ext4
jbd2                  106496  1 ext4
crc32c_generic         16384  4
fscrypto               28672  1 ext4
ecb                    16384  0
glue_helper            16384  0
lrw                    16384  0
gf128mul               16384  1 lrw
ablk_helper            16384  0
cryptd                 24576  1 ablk_helper
aes_x86_64             20480  0
mbcache                16384  4 ext4
dm_mod                118784  9
hid_generic            16384  0
usbhid                 53248  0
hid                   122880  2 hid_generic,usbhid
sd_mod                 49152  3
sr_mod                 24576  0
cdrom                  61440  1 sr_mod
ata_generic            16384  0
virtio_net             32768  0
virtio_scsi            20480  2
psmouse               135168  0
ata_piix               36864  0
ehci_pci               16384  0
uhci_hcd               45056  0
ehci_hcd               81920  1 ehci_pci
virtio_pci             24576  0
virtio_ring            24576  4 virtio_net,virtio_scsi,virtio_balloon,virtio_pci
virtio                 16384  4 virtio_net,virtio_scsi,virtio_balloon,virtio_pci
i2c_piix4              24576  0
libata                249856  2 ata_piix,ata_generic
usbcore               253952  6 usbhid,ehci_hcd,uhci_hcd,ftdi_sio,usbserial,ehci_pci
usb_common             16384  1 usbcore
scsi_mod              225280  5 sd_mod,virtio_scsi,libata,sr_mod,sg
floppy                 69632  0
tak tam ziadny conntrack neni.
Ak pustim skript z pravidlami (ale conntrack nespustam) tak sa tam uz conntrack objavi + niekolko dalsich modulov navyse (min. prvych 6).
Dovod neviem (je mozne, ze zavedenim niektorych pravidiel firewallu sa automaticky natiahnu aj moduly ???)
Kód: [Vybrat]
Module                  Size  Used by
nf_conntrack_ipv4      16384  6
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4
xt_tcpudp              16384  8
xt_conntrack           16384  6
nf_conntrack          114688  2 nf_conntrack_ipv4,xt_conntrack
iptable_filter         16384  1
tun                    28672  2
bochs_drm              20480  1
ttm                    98304  1 bochs_drm
drm_kms_helper        155648  1 bochs_drm
pcspkr                 16384  0
joydev                 20480  0
evdev                  24576  1
ftdi_sio               53248  2
usbserial              49152  5 ftdi_sio
shpchp                 36864  0
drm                   360448  4 bochs_drm,ttm,drm_kms_helper
sg                     32768  0
serio_raw              16384  0
virtio_balloon         16384  0
button                 16384  0
ip_tables              24576  1 iptable_filter
x_tables               36864  4 ip_tables,iptable_filter,xt_tcpudp,xt_conntrack
autofs4                40960  2
ext4                  585728  3
crc16                  16384  1 ext4
jbd2                  106496  1 ext4
crc32c_generic         16384  4
fscrypto               28672  1 ext4
ecb                    16384  0
glue_helper            16384  0
lrw                    16384  0
gf128mul               16384  1 lrw
ablk_helper            16384  0
cryptd                 24576  1 ablk_helper
aes_x86_64             20480  0
mbcache                16384  4 ext4
dm_mod                118784  9
hid_generic            16384  0
usbhid                 53248  0
hid                   122880  2 hid_generic,usbhid
sd_mod                 49152  3
sr_mod                 24576  0
cdrom                  61440  1 sr_mod
ata_generic            16384  0
virtio_net             32768  0
virtio_scsi            20480  2
psmouse               135168  0
ata_piix               36864  0
ehci_pci               16384  0
uhci_hcd               45056  0
ehci_hcd               81920  1 ehci_pci
virtio_pci             24576  0
virtio_ring            24576  4 virtio_net,virtio_scsi,virtio_balloon,virtio_pci
virtio                 16384  4 virtio_net,virtio_scsi,virtio_balloon,virtio_pci
i2c_piix4              24576  0
libata                249856  2 ata_piix,ata_generic
usbcore               253952  6 usbhid,ehci_hcd,uhci_hcd,ftdi_sio,usbserial,ehci_pci
usb_common             16384  1 usbcore
scsi_mod              225280  5 sd_mod,virtio_scsi,libata,sr_mod,sg
floppy                 69632  0

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Nastavení IPtables na serveru s Debianem
« Odpověď #28 kdy: 22. 05. 2018, 17:17:37 »
Proc to delat jednoduse pomoci iptables-saveiptables-restore, kdyz si na to umim napsat script :(

Stastny clovek, ktery ma kupu volneho casu...

uf

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #29 kdy: 23. 05. 2018, 09:29:21 »
Proc to delat jednoduse pomoci iptables-saveiptables-restore, kdyz si na to umim napsat script :(

Stastny clovek, ktery ma kupu volneho casu...

Co vidíš špatného na skriptu? Taky to tak (skriptem) dělám. Skript se mi snadno upravuje, můžu si tam dopsat komentáře, ..., pak ho spustím a je aktualizováno.