iptables -m state or conntrack

Fórumok

Alap szabályok csak, mehet minden kifele, befele nem.

Szeretném megkérdezni, hogy a "-m state --state ESTABLISHED" helyett nem lenne célszerűbb inkább a "-m conntrack --ctstate ESTABLISHED, RELATED" szabály?
Azaz az "-m state" vagy az "-m conntrack" a preferált?

Note: Néha elindítok egy simple http szerver-t, file megosztásra.
Command: "python -m SimpleHTTPServer 8000"

Erre ezt a szabályt gondoltam:
iptables -A INPUT -p tcp -m multiport --dports 80,8000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,8000 -m conntrack --ctstate ESTABLISHED -j ACCEPT

root@HELIUM-XR2:~# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N LOGGING
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j LOGGING
-A OUTPUT -j ACCEPT
-A LOGGING -m limit --limit 1/sec -j LOG --log-prefix "IPTables packet DROP: " --log-level 7
-A LOGGING -j DROP

Köszönöm.

Source page: https://wreckedsecurity.com/secure-communication/how-to-make-kali-linux…

# Run as root:
# Set OUTPUT chain default actions as ACCEPT (Should be default)
iptables -A OUTPUT -p ACCEPT
# Allow all already established TCP connection packets to pass
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
# Allow all already established UDP connection packets to pass
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
# Allow all already established ICMP connection packets to pass
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
# Allow all localhost traffic to pass
iptables -A INPUT -i lo -j ACCEPT
# Create new chain "LOGGING"
iptables -N LOGGING
# Log everything that has not been accepted yet (and transfer packet to LOGGING chain)
iptables -A INPUT -j LOGGING
# Log all (soon to be) dropped packets
iptables -A LOGGING -m limit --limit 1/sec -j LOG --log-prefix "IPTables packet DROP: " --log-level 7
# Drop the packet
iptables -A LOGGING -j DROP

Hozzászólások

A conntrack modul a preferalt egy ideje, talan 3.x-es kerneltol, akkor szolt is ha state-el adtad meg hogy deprecated, hasznald conntrack-et, azota talan csinaltak alias-t state eseten ami igy conntrack-kent mukodik.
https://superuser.com/a/1245454

Ezt minek?

iptables -A OUTPUT -p tcp -m multiport --dports 80,8000 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Ez ugyanis azt mondja, hogy azok a csomagok "ACCEPT", amik olyan felépített tcp-kapcsolatban mennek kifelé, aminél a túloldlai port 80 illetve 8000. Nomostan ha egy kliens bekapcsolódik a te oldaladra akár a 80-as, akár a 8000-es portra, annak marhára kicsi az esélye, hogy azt a kapcsolódást a 80-as vagy a 8000-es portról indítja, úgyhogy ez a szabály gyakorlatilag sohasem fog érvényre jutni, helyette az output-ban defaultként megadott "ACCEPT" fogja kiengedni a választ.

Egyébiránr at iptables -A parancsok sorát célsterű elfelejteni, vagymaximum egyszer végigtolni, utána egy iptables-save kimenetet lementve és szükség szerint szerkesztve majd azt iptables-restore parancs segítségével visszatöltve illendő natívan matatni a csomagszűrő szabályokat.