PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables einrichten Problem ?



herschi
05.09.03, 17:42
Hallo zusammen

Könnt Ihr mir da weiterhelfen.
Wenn ich das script starte kann ich nicht mal den Rechner (192.168.0.1) anpingen.

eth1=10.0.0.1
ppp0=Adsl


Das ganze schaut noch ein bischen dünn aus (:-)) aber jetz bin ich schon 7 Stunden drann und immer noch kein erfolg.

Gruss Christian



# Variablen setzen:

iptables=/usr/sbin/iptables

int=eth1

ext=eth0

lan=192.168.0.1/16

#####################################
# alte Regeln loeschen, Policies setzen:

# alles zuruecksetzen:

$iptables -t filter -F
$iptables -t nat -F
$iptables -t mangle -F
$iptables -F
$iptables -X

# alles verbieten:

$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

#####################################

#eingehend und ausgehend erlauben aus dem LAN:

$iptables -A INPUT -s $lan -j ACCEPT
$iptables -A OUTPUT -d $lan -j ACCEPT

#Wir erreichen zwar das äussere Interface, es wird aber nichts durchgeschleust:


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

# Masquerading an:

iptables -t nat -A POSTROUTING -o $ext -j MASQUERADE

#################################
# icmp
# Ping annehmen intern > extern;
# Antwort annehmen extern > intern:

$iptables -A INPUT -i $int -p icmp --icmp-type echo-request -j ACCEPT
$iptables -A OUTPUT -o $int -p icmp --icmp-type echo-reply -j ACCEPT

$iptables -A INPUT -i $ext -p icmp --icmp-type echo-request -j ACCEPT
$iptables -A OUTPUT -o $ext -p icmp --icmp-type echo-reply -j ACCEPT

$iptables -A FORWARD -i $int -o $ext -p icmp --icmp-type echo-request -j ACCEPT
$iptables -A FORWARD -i $ext -o $int -p icmp --icmp-type echo-reply -j ACCEPT

#################################
# s s h
$iptables -A INPUT -s $lan -p tcp --dport 22 -j ACCEPT
$iptables -A OUTPUT -s $lan -p tcp --sport 22 -j ACCEPT

HangLoose
05.09.03, 19:02
moin moin

als erstes erlaube mal das loopback device. stell die regel am besten gleich hinter die default policy

# alles verbieten:

$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

#####################################

#loopback

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#eingehend und ausgehend erlauben aus dem LAN:

$iptables -A INPUT -s $lan -j ACCEPT
$iptables -A OUTPUT -d $lan -j ACCEPT


desweiteren benötigst du noch regeln für die FORWARD CHAIN um deinen rechnern aus dem lan den zugriff aufs inet zu erlauben.

iptables -A FORWARD -i $int -o $ext -m state --state NEW -j ACCEPT
iptables -A FORWARD -i $ext -o $int -m state --state ESTABLISHED,RELATED -j ACCEPT

in deiner output ssh regel steckt auch noch ein fehler. da gehört nicht die source rein, sondern destination.

$iptables -A OUTPUT -d $lan -p tcp --sport 22 -j ACCEPT


hoffe ich habe nichts übersehen.


Gruß HL










_

herschi
05.09.03, 19:58
@ HangLoose

Danke es leuft.

ich habe noch den DSN Port reingehängt.

Noch eine Frage
Würdest du so deinen Rechner ins Netz hängen ??


Gruss Christian

HangLoose
05.09.03, 20:06
Würdest du so deinen Rechner ins Netz hängen ??




ja klar, kannst ja mal nen onlinescanner benutzen. allerdings hab ich in meinem script genau definiert, welche dienste vom lan aus genutzt werden dürfen und ping vom inet halte ich auch nicht für nötig.


Gruß HL

herschi
05.09.03, 20:17
Hallo HangLoose

Original geschrieben von HangLoose
ja klar, kannst ja mal nen onlinescanner benutzen. allerdings hab ich in meinem script genau definiert, welche dienste vom lan aus genutzt werden dürfen und ping vom inet halte ich auch nicht für nötig.

Gruß HL

Kannst du mir da noch ein bischen weiterhelfen ?

Das ganze ist mir doch zu hoch (:-).

Das einzihe was im Internet stehen soll ist der Apache.

Danke im voraus

Christian

HangLoose
05.09.03, 20:37
würde ich gerne machen. allerdings fehlt mir ein wenig die zeit dafür, da ich morgen in urlaub fahre und noch packen etc. muss.

wenn dein apache vom inet aus erreichbar sein soll, fehlen dir noch entsprechende prerouting regeln. am besten du läßt dir auf folgender seite => www.harry.homelinux.org mit dem iptables genarator ein script erstellen.


Gruß HL

herschi
05.09.03, 21:00
Ok Danke HangLoose das wars

Wünsch euch allen noch nen schönen abend ;)

Gruss christian

herschi
06.09.03, 09:45
Hallo

Ich habe jetzt das Iptables Script von www.harry.homelinux.org erstellt und es leuft.

Das einzige Prob. das ich habe ist das ich von dem Client Pc (Win 2000) keine FTP verbindung aufbauen kann.

Kann sich das mal einer anschauen.



#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2003 under the GPL
# Autogenerated by iptables Generator v1.16 (c) 2002 by Harald Bertram_
# Please visit http://www.harry.homelinux.org for new versions of
# the iptables Generator (c).
#
# This Script was generated by request from:
#
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to webmaster@harry.homelinux.org.
#
# My special thanks are going to Lutz Heinrich (trinitywork@hotmail.com) who
# made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------
#
### BEGIN INIT INFO
# Provides: IP-Paketfilter
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Harry's IP-Paketfilter
# Description: Harry's IP-Paketfilter provides reasonable
# IP-Security for Home-Computers and small networks
### END INIT INFO
#

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

# 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

# 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 ! ppp0 -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

# HTTP
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

# LAN-Zugriff auf eth1
iptables -A INPUT -m state --state NEW -i eth1 -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 ppp0 -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

# 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


Danke Gruss Christian

Harry
07.09.03, 11:01
Hi,


Original geschrieben von herschi
Hallo

Ich habe jetzt das Iptables Script von www.harry.homelinux.org erstellt und es leuft.

Das einzige Prob. das ich habe ist das ich von dem Client Pc (Win 2000) keine FTP verbindung aufbauen kann.

Kann sich das mal einer anschauen.
...

Danke Gruss Christian

wo steht denn Dein Client-PC?
Wie steht er mit Deinem Router/Server in Verbindung?
Wohin willst Du eine FTP-Verbindung aufbauen?

Harry

herschi
07.09.03, 11:09
Hallo Harry

Folgende Konfig (suse 8.1 ) Sysinfo (http://herschi.gotdns.com/phpsysinfo/) :


Adsl -->eth0
eth1 --> Switch
Switch --> Windows 2000

Wenn ich auf dem Win Client ftp.irgendwas eingebe wird zwar gesuch aber nichts gefunden.


Gruss Christian

Harry
07.09.03, 11:59
Welche Log-Meldungen bekommst Du in /var/log/messages, wenn Du einen FTP-Connect durchführst?

Harry

herschi
07.09.03, 12:14
Hallo Harry


Wenn ich auf der Linuxkiste einen Ftp mache klappt es.

ich benutze aber Linux nur als Server (Konsole).

Windows bringt siehe anhang.

Gruss Christian

Harry
07.09.03, 12:24
Hi,

wenn ich Deine Infrastruktur korrekt interpretiere, dann benutzt Du den Win-Client, um im Internet zu surfen. Als Zugang zum Internet läuft die Internetverbindung über den Linux-Router mit dem Paketfilterskript, richtig?

Falls das so ist, benötige ich für eine Analyse Deines Problems den Log-Eintrag aus /var/log/messages vom _Linux_-Rechner und zwar zu dem Zeitpunkt, wenn Du von dem Windows-Rechner den FTP-Connect machst.

Harry

herschi
07.09.03, 12:32
Hallo Harry


Wenn ich das richtig gesehen habe wird da nicht's Protokolliert.


Ich hänge sie aber trotzdem an.

tail -f /var/log/messages
Sep 7 13:24:18 linux kernel: DROP ICMP IN=ppp0 OUT= MAC= SRC=212.149.207.70 DST=212.152.245.140 LEN=92 TOS=0x00 PREC=0x00 TTL=112 ID=21240 PROTO=ICMP TYPE=8 CODE=0 ID=1024 SEQ=10020
Sep 7 13:24:21 linux kernel: REJECT UDP IN=ppp0 OUT= MAC= SRC=81.218.32.238 DST=212.152.245.140 LEN=78 TOS=0x00 PREC=0x00 TTL=114 ID=35421 PROTO=UDP SPT=1029 DPT=137 LEN=58
Sep 7 13:25:41 linux kernel: REJECT UDP IN=ppp0 OUT= MAC= SRC=80.230.54.136 DST=212.152.245.140 LEN=78 TOS=0x00 PREC=0x00 TTL=119 ID=38744 PROTO=UDP SPT=1028 DPT=137 LEN=58
Sep 7 13:25:54 linux kernel: DROP ICMP IN=ppp0 OUT= MAC= SRC=212.149.205.18 DST=212.152.245.140 LEN=92 TOS=0x00 PREC=0x00 TTL=112 ID=49369 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=24140
Sep 7 13:26:20 linux kernel: DROP ICMP IN=ppp0 OUT= MAC= SRC=212.154.149.119 DST=212.152.245.140 LEN=92 TOS=0x00 PREC=0x00 TTL=117 ID=2626 PROTO=ICMP TYPE=8 CODE=0 ID=768 SEQ=35867
Sep 7 13:26:22 linux kernel: DROP ICMP IN=ppp0 OUT= MAC= SRC=212.150.248.192 DST=212.152.245.140 LEN=92 TOS=0x00 PREC=0x00 TTL=107 ID=49825 PROTO=ICMP TYPE=8 CODE=0 ID=768 SEQ=38639
Sep 7 13:27:24 linux kernel: REJECT TCP IN=ppp0 OUT= MAC= SRC=212.152.200.196 DST=212.152.245.140 LEN=48 TOS=0x00 PREC=0x00 TTL=125 ID=43147 DF PROTO=TCP SPT=1923 DPT=135 WINDOW=8760 RES=0x00 SYN URGP=0
Sep 7 13:27:25 linux kernel: REJECT TCP IN=ppp0 OUT= MAC= SRC=212.152.200.196 DST=212.152.245.140 LEN=48 TOS=0x00 PREC=0x00 TTL=125 ID=43152 DF PROTO=TCP SPT=1923 DPT=135 WINDOW=8760 RES=0x00 SYN URGP=0
Sep 7 13:27:26 linux kernel: REJECT TCP IN=ppp0 OUT= MAC= SRC=212.152.200.196 DST=212.152.245.140 LEN=48 TOS=0x00 PREC=0x00 TTL=125 ID=43158 DF PROTO=TCP SPT=1923 DPT=135 WINDOW=8760 RES=0x00 SYN URGP=0
Sep 7 13:27:54 linux kernel: DROP ICMP IN=ppp0 OUT= MAC= SRC=212.152.255.101 DST=212.152.245.140 LEN=92 TOS=0x00 PREC=0x00 TTL=123 ID=6686 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=8059

noch wichtig ist das Squid auch leuft .

Auf dem Win Client kann ich auch ins Internet Pingen .

Gruss Christian

Harry
07.09.03, 12:47
Hi,

aus den Inhalt des messages-Logs kann ich leider auch keine Fehlerquelle ersehen.
Versuch doch mal bitte, auf andere FTP-Server zuzugreifen. Die Windows-Fehlermeldung sieht stark danach aus, dass Du mit einem FTP-Server connectest, der nicht alle Kommandos verarbeiten kann, die Dein FTP-Client sendet.

Harry

herschi
07.09.03, 12:51
Hallo Harry


Ich habe schon versucht auf andere Ftp server zuzugreifen.

Immer das gleiche ?

Gruss Christian

Harry
07.09.03, 14:30
Hi Herschi,

im Moment habe ich da leider keine weiteren Lösungsansätze für Dein Problem.
Beim Starten des iptables-Skriptes bekommst Du keine Fehlermeldungen, oder?

Harry

herschi
07.09.03, 14:55
Hallo Harry


Da es mit einem anderen FTP Client klappt muss der Fehler woanderst liegen.

Ich ich möchte mich aber recht herzlich für deine hilfe bedanken.

Gruss Christian