PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables einrichten



hakker82
18.11.05, 13:26
In den letzten Tagen habe ich einiges zu iptables gelesen und auch einiges ausprobiert. Aber das hat irgendwie alles nicht funktioniert. Gestern habe ich dann alles gelöscht.

Vielleicht hat ja jemand ähnliche Bedürfnisse wie ich und hat schon fertige Regeln.

Ich nutze über das Internet über dhcp und manchmal (wenn ich muss) zusätzlich über vpnc.Die interfaces sind eth1 (wlan) und eth0 (Kabel). Zusätzlich habe ich noch ein loopback-device -> lo.

Viele Regeln sind bestimmt nicht notwendig. Ich surfe nur, lade Daten per wget, nutze
* irc
* pop3, smtp
* ssh, scp
* udp brauch ich wahrscheinlich auch

Kann mir da jemand weiterhelfen?

mattias1
18.11.05, 13:47
Schon mal den hier (http://www.harry.homelinux.org/modules.php?name=iptables_Generator) angeschaut... :rolleyes:

Erstellt ein Script...und daran kannst du immer noch rumbasteln

hakker82
18.11.05, 13:49
Hab' ich schon ausprobiert. Ganz nett, aber das bringt mich nicht weiter. Außerdem ist es viel zu lang. Bei mir dürften 30 Zeilen ausreichen.

hakker82
18.11.05, 13:56
Das ist die iptables aus dem Generator, wie muss ich sie kürzen und erweitern, dass alles tut, wie es soll?



#!/bin/bash

### 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 "

# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -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

# SYN und FIN gesetzt
iptables -A INPUT -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

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -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

# PSH ohne ACK
iptables -A INPUT -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

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

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH
iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# IRC
iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 6667 -j ACCEPT

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

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

Legolaus
29.11.05, 17:13
Du kannst die Echo's rausschmeissen und die Kommentare entfernen - Evtl. noch die Scriptanweisungen

Denke viel kleiner kriegst du es nicht, da du ja recht viele Anwendungsbreiche angibst! Schätze das du nur zu Verbindungsproblemen kommst wo du dann ratlos bist, wenn du das Ding noch mehr zusammen stutzt, weil du keine Warhnungen bekommst, wenn die tables was blocken!

Legolaus
29.11.05, 17:17
Also habe es mir gerade noch mal genau durchgelesen - Ich würde da garnichts ändern! - Das Ding ist wirklich sehr ausgereift! - Zumal es dir recht einfachen start/stop ermöglicht!!!

cyberdyne
29.11.05, 17:54
du kannst auch deine itables sehr angenehm über webmin www.webmin.com konfigurieren ( und auch einige andere sachen mehr ). falls das schon bekannt ist, post einfach ignorieren :D