• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Ports von DHCP?

Jazz

Member
Hallo welche Ports muss ich den freigeben bei ner FW damit der DHCP Server funzt??
Dachte eigentlich 67 - 69 oder so aber das klappt net. Verwende folgendes
Code:
# DHCP erlauben
$IPTABLES -N dhcp_gate
$IPTABLES -A OUTPUT -p udp -o $DEV_LAN -m state --state NEW --dport 67:69 -j dhcp_gate
$IPTABLES -A INPUT -p udp -i $DEV_LAN -m state --state NEW -s $LOC_NET --dport 67:69 -d $IP_LAN -j dhcp_gate
$IPTABLES -A dhcp_gate -j ACCEPT

LOC_NET=192.168.0.0/24
DEV_LAN=eth0


Wer hat ne Idee? THX.
:)
 
Sie eigentlich ganz gut aus.

Die Frage ist wohl, ob der DCHP-Daemon korrekt läuft.

Was sagt denn
Code:
netstat -anp | grep \:68

Wenn keine Ausgabe kommt, ist er nicht am Start.

Aktiviere auch mal das iptables-logging für die verworfenen
Pakete und schau mal in die /var/log/messages
 
OP
J

Jazz

Member
Also es kommt keine Rückantwort.
Wie aktiviere ich denn bitte das iptable loggin??
THX für's helfen....

wenn ich statt 68 den Port 67 nehme dann liefert er
Code:
saturn:~ # netstat -anp | grep \:67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           3017/dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           3017/dhcpd
 

wenf

Hacker
Jazz schrieb:
Also es kommt keine Rückantwort.
Wie aktiviere ich denn bitte das iptable loggin??

DHCP Broadcasts werden über wie der name schon sagt, über broadcast adressen angesteuert

das fehlt in deiner FW

Log IPTABLES
-j ACCEPT gegen -j LOG austauschen
(danach muß aber für dieses Paket noch ein accept kommen)
 

Bonsai

Advanced Hacker
Lerne mal was darüber! Das bringt Dir mehr, als wenn Du den genauen Syntax erfragst.
http://www.linuxfaq.de/f/cache/382.html
http://www.ghostadmin.org/linux/linux_iptables.htm

Hier stehts aber schon Vorgekaut ;) Punkt III
http://lists.suse.com/archive/suse-linux/2003-Jan/1407.html
 
OP
J

Jazz

Member
hat nix in /var/log/messages geschrieben,

hab hier mal mein firewall sript:
vielleicht findet einer den fehler, wäre super. Danke für alles.
Code:
#!/bin/bash
#
# /etc/ppp/ip-up.local
#
# User-Addons, die nach dem Verbindungsaufbau ausgefuehrt werden
# sollen
#


####
#
# Einige Parameter, die uns der pppd mit uebergibt
#
####

# Interface-name (Device der aktuellen Verbindung, z.B. ppp0)
DEV_INET=$1

# local-IP-address (IP-Adresse, die wir vom Provider zuegwiesen bekommen
# haben
IP_INET=$4

# remote-IP-address (unsere Gegenstelle beim Provider)
IP_GATEWAY=$5

####
#
# Einige weitere Variablen, die praktisch sein koennen bzw. die
# benoetigt werden
#
####

# Das Device auf LAN-Seite
DEV_LAN=eth0
IP_LAN=192.168.0.11

# Loopback Device. Hat jeder. Finger weg!
DEV_LOOP=lo
IP_LOOP=127.0.0.1

# Kürzel für alle IP-Adressen
ANY=0.0.0.0/0

# Kürzel für alle IP-Adressen im eigenen LAN
LOC_NET=192.168.0.0/24 

# Das aktuelle Datum und die Uhrzeit
DATE=$(date)

# Vollen Pfad von iptables
IPTABLES=/usr/sbin/iptables

####
#
# Hier beginnt das eigentliche Masquerading- und Firewallskript
#
####

# IP-Forwarding im Kernel zunächst deaktivieren - wird am Schluss des Skriptes
# wieder aktiviert
echo 0 > /proc/sys/net/ipv4/ip_forward

# Benoetigte Module laden
modprobe ip_tables &> /dev/null
modprobe ip_conntrack &> /dev/null
modprobe ip_conntrack_ftp &> /dev/null
modprobe ipt_state &> /dev/null
modprobe iptable_nat &> /dev/null
modprobe ipt_REJECT &> /dev/null
modprobe ipt_MASQUERADE  &> /dev/null

# Alle alten Regeln löschen, anschließend die Default-Policy setzen
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t filter
$IPTABLES -F -t nat
$IPTABLES -F -t mangle
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

# Wenn keine andere Regel greift, alles verwerfen
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# PRE- und POST-Routing in der nat-Tabelle erlauben
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT

#
#
# Zunächst alle "illegalen" Pakete blocken - trotz der Default-Policy "DROP"
# sinnvoll, einzeln aufzulisten, um sie korrekt zu "REJECT"en und auch 
# mitzuloggen.
#
#

# Ersteinmal alles löschen, was generell kaputt ist oder 
# Angriffsversuche darstellen könnte.
$IPTABLES -N invalid
$IPTABLES -A INPUT    -m state --state INVALID -i ! $DEV_LOOP -j invalid
$IPTABLES -A FORWARD  -m state --state INVALID -j invalid
$IPTABLES -A INPUT    -m unclean -i ! $DEV_LOOP -j invalid
$IPTABLES -A invalid  -m limit -j LOG --log-prefix "invalid "
$IPTABLES -A invalid  -j REJECT

#
# Scan-Pakete: log and drop 
#

# Blocke sog. XMAS-Pakete
$IPTABLES -N xmas
$IPTABLES -A INPUT   -p tcp --tcp-flags ALL ALL -j xmas
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL ALL -j xmas
$IPTABLES -A xmas    -m limit -j LOG --log-level info --log-prefix "xmas-scan "
$IPTABLES -A xmas    -j REJECT

# Blocke NULL Pakete
$IPTABLES -N null_scan
$IPTABLES -A INPUT     -p tcp --tcp-flags ALL NONE -j null_scan
$IPTABLES -A FORWARD   -p tcp --tcp-flags ALL NONE -j null_scan
$IPTABLES -A null_scan -m limit -j LOG --log-level info --log-prefix \
          "null-scan "
$IPTABLES -A null_scan -j REJECT

# Spoofed packets: log and drop 
$IPTABLES -N spoofing
$IPTABLES -A INPUT    -i $DEV_LAN -s ! $LOC_NET -j spoofing
$IPTABLES -A FORWARD  -i $DEV_LAN -s ! $LOC_NET -j spoofing
$IPTABLES -A FORWARD  -i $DEV_INET -s 192.168.0.0/16 -j spoofing
$IPTABLES -A FORWARD  -i $DEV_INET -s 172.16.0.0/12 -j spoofing
$IPTABLES -A FORWARD  -i $DEV_INET -s 10.0.0.0/8 -j spoofing
$IPTABLES -A spoofing -m limit -j LOG --log-level info --log-prefix "spoofing "
$IPTABLES -A spoofing -j REJECT

# icmp handling - ICMP-Pakete werden erlaubt, bis auf type 5 (redirect)
$IPTABLES -N icmp_allow
$IPTABLES -N icmp_reject
$IPTABLES -A INPUT -p icmp --icmp-type ! 5 -j icmp_allow
$IPTABLES -A INPUT -i $DEV_INET -p icmp --icmp-type 5 -m limit -j icmp_reject
$IPTABLES -A icmp_allow -j ACCEPT
$IPTABLES -A icmp_reject -m limit -j LOG --log-prefix "icmp_rej "
$IPTABLES -A icmp_reject -j REJECT --reject-with icmp-host-unreachable

#
#
# Freischalten, was auf dem *Router* benötigt wird
#
#

# Bereits bestehende Verbindungen werden immer akzeptiert: das spart
# das expizite freischalten der INPUT-Pakete bei erlaubten Verbindungen
# ein
$IPTABLES -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

# Verbindungen zum loopback-Device - Das ist NOTWENDIG
$IPTABLES -N lo_accept
$IPTABLES -A INPUT       -i $DEV_LOOP -m state --state NEW -j lo_accept
$IPTABLES -A OUTPUT      -o $DEV_LOOP -m state --state NEW -j lo_accept
$IPTABLES -A lo_accept   -j ACCEPT

# Alle Verbindungem vom LAN zum Gateway und umgekehrt erlauben
$IPTABLES -N lan_accept
$IPTABLES -A INPUT       -i $DEV_LAN -j lan_accept
$IPTABLES -A OUTPUT      -o $DEV_LAN -j lan_accept
$IPTABLES -A lan_accept  -j ACCEPT 

# Pings vom Gateway erlauben
$IPTABLES -N icmp_gate
$IPTABLES -A OUTPUT    -p icmp -j icmp_gate
$IPTABLES -A icmp_gate -j ACCEPT

# Erlaube www/ftp vom Gateway (z. B. beim Update übers Inet)
$IPTABLES -N www_gate
$IPTABLES -A OUTPUT -p tcp --dport 21 -s $IP_INET -m state --state NEW \
          -o $DEV_INET -j www_gate
$IPTABLES -A OUTPUT -p tcp --dport 80 -s $IP_INET -m state --state NEW \
          -o $DEV_INET -j www_gate
$IPTABLES -A www_gate -j ACCEPT

# Erlaube MySQL
$IPTABLES -N sql_gate
$IPTABLES -A OUTPUT -p tcp --dport 3306 -s $IP_INET -m state --state NEW \
          -o $DEV_INET -j sql_gate
$IPTABLES -A sql_gate -j ACCEPT

# timeserver: erlaubt das Holen der aktuellen Zeit aus dem Inet
#$IPTABLES -N ntp_gate
#$IPTABLES -A OUTPUT -p udp --dport 123 -s $IP_INET -m state --state NEW \
#          -o $DEV_INET -j ntp_gate
#$IPTABLES -A ntp_gate -j ACCEPT

# DNS erlauben
$IPTABLES -N dns_gate
$IPTABLES -A OUTPUT -p udp -o $DEV_INET --dport 53 -m state --state NEW \
          -j dns_gate
$IPTABLES -A dns_gate -j ACCEPT

# HBCI  erlauben
$IPTABLES -N hbci_gate
$IPTABLES -A OUTPUT -p tcp --dport 3000 -s $IP_INET -m state --state NEW \
          -o $DEV_INET -j hbci_gate
$IPTABLES -A hbci_gate -j ACCEPT

# CVS  erlauben
$IPTABLES -N hbci_gate
$IPTABLES -A OUTPUT -p tcp --dport 2401 -s $IP_INET -m state --state NEW \
          -o $DEV_INET -j hbci_gate
$IPTABLES -A hbci_gate -j ACCEPT


# DHCP erlauben
$IPTABLES -N dhcp_gate
$IPTABLES -A OUTPUT -p udp -o $DEV_LAN -m state --state NEW --dport 67:68 -j dhcp_gate
$IPTABLES -A INPUT -p udp -i $DEV_LAN -m state --state NEW -s $LOC_NET --dport 67:68 -d $IP_LAN -j dhcp_gate
$IPTABLES -A dhcp_gate -j ACCEPT 

# ssh-Verbindungen erlauben (aus dem lokalen Netz, vom Gateway nach aussen):
# Bei gewünschten Verbindungen von aussen an das Gateway entpsrechende Zeile
# mit aktivieren!
$IPTABLES -N ssh_gate
$IPTABLES -A OUTPUT -p tcp -m state --state NEW  --dport 22 -j ssh_gate
$IPTABLES -A INPUT  -p tcp -m state --state NEW -s $LOC_NET --dport 22 \
          -d $IP_LAN -j ssh_gate
$IPTABLES -A INPUT  -p tcp -m state --state NEW -d $IP_INET --dport 22 \
          -j ssh_gate
$IPTABLES -A ssh_gate -j ACCEPT

# Smtp-Verbindungen vom Gateway nach aussen (und ins LAN) erlauben
$IPTABLES -N smtp_gate
$IPTABLES -A OUTPUT -p tcp -o $DEV_INET -m state --state NEW \
          --dport 25 -j smtp_gate
$IPTABLES -A OUTPUT -p tcp -o $DEV_LAN -m state --state NEW \
          --dport 25 -d $LOC_NET -j smtp_gate
$IPTABLES -A smtp_gate -j ACCEPT

# Pop3-Verbindungen vom Gateway nach aussen erlauben
$IPTABLES -N pop3_gate
$IPTABLES -A OUTPUT -p tcp -o $DEV_INET -m state --state NEW \
          --dport 110 -j pop3_gate
$IPTABLES -A pop3_gate -j ACCEPT

# Apache-Verbindungen vom Gateway nach aussen erlauben
$IPTABLES -N apache_gate
$IPTABLES -A OUTPUT -p tcp -m state --state NEW  --dport 80 -j apache_gate
$IPTABLES -A INPUT  -p tcp -m state --state NEW -s $LOC_NET --dport 80 \
          -d $IP_LAN -j apache_gate
$IPTABLES -A INPUT  -p tcp -m state --state NEW -d $IP_INET --dport 80 \
          -j apache_gate
$IPTABLES -A apache_gate -j ACCEPT



#
#
# Freischalten, was auf den *Clients* benötigt wird
#
#

# Bereits bestehende Verbindungen werden immer akzeptiert: das spart
# das expizite freischalten der INPUT-Pakete bei erlaubten Verbindungen
# ein
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# NAT/Masquerading ist notwendig
$IPTABLES -t nat -A POSTROUTING -o $DEV_INET -s $LOC_NET -j SNAT \
          --to-source $IP_INET

# Das bekannte MTU/MSS-Spielchen bei ADSL und PPPoE
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS \
          --clamp-mss-to-pmtu


# Einige Dienste, die man 100%ig nicht nach draussen lassen will, besonders
# wichtig bei Windowskisten, die sonst so ziemlich alles nach aussen pusten,
# was nur irgendwie gefährlich ist. "It's not a bug, itÄs a feature" - ja ja.
# Für weitere Details zu den Ports: siehe /etc/services
$IPTABLES -A INPUT -p tcp -m multiport \
          --sport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A INPUT -p udp -m multiport \
          --sport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A INPUT -p tcp -m multiport \
          --dport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A INPUT -p udp -m multiport \
          --dport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A FORWARD -p tcp -m multiport \
          --sport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A FORWARD -p udp -m multiport \
          --sport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A FORWARD -p tcp -m multiport \ 
          --dport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT
$IPTABLES -A FORWARD -p udp -m multiport \
          --dport 135,137,138,139,67,68,69,23,111,161,1433 -j REJECT




# Für's lokale LAN alles weitere erlauben. Sicherer ist es, wie oben beim
# Gateway jeden einzelnen Dienst freizuschalten. Das ist aber sehr
# zeitaufwendig und da die Rechner nicht direkt von aussen erreichbar sind,
# auch nicht wirklich notwendig
$IPTABLES -N locnet_out
$IPTABLES -A INPUT -s $LOC_NET -i $DEV_LAN -m state --state NEW -j locnet_out
$IPTABLES -A FORWARD -s $LOC_NET -i $DEV_LAN -o $DEV_INET \
          -m state --state NEW -j locnet_out
$IPTABLES -A locnet_out -j ACCEPT

#
#
# Abschluss-Regeln
#
#

# Alles Loggen, was bis jetzt durchgegangen ist. Sollte man sich genauer
# anschauen, wenn das im Log auftaucht
$IPTABLES -A INPUT   -m limit -j LOG --log-prefix "FINAL IN "
$IPTABLES -A OUTPUT  -m limit -j LOG --log-prefix "FINAL OUT "
$IPTABLES -A FORWARD -m limit -j LOG --log-prefix "FINAL FOR "

# Und dann alles abblocken, was bis hierin durchgegangen ist
$IPTABLES -A INPUT   -j REJECT
$IPTABLES -A OUTPUT  -j REJECT
$IPTABLES -A FORWARD -j REJECT

# Forwarding im Kernel nun wieder aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

# IP-Spoofing aktivieren - Sollte unter SuSE leichter in /etc/rc.config
# gesetzt werden, ansonsten hier aktivieren
#for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#      echo 1 > $f
#done

8)
 
OP
J

Jazz

Member
ach meno ich bekomms nicht hin, hab jetzt alles versucht, was mir eingefallen ist, hab auch gegoogelt aber ohne Erfolg. Hat denn keiner ne Idee für mein Problem??? Wäre super nett. Danke.
 

Bonsai

Advanced Hacker
Der GAAAAAANZ grosse Broadcast, der alle Netze erreicht muss rein und rauskönnen!
255.255.255.255
 
OP
J

Jazz

Member
Ich hab die Lösung :lol:
Hab vergessen den Port 67 aus der Reject Regel rauszulöschen, jaja unachtsam. aber sonst geht jetzt alles. Juhu!!!!
 
OP
J

Jazz

Member
Aber jetzt hab ich n anderes Prob,
wenn ich den Server reboote aber den Client nicht dann "ipconfig /renew" eingebe bekomme ich alle daten vom DHCP Server, wenn ich aber den client neustarte dann kann ich den DHCP Server nicht erreichen und auch "ipconfig /renew" geht nicht. An was kann das liegen? Danke für die Hilfe?
 
Oben