PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables: welche module sind entscheidend?



Pleitegeier
26.03.04, 09:50
irgendwie klappt mit meinem script fast nix und ich hab den eindruck, dass mit grundkonfiguration etwas nicht stimmt...muss ich noch bestimmte module laden? meine kernelconfig sieht so aus:

# IP: Netfilter Configuration
#

CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IRC=y
CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_IP_NF_NAT_LOCAL=y
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_NAT_TFTP=m
CONFIG_IP_NF_NAT_AMANDA=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_DSCP=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_CLASSIFY=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_ARPTABLES=m
ich hab in nem anderem scripte gerade gelesen, dass bestimmte module geladen werden:

## Load modules
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp ports=7771,21
modprobe ip_nat_ftp
modprobe ip_tables
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
anscheinend fehlt mir was?

FATAL: Module iptable_filter not found.
FATAL: Module ip_conntrack not found.
FATAL: Module ip_conntrack_ftp not found.
FATAL: Module ip_tables not found.

bzw warum fehlen mir die? ich dachte eigentlich alles, zumindest als modul, mitkompiliert zu haben? wäre nett, wenn sie hier in diesem superbesuchtem forum mal meinem problem auseinandersetzt :)

pcm
26.03.04, 09:57
Original geschrieben von Pleitegeier
bzw warum fehlen mir die? ich dachte eigentlich alles, zumindest als modul, mitkompiliert zu haben? wäre nett, wenn sie hier in diesem superbesuchtem forum mal meinem problem auseinandersetzt :)

glauben heißt nicht wissen, schau mal in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter ob da module drin sind. "FATAL: Module ip_tables not found." klingt nämlich nicht gut.

Pleitegeier
26.03.04, 10:25
Original geschrieben von pcm
"FATAL: Module ip_tables not found." klingt nämlich nicht gut.
jupp, das dachte ich mir auch so :)...ich hab da aber auch nicht so den plan von.

ich hab eigentlich gehofft, dass es irgendwas mit dem 2.6.er kernel zu tun, naja, hier mal die vorhandenen module:

-rw-r--r-- 1 root root 17645 Mar 18 11:57 arp_tables.ko
-rw-r--r-- 1 root root 5069 Mar 18 11:57 ip_conntrack_amanda.ko
-rw-r--r-- 1 root root 4139 Mar 18 11:57 ip_conntrack_tftp.ko
-rw-r--r-- 1 root root 3448 Mar 18 11:57 ip_nat_amanda.ko
-rw-r--r-- 1 root root 6623 Mar 18 11:57 ip_nat_ftp.ko
-rw-r--r-- 1 root root 5234 Mar 18 11:57 ip_nat_irc.ko
-rw-r--r-- 1 root root 3870 Mar 18 11:57 ip_nat_tftp.ko
-rw-r--r-- 1 root root 3065 Mar 18 11:57 ipt_CLASSIFY.ko
-rw-r--r-- 1 root root 3319 Mar 18 11:57 ipt_DSCP.ko
-rw-r--r-- 1 root root 4033 Mar 18 11:57 ipt_ECN.ko
-rw-r--r-- 1 root root 7859 Mar 18 11:57 ipt_LOG.ko
-rw-r--r-- 1 root root 3005 Mar 18 11:57 ipt_MARK.ko
-rw-r--r-- 1 root root 5302 Mar 18 11:57 ipt_MASQUERADE.ko
-rw-r--r-- 1 root root 2961 Mar 18 11:57 ipt_NETMAP.ko
-rw-r--r-- 1 root root 2982 Mar 18 11:57 ipt_REDIRECT.ko
-rw-r--r-- 1 root root 7329 Mar 18 11:57 ipt_REJECT.ko
-rw-r--r-- 1 root root 3287 Mar 18 11:57 ipt_SAME.ko
-rw-r--r-- 1 root root 5040 Mar 18 11:57 ipt_TCPMSS.ko
-rw-r--r-- 1 root root 3316 Mar 18 11:57 ipt_TOS.ko
-rw-r--r-- 1 root root 7003 Mar 18 11:57 ipt_ULOG.ko
-rw-r--r-- 1 root root 2732 Mar 18 11:57 ipt_ah.ko
-rw-r--r-- 1 root root 3206 Mar 18 11:57 ipt_conntrack.ko
-rw-r--r-- 1 root root 2441 Mar 18 11:57 ipt_dscp.ko
-rw-r--r-- 1 root root 2971 Mar 18 11:57 ipt_ecn.ko
-rw-r--r-- 1 root root 2735 Mar 18 11:57 ipt_esp.ko
-rw-r--r-- 1 root root 3663 Mar 18 11:57 ipt_helper.ko
-rw-r--r-- 1 root root 2605 Mar 18 11:57 ipt_iprange.ko
-rw-r--r-- 1 root root 2447 Mar 18 11:57 ipt_length.ko
-rw-r--r-- 1 root root 3302 Mar 18 11:57 ipt_limit.ko
-rw-r--r-- 1 root root 4447 Mar 18 11:57 ipt_owner.ko
-rw-r--r-- 1 root root 2450 Mar 18 11:57 ipt_pkttype.ko
-rw-r--r-- 1 root root 12992 Mar 18 11:57 ipt_recent.ko
-rw-r--r-- 1 root root 2650 Mar 18 11:57 ipt_state.ko
-rw-r--r-- 1 root root 3084 Mar 18 11:57 ipt_tcpmss.ko
-rw-r--r-- 1 root root 4905 Mar 18 11:57 iptable_mangle.ko
-rw-r--r-- 1 root root 38047 Mar 18 11:57 iptable_nat.ko
ich hab mir die kernelconfig nochmal über menuconfig angesehen, ich seh zum verrecken nicht, was ich vergessen haben könnte?

pcm
26.03.04, 10:29
beim 2.6er kernel muss man imho modprobe ip_tables.ko (also die endung) mit angeben. außerdem heißen doch die module anders. aber ip_tables kann ich bei dir trotzdem nicht finden, hast du das mit gebaut? oder fest im kernel? kann auch möglich sein das sie das umbenannt haben, hab noch kein iptables + linux 2.6 verwendet.

Pleitegeier
26.03.04, 10:48
Original geschrieben von pcm
beim 2.6er kernel muss man imho modprobe ip_tables.ko (also die endung) mit angeben
nein, zumindest nicht bei mir :), die module, die gefunden wurden, konnte ich ja mit modprobe laden


Original geschrieben von pcm
oder fest im kernel?

ich denke, die sind fest im kernel, ich hab mal die config geladen und von menuconfig nen screenie gemacht

http://www.rzh-tax.de/config-2.4.6.gif

pcm
26.03.04, 10:58
wie du sicher weiß ist das was mit * markiert ist fest im kernel, also brauchste auch kein modul mehr laden (logisch). :) die ganze aufregung also umsonst ;)

Pleitegeier
26.03.04, 11:59
Original geschrieben von pcm
die ganze aufregung also umsonst ;)

nö, jetzt weiss ich zumindest, dass ich eigentlich alles habe, was ich brauche, nur mein script funzt leider trotzdem nicht :(

pcm
26.03.04, 12:34
mit leichten anpassungen sollte auch das script von harry.homelinux.org laufen.

edit: ohne das du uns dein script zur verfügung stellst und ne fehlerbeschreibung ablieferst wird das aber schwer zu beheben sein. meine glaskugel is sowieso nich die beste ;)

Pleitegeier
26.03.04, 12:52
jo, recht haste wohl, ich habe gestern das ganze script mal gepostet, aber das war den leutz hier wohl ein bischen zuviel text glaube ich :)

naja, recht viele hits und kein reply

obwohl sich das meiste dort wiederholt, hier mein script

#!/bin/sh

################################################## ############################
################################# Variablen ##################################
################################################## ############################

# iptables

IPTABLES="/sbin/iptables"

# Interfaces der Firewall

INTERN=eth1
EXTERN=ppp0

# Lokales Netzwerk

NETWORK="192.168.5.1/24"

# Server im Netzwerk

WEBSERVER=192.168.5.231
FTPSERVER=192.168.5.231
BFSERVER=192.168.5.168
TSSERVER=192.168.5.168

# Server im Internet

ROOTSERVER=xxx.xxx.xxx.xxx

# CLIENT

ADMIN=192.168.5.3

# Spezielle Ports

PORTS_HIGH=1024:65535 # unpriviligierte Ports
PORTS_SSH=1000:1023 # SSH Ports
PORT_MYSQL=3306 # mysql Port
PORTS_ICQ=5010:5014 # ICQ incoming event Ports
PORTS_BF=14500:16000 # BF Ports
PORTS_BFQ=23000:23009 # BF Query Ports

echo "Variablen gesetzt"


################################################## ############################
########################### Grundkonfiguration ##############################
################################################## ############################

# IP-Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward

# Support für dynamische IP-Adressen aktivieren.
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

# Abwehrmaßnahme gegen das SYN Flooding
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# verhindert Mißbrauch eines Hosts
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Das Loggen ungültiger ICMP-Pakete wird ausgeschaltet
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Schleife für alle Schnittstellen
for iface in /proc/sys/net/ipv4/conf/*; do
# IP spoofing-Schutz aktivieren
echo "1" > $iface/rp_filter
#Akzeptieren von Redirections ausschalten
echo "0" > $iface/accept_redirects
# Ungültige IP-Pakete loggen
echo "1" > $iface/log_martians
# Keine Source-Routing durch IP-Pakete akzeptieren
echo "0" > $iface/accept_source_route
# Keine Pakete des Bootstrap Protokoll akzeptieren
echo "0" > $iface/bootp_relay
done

echo "Grundkonfiguration erfolgreich"

################################################## ############################
############################# Firewall Konfiguration #########################
################################################## ############################

# Alle Tables leeren
$IPTABLES -F #Flush Filter-Chains
$IPTABLES -t nat -F #Fulsh NAT-Chains
$IPTABLES -X #Loesche alle Non-Buildin Chains

# Alle default-Policies auf DROP, damit keine Lücken beim Aufbau der Firewall entstehen
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

# Die NAT-Chains bleiben auf ACCEPT, Pakete werden nur im Filter-Table verworfen.
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#########################################
############ iptables Regeln ############
#########################################

### Lokale Prozesse auf dem Rechner akzeptieren
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

### Eigene chains ABGELEHNT
$IPTABLES -N ABGELEHNT
$IPTABLES -A ABGELEHNT -p ICMP -j LOG --log-prefix "Abgelehnte ICMP-Pakete "
$IPTABLES -A ABGELEHNT -p UDP -j LOG --log-prefix "Abgelehnte UDP-Pakete "
$IPTABLES -A ABGELEHNT -p TCP -j LOG --log-prefix "Abgelehnte TCP-Pakete "
$IPTABLES -A ABGELEHNT -j DROP

### ICMP

# ICMP Anfragen ausgehend erlaubt

$IPTABLES -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT

# IMCP (request & reply) auf internen IF erlaubt

$IPTABLES -A INPUT -p ICMP -i $INTERN --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p ICMP -o $INTERN --icmp-type echo-reply -j ACCEPT

########################################
######## Bestehende Verbindungen #######
########################################

# Ausgehende Pakete bei bereits bestehender Verbindung werden akzeptiert
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Ausgehende Pakete bei bereits bestehender Verbindung aus dem internen Netz werden akzeptiert
$IPTABLES -A FORWARD -i $INTERN -o $EXTERN -m state --state ESTABLISHED,RELATED -j ACCEPT

# Eingehende Pakete bei bereits bestehender Verbindung werden akzeptiert
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Eingehende Pakete zum internen Netz werden bei bestehender Verbindung akzeptiert:
$IPTABLES -A FORWARD -i $EXTERN -o $INTERN -m state --state ESTABLISHED,RELATED -j ACCEPT

# Pakete unvollständiger oder neuer Verbindungen von aussen werden
# abgelehnt und vorher zwecks Protokollierung zur eigenen Regelkette geleitet
$IPTABLES -A INPUT -m state --state NEW,INVALID -j ABGELEHNT

# Pakete unvollständiger oder neuer Verbindungen von aussen zum
# internen Netz werden abgelehnt und vorher zwecks Protokollierung zur eigenen Regelkette geleitet:
$IPTABLES -A FORWARD -i $EXTERN -o $INTERN -m state --state NEW,INVALID -j ABGELEHNT

################################################## ##################################
#################### Dienste aus dem internen Netz (Forwarding) ####################
################################################## ##################################

# ICMP Anfragen werden gestattet
$IPTABLES -A FORWARD -o $EXTERN -p ICMP --icmp-type echo-request -j ACCEPT

# SMTP Verbindungen erlauben
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport smtp -j ACCEPT

# POP3 Verbindungen erlauben
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport 110 -j ACCEPT

# ICQ incoming events Verbindungen erlauben
$IPTABLES -A FORWARD -i $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport $PORTS_ICQ -j ACCEPT

# HTTP -Verbindungen erlauben
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport http -j ACCEPT
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport 8080 -j ACCEPT
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport 8090 -j ACCEPT

# HTTP via SSL
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport https -j ACCEPT

# SSH
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport ssh -j ACCEPT

# TS -Verbindungen erlauben
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p UDP --sport $PORTS_HIGH --dport 8767 -j ACCEPT # TS Server
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH -d $ROOTSERVER --dport 17778 -j ACCEPT # Webinterface
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport 23007 -j ACCEPT # TS TCPQueryPort

# BF erlauben
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH -d $ROOTSERVER --dport 17776 -j ACCEPT # Remote Console
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH -d $ROOTSERVER --dport 17777 -j ACCEPT # BFSM
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p UDP --sport $PORTS_HIGH --dport $PORTS_BF -j ACCEPT # BF Server Ports
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p UDP --sport $PORTS_HIGH --dport $PORTS_BFQ -j ACCEPT # BFQ Server Ports

# ident reject
$IPTABLES -A FORWARD -i $EXTERN -p TCP --dport auth --syn -j REJECT

# Ausgehende FTP-Kontrollverbindungen
$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport ftp -j ACCEPT

# Ausgehende passive FTP-Datenverbindungen
#$IPTABLES -A FORWARD -o $EXTERN -m state --state NEW -p TCP --sport $PORTS_HIGH --dport $PORTS_HIGH -j ACCEPT # -> *******e, oder?

### MASQUERADING ###
$IPTABLES -t nat -A POSTROUTING -o $EXTERN -j MASQUERADE

################################################## #########
#################### Anfragen an eth0 #####################
################################################## #########

### SSH - SSH Verbindungen aus dem internen Netz erlauben

$IPTABLES -A INPUT -i $INTERN -s $NETWORK -p TCP --sport $PORTS_HIGH --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERN -d $NETWORK -p TCP --dport $PORTS_HIGH --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT

#$IPTABLES -A INPUT -p TCP -i $INTERN -s $ADMIN --sport $PORTS_HIGH --dport ssh -j ACCEPT
#$IPTABLES -A OUTPUT -p TCP -o $INTERN -d $ADMIN --dport $PORTS_HIGH --sport ssh -j ACCEPT

### FTP - FTP Verbindungen aus dem dem internen Netz erlauben
$IPTABLES -A INPUT -p TCP -i $INTERN --sport $PORTS_HIGH --dport ftp -j ACCEPT
$IPTABLES -A OUTPUT -p TCP -o $INTERN --dport $PORTS_HIGH --sport ftp -j ACCEPT

### WWW - Anfragen aus dem internen Netzerlauben
$IPTABLES -A INPUT -p TCP -i $INTERN --sport $PORTS_HIGH --dport www -j ACCEPT
$IPTABLES -A OUTPUT -p TCP -o $INTERN --dport $PORTS_HIGH --sport www -j ACCEPT

### SWAT - Anfragen aus dem internen Netz erlauben
$IPTABLES -A INPUT -p TCP -i $INTERN -s $ADMIN --sport $PORTS_HIGH --dport swat -j ACCEPT
$IPTABLES -A OUTPUT -p TCP -o $INTERN -d $ADMIN --dport $PORTS_HIGH --sport swat -j ACCEPT

### SMB Shares zulassen
$IPTABLES -A INPUT -p TCP -i $INTERN --sport $PORTS_HIGH --dport netbios-ssn -j ACCEPT # ???
$IPTABLES -A OUTPUT -p TCP -o $INTERN --dport $PORTS_HIGH --sport netbios-ssn -j ACCEPT # ???

################################################## ##########
#################### Anfragen an ppp0 ######################
################################################## ##########

### WWW - Anfragen an Webserver weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 20080 -j DNAT --to $WEBSERVER:80

### FTP - Anfragen an FTPServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 20021 -j DNAT --to $FTPSERVER:21

### Teamspeak Webinterface - Anfragen an Teamspeakserver weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 17778 -j DNAT --to $TSSERVER:17778

### Teamspeak Server - Anfragen an Teamspeakserver weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 8767 -j DNAT --to $TSSERVER:8767

### BF - Gameport Anfragen an BFServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p UDP --dport 14567 -j DNAT --to $BFSERVER:14567

### BF - Queryport Anfragen an BFServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p UDP --dport 23000 -j DNAT --to $BFSERVER:23000

### BF - ASEport Anfragen an BFServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p UDP --dport 14670 -j DNAT --to $BFSERVER:14567

### BF - Remote Consolen Anfragen an BFServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 17776 -j DNAT --to $BFSERVER:17776

### BFSM - Anfragen an BFServer weiterleiten
$IPTABLES -t nat -A PREROUTING -i $INTERN -p TCP --dport 17777 -j DNAT --to $BFSERVER:17777

##########################################
################ Rest ###############
##########################################

# Der Rest wird gesperrt und geloggt


$IPTABLES -A INPUT -j ABGELEHNT
$IPTABLES -A FORWARD -j ABGELEHNT
$IPTABLES -A OUTPUT -j ABGELEHNT

echo "Firewall konfiguriert"


### Was noch fehlt!!!
### Passive Ports berücksichtigen, was ist mit SSL und TLS

und es funzt zu 99% nicht, wenn ich vom lan aus scan, vermutet nmap der server sei offline...