Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: darebacik 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
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
iptables -A INPUT -i lo -j ACCEPT
povolit naviazane a pribuzne spojenia
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
SSH by som chcel nastavit len na jednu IP a tak isto aj FTP
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
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
Dalej by mal byt otvoreny port pre pakety prichadzajuce na vstupne rozhranie, ktore vytvaraju openvpn spojenie (ano mam to na tcp)
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 1194 -j ACCEPT
Vsetko 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
#!/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 ?
-
Zkuste to přes iptables-restore, jak popisuji tady - https://david.cesal.cz/nastaveni-site/ .
-
Nebo si nainstaluj firewal ufw a res to v nem. Prijde mi prehlednejsi
Pro slozitejsi pravidla treba viz https://gist.github.com/kimus/9315140
-
Na debianu stačí použít https://packages.debian.org/stretch/admin/netfilter-persistent a nemusíš nic scriptovat
-
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
-
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
-
Ještě bych tam přidal ICMP. Takto si ten stroj ani nepingneš.
-
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.
-
...
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.
-
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
#!/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
-
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)).
-
jj na icmp protokol som zabudol, takze poupraveny skript
#!/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
-
Ano vyzera to rozumne. Ja zatial s iptables velke skusenosti nemam, ale urcite to vyskusam
dik
-
Tady to jede furt dokola... Odchozí port 20 je vám tam zcela k hounu (http://slacksite.com/other/ftp.html), a naopak bez příslušného conntrack modulu si ani neškrtnete.
(http://slacksite.com/images/ftp/activeftp.gif)
(http://slacksite.com/images/ftp/passiveftp.gif)
-
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)?
-
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)
-
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ší.
-
Tady to jede furt dokola... Odchozí port 20 je vám tam zcela k hounu (http://slacksite.com/other/ftp.html), a naopak bez příslušného conntrack modulu si ani neškrtnete.
(http://slacksite.com/images/ftp/activeftp.gif)
(http://slacksite.com/images/ftp/passiveftp.gif)
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
PassivePorts 51001 51002
kde 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
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
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/24Ping 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
#!/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 :)
-
Takze teraz by skript mohol vyzerat nejak takto
#!/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".
-
>>> 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
#!/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.
-
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
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.
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 (http://textuploader.com/dfn4a)
-
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)
-
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) (http://textuploader.com/dfn4a)
-
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.
-
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:
~# 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
~# 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)
-
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 (https://www.daemon.be/maarten/icmpfilter.html) a odporuca sa nastavit
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
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:
~# 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
~# 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) (http://textuploader.com/dfn4a)
-
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...
-
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
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 ???)
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
-
Proc to delat jednoduse pomoci iptables-save a iptables-restore, kdyz si na to umim napsat script :(
Stastny clovek, ktery ma kupu volneho casu...
-
Proc to delat jednoduse pomoci iptables-save a iptables-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.
-
A neni jednodussi a efektivnejsi upravovat/komentovat vystupy z iptables-save?
Kazdeho volba
-
Zatial som nic nelogoval, ani nekontroloval pomocou tcpdump (pretoze to si musim este nastudovat) ale skusil som
Ke zkoumání firewallu zkus taky
iptables -A ... -j LOG
iptables -A ... -j LOG --log-prefix="cokoliv"
Záznamy jsou v syslogu.
-
OK, nechcem sa tu teraz hasterit o to ci iptables nacitat cez skript, alebo save/restore.
Pre mna je dolezite spravne a bezpecne nastavit pravidla netfiltra aby fungoval ako pozadujem.
V podstate (vid moj prvy prispevok) ten netfilter prepusta/blokuje to co som pozadoval.
Pozadoval som aby bolo povolene z jednej (lokalnej) IP FTP a SSH a to funguje.
Port 17000 funguje a openvpn este nemam otestovane, ale myslim si, ze mal by fungovat tiez.
Pre ovpn je standardne pravidlo
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
ktore otvora port 1194 pre kazdeho. Predpokladam, ze openvpn server nebude robit problemy a kazdemu odpovie, kedze politika output je accept.
Teraz by som si chcel este logovanim overit ako to dropuje pakety ak pridu odkial by chodit nemali. Zrejme pouzjem nie velmi filtrovacie pravidlo, ale skusim logovat vsetko na vstupe
iptables -A INPUT -j LOG --log-prefix 'iptables_input_all'
predpokladam, ze logy najdem v /var/log/kern.log, alebo /var/log/syslog
PS este by som chcel vediet ako by som si ten firewall skutocne otestoval. Skusil som skenovat porty nmapom, ale ukazovalo mi to zvlastne porty ... hmm .... k tomu sa ale dostanem mozno neskor