Nastavení IPtables na serveru s Debianem

Nastavení IPtables na serveru s Debianem
« kdy: 16. 05. 2018, 21:30:10 »
Dobry den,
mam nainstalovany debian netinstall v KVM/qemu. Bezi mi tam len FTP server, ssh, openvpn a jedna sluzba na porte 17000.
Chcel by som si to zabezpecit netfilterom cez iptables
Debian (KVM) ma cez bridge realnu Ip adresu 192.168.1.100 (je v sieti 192.168.1.0/24)
Openvpn v debiane ma siet 10.8.0.0/24 (IP servera je teda 10.8.0.1)
Ako teda spravne nastavit iptables ?

Najprv by som asi vycistil vsetky retazce, vymazal vytvorene retazce a nastavil politiku
Kód: [Vybrat]
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
Povolit lokalnu smicku
Kód: [Vybrat]
iptables -A INPUT -i lo -j ACCEPTpovolit naviazane a pribuzne spojenia
Kód: [Vybrat]
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTSSH by som chcel nastavit len na jednu IP a tak isto aj FTP
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s 192.168.1.4 -j ACCEPT
Otvorenie portu 17000 pre kazdeho
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 17000 -j ACCEPTDalej by mal byt otvoreny port pre pakety prichadzajuce na vstupne rozhranie, ktore vytvaraju openvpn spojenie (ano mam to na tcp)
Kód: [Vybrat]
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 1194 -j ACCEPTVsetko ostatne ma byt zahodene (vid politika)

Forwarding sa na tomto stroji nekona.
Zatial som iptables nikdy nenastavoval, len som to trochu studoval a vyhladaval info ako to funguje.
Su v tom nejake chyby ? Bude to pracovat tak ako predpokladam?

Skript by vyzeral takto

Kód: [Vybrat]
#!/bin/bash
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -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
PS iptables je potrebne ulozit do nejakeho suboru ako skript a pri kazdom starte spustat napr. cez rc.local ?
« Poslední změna: 16. 05. 2018, 22:54:55 od Petr Krčmář »


David

Re:nastaveni iptables
« Odpověď #1 kdy: 16. 05. 2018, 22:04:51 »
Zkuste to přes iptables-restore, jak popisuji tady - https://david.cesal.cz/nastaveni-site/ .

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:nastaveni iptables
« Odpověď #2 kdy: 16. 05. 2018, 22:18:27 »
Nebo si nainstaluj firewal ufw a res to v nem. Prijde mi prehlednejsi

Pro slozitejsi pravidla treba viz https://gist.github.com/kimus/9315140
« Poslední změna: 16. 05. 2018, 22:20:24 od Vilith »

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #3 kdy: 17. 05. 2018, 07:56:46 »
Na debianu stačí použít https://packages.debian.org/stretch/admin/netfilter-persistent a nemusíš nic scriptovat

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #4 kdy: 17. 05. 2018, 08:56:33 »
dakujem,
Zkuste to přes iptables-restore, jak popisuji tady - https://david.cesal.cz/nastaveni-site/ .
ked som iptables studoval, tak som si to na konci clanku vsimol https://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-linuxovy-firewall-zaklady-iptables-2 ten clanok je asi 8 rokov stary (ale je vyborne napisany) tak som si myslel ci nebude aj nejaky iny sposob zavedenia (ale toto je tiez v pohode).
Nebo si nainstaluj firewal ufw a res to v nem. Prijde mi prehlednejsi

Pro slozitejsi pravidla treba viz https://gist.github.com/kimus/9315140
UFW som pouzival do teraz. Je to v celku jednoduche aj pre zaciatocnikov, ale chcel som sa naucit viac iptables (mozno by uz bolo vhodnejsie nftables, ale nikdy nie je na skodu ist od zakladu (priznam sa, ze ipchains som neskusal)).
Na debianu stačí použít https://packages.debian.org/stretch/admin/netfilter-persistent a nemusíš nic scriptovat
skusim aj toto.

Ale nejak sa nikto nevyjadril k pravidlam.
Priznam sa, ze KVM pevadzkujem na proxmoxe, kde je pre kazdy VM (aj LXC) klikaci firewall. Mozno by to stacilo poriesit aj tam, ale ako som pisal vyssie chcem sa trocha priucit iptables


Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Nastavení IPtables na serveru s Debianem
« Odpověď #5 kdy: 17. 05. 2018, 10:29:56 »
Na proxmoxu to delam tak, ze pomoci ufw zabezpecim proxmoxe a pak resim kazdou virtualku vlastnimi pravidly v ufw (bridge mod, kazda virtualka ma vlastni verejnou IP, KVM)

S LXC sou nejake problemy, nepouzivam, jen okrajove sleduji https://forum.proxmox.com/forums/proxmox-ve-networking-and-firewall.17/

Hodne lidi pouziva pfSense pro zabezpeceni svych virtualek

jejda

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #6 kdy: 17. 05. 2018, 10:49:17 »
Ještě bych tam přidal ICMP. Takto si ten stroj ani nepingneš.

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #7 kdy: 17. 05. 2018, 12:44:20 »
ufw to fakt nie preboha. to je pre lopaty.

este nezabudni pri tom porte 17000 (aj vsade) pouzit -m state --state NEW, pretoze takto ako to mas ti to prijme aj invalid.  ked uz robis stavovy firewall, tak nech to je allright.

a iptables nemusis ulozit do rc.local. Musis si najst (v centose to je ) /etc/sysconfig/iptables-config a tam mrkni co pisu.. enabluj sluzbu iptables a aj po restarte mas tam pravidla.. ano da sa to riesit aj cez rc.local ale to je skor workaround.
« Poslední změna: 17. 05. 2018, 12:46:27 od snuff1987 »

kmarty

  • ***
  • 194
    • Zobrazit profil
Re:Nastavení IPtables na serveru s Debianem
« Odpověď #8 kdy: 17. 05. 2018, 15:09:19 »
...
Musis si najst (v centose to je ) /etc/sysconfig/iptables-config a tam mrkni co pisu..
...enabluj sluzbu iptables a aj po restarte mas tam pravidla...
A proc myslis ze tazatel psal Debian? Tam sluzbu/initscript "iptables" nenajdes.
Kdysi v nejaky prehistoricky verzi distra to bylo, ale pak to zmenili na pouziti "iptables-restore" v "(pre-)up" v /etc/network/interfaces u (prvniho) iface (pripadne jako scriptik v /etc/network/if-pre-up.d/). V soucasny dobre nevim, protoze ifupdown balik nepouzivam, nahazuju sit pres systemd-networkd a iptables jsem nahazoval svym sakra podobnym nahazovadlem jako je vyse uvedeny "netfilter-persistent".

Kazdopadne v Debianu odkazovat na /etc/sysconfig/... a pripadne servicu iptables... tss tss tss, to si nech pro RH based distra.
« Poslední změna: 17. 05. 2018, 15:14:51 od kmarty »

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #9 kdy: 17. 05. 2018, 15:33:03 »
ufw to fakt nie preboha. to je pre lopaty.

este nezabudni pri tom porte 17000 (aj vsade) pouzit -m state --state NEW, pretoze takto ako to mas ti to prijme aj invalid.  ked uz robis stavovy firewall, tak nech to je allright.

a iptables nemusis ulozit do rc.local. Musis si najst (v centose to je ) /etc/sysconfig/iptables-config a tam mrkni co pisu.. enabluj sluzbu iptables a aj po restarte mas tam pravidla.. ano da sa to riesit aj cez rc.local ale to je skor workaround.
jj na icmp protokol som zabudol, takze poupraveny skript
Kód: [Vybrat]
#!/bin/bash
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 1194 -m state --state NEW -j ACCEPT

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #10 kdy: 17. 05. 2018, 16:11:29 »
doplnujuca otazka,
vsimol som si, ze niekto dropuje aj output retazec.
Je dobre ho dropovat a obdobne pravidla pisat aj pre output, alebo output moze byt accept (nie som odbornik a verim linuxovemu jadru a inym odbornikom, ktori ho napisali a kontroluju (aj ked si vzdy stahujem hotove distro, ale veriiim)).

karlik

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #11 kdy: 17. 05. 2018, 20:17:39 »
jj na icmp protokol som zabudol, takze poupraveny skript
Kód: [Vybrat]
#!/bin/bash
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s 192.168.1.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 1194 -m state --state NEW -j ACCEPT
[/quote]

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

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #12 kdy: 17. 05. 2018, 20:22:55 »
Ano vyzera to rozumne. Ja zatial s iptables velke skusenosti nemam, ale urcite to vyskusam
dik

Lol Phirae

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #13 kdy: 17. 05. 2018, 23:40:56 »
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.



uf

Re:Nastavení IPtables na serveru s Debianem
« Odpověď #14 kdy: 18. 05. 2018, 14:59:13 »
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)?