Portál AbcLinuxu, 12. května 2025 07:34
IPTABLES="/usr/sbin/iptables"
VNEJSI_IP="192.168.1.1"
VNEJSI_ZARIZENI="eth1"
VNEJSI_DNS="x.x.x.x"
$IPTABLES -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP --sport 80 -j ACCEPT
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP --sport 20:21 -j ACCEPT
# prijmame od naseho DNS serveru informace
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p UDP -s $VNEJSI_DNS -d $VNEJSI_IP --sport 53 -j ACCEPT
# jiz otevrena spojeni jsou v poradku
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
# povolujeme odchod TCP paketu ze vsech portu az na jmenovane
$IPTABLES -A OUTPUT -o $VNEJSI_ZARIZENI -p TCP -s $VNEJSI_IP -m multiport --sports ! 20,21,22,80 -j ACCEPT
# neomezujeme odchod UDP paketu
$IPTABLES -A OUTPUT -o $VNEJSI_ZARIZENI -p UDP -s $VNEJSI_IP -j ACCEPT
$IPTABLES -A OUTPUT -o $VNEJSI_ZARIZENI -p TCP -s $VNEJSI_IP -m multiport --sports ! 20,21,22,80 -j ACCEPT
IMO tohle povolí všechnu komunikaci do vnějšího světa, pokud neodchází z portů 20,21,22,80, což neprivilegované procesy stejně nemůžou. Proto se ICQ i Jabber klient připojí.
Když vyhodíš ten řádek s ESTABLISHED, tak se připojí taky, ale odpověď se zahodí (proto se v konečném důsledku nepřipojí)
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP --sport 80 -j ACCEPT
IMHO tohle s největší pravděpodobností nebude dělat to, co po tom chceš. Takto zapsané pravidlo povoluje všechen příchozí provoz, pokud pochází z portu 80 bez ohledu na to, jestli jsi ho začal ty nebo ne.
-m state --state NEW
# jiz otevrena spojeni jsou v poradku
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
# povolene porty
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP --sport 80 -m state --state NEW -j ACCEPT
# prijmame od naseho DNS serveru informace
$IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p UDP -s $VNEJSI_DNS -d $VNEJSI_IP --sport 53 -j ACCEPT
# povolujeme odchod TCP paketu ze vsech portu az na jmenovane
$IPTABLES -A OUTPUT -o $VNEJSI_ZARIZENI -p TCP -s $VNEJSI_IP -m multiport --sports ! 20,21,22,80 -j ACCEPT
# neomezujeme odchod UDP paketu
$IPTABLES -A OUTPUT -o $VNEJSI_ZARIZENI -p UDP -s $VNEJSI_IP -j ACCEPT
Prvni, vami zminovane pravidlo (-A OUTPUT -o $VNEJSI_ZARIZENI -p TCP -s $VNEJSI_IP -m multiport --sports ! 20,21,22,80 -j ACCEPT) tam mam, protoze obcas mi bezi Apache a nechci, aby byl z venku pristupny (stejne tak FTP a SSH).To ale oním pravidlem neovlivníš. Tímto pravidlem říkáš, že povoluješ všechen odchozí provoz, který nepochází z vyjmenovaných portů. O přístupnosti zvenku toto pravidlo nijak nerozhoduje.
Tímto pravidlem umožňuješ komukoliv venku, kdo má na svém stroji účet roota, připojit se k tobě a to na kterýkoliv port a poslat ti data.# povolene porty $IPTABLES -A INPUT -i $VNEJSI_ZARIZENI -p TCP -d $VNEJSI_IP --sport 80 -m state --state NEW -j ACCEPT
/sbin/depmod -a # moduly /sbin/modprobe ip_conntrack_ftp # cisticka pravidel /sbin/iptables -F /sbin/iptables -X # nastaveni implicitni politiky /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT ACCEPT # loopback /sbin/iptables -A INPUT -i lo -j ACCEPT # probihajici a navazana spojeni povolime /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # icmp pakety s zadosti na odezvu povolime /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT
Asi jsem celkove spatne pochopil cely system netfilteru.Kdybys to chtěl vylepšit, tak se porozhlídni tady
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.