PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewall: Ports 1024+ und FW-Konfiguration: IPs sperren tut nicht



L00NIX
19.06.05, 14:16
Hallo zusammen.

Bei mir im Logfile schlagen sehr oft UDP-Pakete zu den Ports 1025, 1026, 1027, etc. (knapp über 1024) auf. Meistens von IPs von Dial-Up Providern und sehr oft China.

Frage: Was sind das für Ports bzw. Pakete?


In jedem Fall droppe ich einfach die ganzen Pakete dieser IP-Bereiche. Theoretisch. Praktisch kommen aber dennoch Pakete an, die dann REJECTED werden und unnötigerweise das Log vollstopfen.

Meine Firewall-Konfig (abgewandeltes und erweitertes Harry-Skript):


#!/bin/bash

# system variables
PATH=/sbin:/usr/sbin:/bin:/usr/bin

# devices
INT_PPP=ppp0
NIC_DSL=eth0
NIC_LAN=eth1



########
# main #
########

case "$1" in
start)
echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# [... Traffic Shaping ...]

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
iptables -A MY_DROP -j DROP

# Alle verworfenen Pakete protokollieren
iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "

# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP


# >>> provider dropping

# CNC (China)
iptables -A INPUT --source 218.11.0.0/17 -j DROP
iptables -A INPUT --source 221.10.0.0/16 -j DROP

# China-Net
iptables -A INPUT --source 218.66.0.0/17 -j DROP
iptables -A INPUT --source 220.168.0.0/18 -j DROP
iptables -A INPUT --source 220.175.0.0/18 -j DROP
iptables -A INPUT --source 222.173.0.0/19 -j DROP
iptables -A INPUT --source 222.184.0.0/19 -j DROP
iptables -A INPUT --source 222.240.0.0/19 -j DROP

# Hong Kong
iptables -A INPUT --source 218.36.194.0/11 -j DROP

# Shanghai Global Net
iptables -A INPUT --source 61.152.156.0/11 -j DROP

# Japan
iptables -A INPUT --source 219.168.0.0/23 -j DROP

#<<< provider dropping


# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ${INT_PPP} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# LAN-Zugriff auf eth1
iptables -A INPUT -m state --state NEW -i ${NIC_LAN} -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT

# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o ${INT_PPP} -j MASQUERADE

# SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Ungültige ICMP-Antworten ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Speicherallozierung und -timing für IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2
;;

stop)
echo "Stoppe IP-Paketfilter"

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# traffic shaping aus
/sbin/tc qdisc del dev ${INT_PPP} root 2>/dev/null
/sbin/tc qdisc del dev ${INT_PPP} ingress 2>/dev/null

/sbin/tc qdisc del dev ${NIC_DSL} root 2>/dev/null
/sbin/tc qdisc del dev lo root 2>/dev/null

# Default-Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

status)
echo "Tabelle filter"
iptables -L -vn

echo "Tabelle nat"
iptables -t nat -L -vn

echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac


Warum kommen Pakete z.B. von 222.189.38.26 immer noch durch?

Diese müssten doch von der Maske 222.184.0.0/19 erfasst werden?


Gruß
L00NIX

x86-64
19.06.05, 14:50
nö die ip liegt außerhalb von dem subnet

222.184.0.0/ 19= 255.255.224.0

also von 222.184.0.0 - 222.184.31.255

L00NIX
19.06.05, 15:07
nö die ip liegt außerhalb von dem subnet

222.184.0.0/ 19= 255.255.224.0

also von 222.184.0.0 - 222.184.31.255

Nich ganz, oder? ;)

Also /16 deckt ja schon die hinteren beiden Stellen ab: 255.255.0.0, denn eine IPv4-Adresse hat ja "nur" 32 Bit. Somit sind 16 die Hälfte.

Jetzt kommen noch drei dazu, also ist /19: 255.252.0.0

Somit sollte der Adressbereich 222.184.0.0/19 die IPs von 222.184.0.0 bis 222.189.255.255 abdecken.

Es geht aber nicht!


Gruß
L00NIX

x86-64
19.06.05, 16:16
du rechnest in die falsche richtung /x bedeutet immer die anzahl der 1 in der subnet mask von links nach rechts

als /19 in oktett schreibweiße

11111111 | 11111111 | 11100000 | 00000000 (binär)

255 | 255 | 224 | 0



wenn es nicht glaubst

http://de.wikipedia.org/wiki/Subnetting#Klasse_B

Gronau
19.06.05, 16:30
222.184.0.0/ 19 =
Netz: 222.184.0.0
Maske: 255.255.224.0
Range: 222.184.0.0 - 222.184.31.255
(siehe http://www.netzmafia.de/skripten/netze/netz8.html oberes drittel)

222.189.38.26 liegt somit nicht im bereich.

L00NIX
19.06.05, 17:11
du rechnest in die falsche richtung /x bedeutet immer die anzahl der 1 in der subnet mask von links nach rechts


OK :ugly:

Das erklärt natürlich ALLES!


Danke & Gruß
L00NIX