portscanns unterdrücken

Post Reply
Message
Author
arno

portscanns unterdrücken

#1 Post by arno »

hi

ich würde gerne meine firewall so einstellen das man bei portscanns
keine antwort bekommt.
habe es mit diesen befehlen probiert und es funktioniert nicht:

$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

hat wer eine idee oder weiss jemand was ich falsch mach??

vielen dank
arno

mschwendt
Posts: 37
Joined: 14. Feb 2003 11:32

Re: portscanns unterdrücken

#2 Post by mschwendt »

Zum einen unterschlägst Du den Rest Deiner iptables Regeln, womit wir nicht beurteilen können, welche Regeln <b>vor</b> diesen mit -A angehängten Regeln vorkommen. Ebenfalls zeigst Du keine Log Einträge, an denen wir sehen können, was für Pakete Du meinst.

Zum zweiten bedeutet --tcp-flags ALL ALL, daß nur TCP Pakete, die alle Statusflaggen gesetzt haben, betroffen sind. Wie oft treffen bei Dir solche Pakete ein? ALL NONE hingegen bezeichnet nur TCP Pakete, die keine Statusflaggen gesetzt haben. Wie oft tritt das bei Dir ein?


arno

Re: portscanns unterdrücken

#4 Post by arno »

@michael
tut mir leid so gut kenn ich mich nicht aus das ich genau weiss was es mit den Statusflaggen auf sich hat
bei meiner jetztigen firewallconfig scheint bei einem portscann im log das auf:

Feb 18 02:47:11 host kernel: New not syn:IN= OUT=lo SRC=127.0.0.1 DST=212.33.45.177 LEN=40 TOS=0x00 PREC=0x00 TTL=40 ID=14020 PROTO=TCP SPT=62630 DPT=80 WINDOW=1024 RES=0x00 ACK URGP=0

mh vielleicht findet ja irgendwer noch ein paar fehler oder hat verbesserungsvorschläge

danke

###########################################################################
#
# Local Area Network configuration.
#

LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/24"
LAN_BCAST_ADRESS="192.168.255.255"
LAN_IFACE="eth1"

###########################################################################
#
# Localhost Configuration.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"

###########################################################################
#
# Internet Configuration.
#

INET_IP="212.33.45.177"
INET_IFACE="eth0"

###########################################################################
#
# IPTables Configuration.
#

IPTABLES="/sbin/iptables"

###########################################################################
#
# 2. Module loading.
#
/sbin/depmod -a
#
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#
##########################################################################
#

echo "1" > /proc/sys/net/ipv4/ip_forward

###########################################################################
#
# 4. IPTables rules set up.
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#
# bad_tcp_packets chain
#


$IPTABLES -N bad_tcp_packets
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#
# Do some checks for obviously spoofed IP's
#

$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 10.0.0.0/8 -j DROP
$IPTABLES -A bad_tcp_packets -i $INET_IFACE -s 172.16.0.0/12 -j DROP

#
# Enable simple IP Forwarding and Network Address Translation
#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE

#
# Bad TCP packets we don't want
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#
# Accept the packets we actually want to forward
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

#
# Create separate chains for ICMP, TCP and UDP to traverse
#

$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udpincoming_packets

#
# The allowed chain for TCP connections
#

$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# ICMP rules
#

# Changed rules totally
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# TCP rules
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1352 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 81 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3000 -j allowed
# UDP ports
#

# nondocumented commenting out of these rules
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT

##########################
# INPUT chain
#
# Bad TCP packets we don't want.
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#
# Rules for incoming packets from the internet.
#

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets

#
# Rules for special networks not part of the Internet
#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP


###############################
# OUTPUT chain
#
#
# Special OUTPUT rules to decide which IP's to allow.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

#
# Log weird packets that don't match the above.
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

mschwendt
Posts: 37
Joined: 14. Feb 2003 11:32

Re: portscanns unterdrücken

#5 Post by mschwendt »

<blockquote><hr>
bei meiner jetztigen firewallconfig scheint bei einem portscann im log das auf:

Feb 18 02:47:11 host kernel: New not syn:IN= OUT=lo SRC=127.0.0.1 DST=212.33.45.177 LEN=40 TOS=0x00 PREC=0x00 TTL=40 ID=14020 PROTO=TCP SPT=62630 DPT=80 WINDOW=1024 RES=0x00 ACK URGP=0
<hr></blockquote>
Eine Log Meldung, na und? In der Chain namens "bad_tcp_packets", wo dies geloggt wird, ist die nächste Regel, das Paket zu verwerfen. Steht doch klipp und klar in Deinen Regeln. Wo ist Dein Problem?

Des weiteren ist anhand dieser Log Meldung, so aus dem Kontext gerissen, kein "port scan" zu erkennen, zumal das TCP Paket als von localhost kommend gekennzeichnet ist. Laut Deinen iptables Regeln besteht auch kein Anlaß zur Schlußfolgerung, daß die zugehörige Regel port scans unterdrücken soll. In erster Linie verwirft diese Regel ungültige TCP Pakete, welche die SYN Flagge nicht gesetzt haben, aber vom Connection Tracking nicht zu einer bekannten Verbindung zugeordnet werden können und daher als eine neue Verbindung angesehen werden. Aber nicht jedes solches Paket gehört zu einem port scan. Es gibt auch regulär beschädigte und fehlgeleitete Pakete bzw. Verbindungen, die auf Deinen Rechner treffen. Daß bei port scans auch mit schadhaften bzw. ungültigen Paketen gearbeitet wird, ist davon nicht abhängig.

Btw, Port scans unterbindest Du, indem Du ausnahmslos alle Pakete auf allen Ports mit --jump DROP verwirfst. Du hingegen öffnest Deinen Rechner für die ganze Welt: <i>$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets</i> -- von daher kannst Du Dir einen Kampf gegen port scans eigentlich sparen. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

andi

Re: portscanns unterdrücken

#6 Post by andi »

für iptables gibt es einen portscan patch

http://www.netfilter.org/documentation/ ... tml#ss3.10

vg

Post Reply