PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables & Portscan



boxa
25.06.02, 15:40
Hallo Experten,

ich habe folgendes Script gefunden, das Portscans verhindern soll. Was haltet ihr davon? Ich kenne mich mit den tcp-flags nicht aus. Wann braucht man diese?

#Portscans unterbinden
iptables -N NoPrtScn
iptables -A NoPrtScn -p tcp --dport 113 -i $INET_IFACE -j REJECT --reject-with tcp-reset
iptables -A NoPrtScn -p tcp -i $INET_IFACE --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A NoPrtScn -p tcp -i $INET_IFACE --tcp-flags ALL FIN -j DROP
iptables -A NoPrtScn -p tcp -i $INET_IFACE --tcp-flags ALL NONE -j DROP
iptables -A NoPrtScn -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A NoPrtScn -p tcp -i $INET_IFACE --tcp-flags SYN,RST SYN,RST -j DROP

for TCP_PORT in $RPC_TCP_PORTS;
do
iptables -A NoPrtScn -p tcp -i $INET_IFACE --dport $TCP_PORT -j DROP
done

for UDP_PORT in $RPC_UDP_PORTS
do
iptables -A NoPrtScn -p udp -i $INET_IFACE --dport $UDP_PORT -j DROP
done

nikolei
09.07.02, 14:09
hallo,
das skript is nicht schlecht. aber nicht ganz korrekt. habe aenliches bei mir laufen.

(1) alles verbieten, was nicht explizit erlaubt wird
(2) nebensaechliche konfigurationen
(3) services erlauben und nach chain zur weiteren ueberpruefung weiterleiten
(4) chain, der weiter ueberprueft, z.b. auf scans

dein hier abgedruckter scan deckt zwar einiges ab (xmas, null, etc). beruecksichtigt allerdings nicht die tatsache, das scans, die ja unentdeckt bleiben wollten, den tcp handshake nicht vollenden wollen und damit neue packete sind. mit
(a) new und not syn
(b) new und fin oder rst
deckts du auch alle deine aufgelisteten faelle ab.
die regel "all fin" kann ja nun auch noch anders verwendung finden.

damit lassen sich aber sicherlich nicht alle portscans verhinden. nur stelthy.
diese werden aber sicherlich am haeufigsten verwendet.

nun zu der frage, warum man die tcp-flags in den firewallregeln gut gebrauchen kann. bei einer kommunikation zwischen einem server und einem client ueber tcp findet, befor dann die relevanten daten ausgetauscht werden (z.b. die webseite an den browser geschickt wird) der sogenannte tcp-handshake statt.
der client sendet ein tcp-packet mit gesetztem sys-bit an den server und signalisiert damit: "hey server, ich will was von dir". der server sendet darauf ein tcp-packet mit gesetztem syn und ack-bit (acknowlege). die ersten beiden packete sind noetig, um sich ueber die sequenznummern der tcp-packewte zu verstaendigen. der client bestaetigt den emfpang des serverpackets dann noch einmal mit einem gesetzten ack-bit. andere tcp-flags sollten bei diesem 3-wege handshake nicht gesetzt sein. mit diesem wissen kannst du dir dann selber einen portscanfilter aus tcp-optionen (syn, ack, fin etc.) und state (new etc) basteln.

viel freude dabei


niko






niko