luckystrikerulz
07.04.06, 10:40
servus,
dies ist mein FW-Script bis jetzt!
leider bölkt er beim starten noch den fehler "Bad built-in chain name" raus und ich habe noch ne frage: was hat es mit der LOG_REJECT kette auf sich? (es funzt, aber ich habe die logik nur übernommen und versteh nich ganz wiso die ganzen pakete aus INPUT mit fehlerantwort zurückgegeben werden...)
-
#!/bin/bash
#
#blablabla
### BEGIN INIT INFO
# Provides: IP-Paketfilter123
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Firewall (FIN)
# Description: Firewall fuer FIN-Projekt
### END INIT INFO
#
#Variablen
DSL=dsl0
LAN=eth0
LOKALE_IP=192.168.1.1
LOKALES_NETZ=192.168.1.0/24
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 3 > /proc/sys/net/ipv4/tcp_retries1
echo 15 > /proc/sys/net/ipv4/tcp_retries2
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
case "$1" in
start)
echo "Die Firewall wird gestartet..."
##### #####
##### Laden der Module #####
##### #####
#iptables-Modul
modprobe ip_tables
#Module zur Verbindungsverfolgung
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
#Tabellen loeschen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
##### #####
##### DROP-KETTE #####
##### #####
iptables -N LOG_DROP
# e-donkey-Pakete und Pakete verschiedener Wuermer verwerfen,
# die anscheinend nicht auf tcp-reset reagieren
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -j DROP
iptables -A LOG_DROP -p TCP --syn --dport 445 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 445 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 445 -j DROP
iptables -A LOG_DROP -p TCP --syn --dport 4662 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 4662 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 4662 -j DROP
iptables -A LOG_DROP -p TCP --syn -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn -m limit --limit 5/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn -j DROP
iptables -A LOG_DROP -p TCP -j LOG --log-prefix "DROP-TCP "
iptables -A LOG_DROP -p TCP -m limit --limit 5/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP -j DROP
iptables -A LOG_DROP -p UDP -j LOG --log-prefix "DROP-UDP "
iptables -A LOG_DROP -p UDP -m limit --limit 5/s -j REJECT --reject-with icmp-port-unreachable
iptables -A LOG_DROP -p UDP -j DROP
iptables -A LOG_DROP -p ICMP -j LOG --log-prefix "DROP-ICMP "
iptables -A LOG_DROP -p ICMP -j DROP
iptables -A LOG_DROP -j LOG --log-prefix "DROP-PROTO-ETC "
iptables -A LOG_DROP -m limit --limit 5/s -j REJECT --reject-with icmp-proto-unreachable
iptables -A LOG_DROP -j DROP
##### #####
##### REJECT-KETTE #####
##### #####
iptables -N LOG_REJECT
iptables -P LOG_REJECT DROP
iptables -A LOG_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A LOG_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A LOG_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A LOG_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A LOG_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A LOG_REJECT -p icmp -j DROP
iptables -A LOG_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A LOG_REJECT -j REJECT --reject-with icmp-proto-unreachable
##### #####
##### IPSEC-KETTE #####
##### #####
iptables -N ipsec_for
# forwarding von Paketen aus dem Tunnel und zurueck
iptables -A ipsec_for -i $DSL -o $LAN -m mark --mark 10 -j ACCEPT
# Oder mit dem Policy-Modul, was den Vorteil hat, dass man auch den
# Traffic in den Tunnel kontrollieren kann, d.h. Verbindungen vom
# Gateway zum Roadwarrior moeglich sind:
# iptables -A FORWARD -i $DSL -m policy --dir in --pol ipsec \
# --mode tunnel --proto esp -j ACCEPT
# iptables -A FORWARD -o $DSL -m policy --dir out --pol ipsec \
# --mode tunnel --proto esp -j ACCEPT
iptables -A ipsec_for -j LOG_DROP
# IPSec-Pakete markieren:
# (Kann auch entfallen, siehe bei ipsec-Abschnitt)
iptables -t mangle -A PREROUTING -p 50 -i $DSL -j MARK --set-mark 10
iptables -A FORWARD -i $DSL -m mark --mark 10 -j ipsec_for
# oder, falls im ipsec-Abschnitt mit -m policy gearbeitet wird:
# iptables -A FORWARD -i $DSL -j ipsec_for
# iptables -A FORWARD -o $DSL -j ipsec_for
##### #####
##### INPUT-KETTE #####
##### #####
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
#LAN-Zugriff auf LAN
iptables -A INPUT -m state --state NEW -i $LAN -j ACCEPT
# Connection-Tracking aktivieren
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Dienste die auf server laufen
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -j LOG_REJECT
#wenn Keine Flags gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ALL NONE -j LOG_DROP
#wenn SYN und FIN gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG_DROP
#wenn SYN und RST gleichzeitig gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags SYN,RST SYN,RST -j LOG_DROP
#wenn FIN und RST gleichzeitig gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags FIN,RST FIN,RST -j LOG_DROP
#wenn FIN ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,FIN FIN -j LOG_DROP
#wenn PSH ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,PSH PSH -j LOG_DROP
#wenn URG ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,URG URG -j LOG_DROP
#Anfragen von aussen loggen
iptables -I INPUT 1 -p tcp --dport 21 -i DSL -m limit --limit 10/m -j LOG --log-prefix "FTP-VERBINDUNG"
iptables -I INPUT 1 -p tcp --dport 22 -i DSL -m limit --limit 10/m -j LOG --log-prefix "SSH - VERBINDUNG"
iptables -I INPUT 1 -p tcp --dport 80 -i DSL -m limit --limit 10/m -j LOG --log-prefix "HTTP-VERBINDUNG"
##### #####
##### OUTPUT-KETTE #####
##### #####
iptables -P OUTPUT DROP
#Loopback-Netzwerk-Kommunikation zulassen
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT 1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j LOG_REJECT
iptables -A OUTPUT -m state --state INVALID -j DROP
##### #####
##### FORWARD-KETTE #####
##### #####
iptables -P FORWARD DROP
##### #####
##### NAT zum LAN #####
##### #####
#Remote Desktop-Verbindung zu rechner 192.168.2.200 forwarden
#iptables -I FORWARD 1 -i ppp0 -o $LAN -p tcp --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#iptables -t nat -I PREROUTING 1 -i DSL -s 0/0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.123.12
#iptables -t nat -I POSTROUTING 1 -o $LAN -s 0/0 -d 192.168.123.12 -p tcp --dport 3389 -j MASQUERADE
##### #####
##### Prioritaeten setzen #####
##### #####
#iptables -A FORWARD -m tos --tos 0x10 -j ACCEPT
#iptables -A FORWARD -m tos --tos Minimize-Delay -j ACCEPT
;;
stop)
echo "Die Firewall wird gestoppt..."
#Tabellen loeschen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#Default-Policies setzen (jedes Paket wird akzeptiert)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "Achtung, die Policies stehen jetzt auf ACCECPT"
;;
status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Logs liegen in /var/log/firewall"
;;
*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;
esac
[/quote]
dies ist mein FW-Script bis jetzt!
leider bölkt er beim starten noch den fehler "Bad built-in chain name" raus und ich habe noch ne frage: was hat es mit der LOG_REJECT kette auf sich? (es funzt, aber ich habe die logik nur übernommen und versteh nich ganz wiso die ganzen pakete aus INPUT mit fehlerantwort zurückgegeben werden...)
-
#!/bin/bash
#
#blablabla
### BEGIN INIT INFO
# Provides: IP-Paketfilter123
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Firewall (FIN)
# Description: Firewall fuer FIN-Projekt
### END INIT INFO
#
#Variablen
DSL=dsl0
LAN=eth0
LOKALE_IP=192.168.1.1
LOKALES_NETZ=192.168.1.0/24
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 3 > /proc/sys/net/ipv4/tcp_retries1
echo 15 > /proc/sys/net/ipv4/tcp_retries2
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
case "$1" in
start)
echo "Die Firewall wird gestartet..."
##### #####
##### Laden der Module #####
##### #####
#iptables-Modul
modprobe ip_tables
#Module zur Verbindungsverfolgung
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
#Tabellen loeschen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
##### #####
##### DROP-KETTE #####
##### #####
iptables -N LOG_DROP
# e-donkey-Pakete und Pakete verschiedener Wuermer verwerfen,
# die anscheinend nicht auf tcp-reset reagieren
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 135:137 -j DROP
iptables -A LOG_DROP -p TCP --syn --dport 445 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 445 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 445 -j DROP
iptables -A LOG_DROP -p TCP --syn --dport 4662 -m limit --limit 10/hour --limit-burst 2 -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn --dport 4662 -m limit --limit 1/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn --dport 4662 -j DROP
iptables -A LOG_DROP -p TCP --syn -j LOG --log-prefix "DROP-TCP-SYN "
iptables -A LOG_DROP -p TCP --syn -m limit --limit 5/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP --syn -j DROP
iptables -A LOG_DROP -p TCP -j LOG --log-prefix "DROP-TCP "
iptables -A LOG_DROP -p TCP -m limit --limit 5/s -j REJECT --reject-with tcp-reset
iptables -A LOG_DROP -p TCP -j DROP
iptables -A LOG_DROP -p UDP -j LOG --log-prefix "DROP-UDP "
iptables -A LOG_DROP -p UDP -m limit --limit 5/s -j REJECT --reject-with icmp-port-unreachable
iptables -A LOG_DROP -p UDP -j DROP
iptables -A LOG_DROP -p ICMP -j LOG --log-prefix "DROP-ICMP "
iptables -A LOG_DROP -p ICMP -j DROP
iptables -A LOG_DROP -j LOG --log-prefix "DROP-PROTO-ETC "
iptables -A LOG_DROP -m limit --limit 5/s -j REJECT --reject-with icmp-proto-unreachable
iptables -A LOG_DROP -j DROP
##### #####
##### REJECT-KETTE #####
##### #####
iptables -N LOG_REJECT
iptables -P LOG_REJECT DROP
iptables -A LOG_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A LOG_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A LOG_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A LOG_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A LOG_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A LOG_REJECT -p icmp -j DROP
iptables -A LOG_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A LOG_REJECT -j REJECT --reject-with icmp-proto-unreachable
##### #####
##### IPSEC-KETTE #####
##### #####
iptables -N ipsec_for
# forwarding von Paketen aus dem Tunnel und zurueck
iptables -A ipsec_for -i $DSL -o $LAN -m mark --mark 10 -j ACCEPT
# Oder mit dem Policy-Modul, was den Vorteil hat, dass man auch den
# Traffic in den Tunnel kontrollieren kann, d.h. Verbindungen vom
# Gateway zum Roadwarrior moeglich sind:
# iptables -A FORWARD -i $DSL -m policy --dir in --pol ipsec \
# --mode tunnel --proto esp -j ACCEPT
# iptables -A FORWARD -o $DSL -m policy --dir out --pol ipsec \
# --mode tunnel --proto esp -j ACCEPT
iptables -A ipsec_for -j LOG_DROP
# IPSec-Pakete markieren:
# (Kann auch entfallen, siehe bei ipsec-Abschnitt)
iptables -t mangle -A PREROUTING -p 50 -i $DSL -j MARK --set-mark 10
iptables -A FORWARD -i $DSL -m mark --mark 10 -j ipsec_for
# oder, falls im ipsec-Abschnitt mit -m policy gearbeitet wird:
# iptables -A FORWARD -i $DSL -j ipsec_for
# iptables -A FORWARD -o $DSL -j ipsec_for
##### #####
##### INPUT-KETTE #####
##### #####
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
#LAN-Zugriff auf LAN
iptables -A INPUT -m state --state NEW -i $LAN -j ACCEPT
# Connection-Tracking aktivieren
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Dienste die auf server laufen
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i DSL -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -j LOG_REJECT
#wenn Keine Flags gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ALL NONE -j LOG_DROP
#wenn SYN und FIN gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG_DROP
#wenn SYN und RST gleichzeitig gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags SYN,RST SYN,RST -j LOG_DROP
#wenn FIN und RST gleichzeitig gesetzt --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags FIN,RST FIN,RST -j LOG_DROP
#wenn FIN ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,FIN FIN -j LOG_DROP
#wenn PSH ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,PSH PSH -j LOG_DROP
#wenn URG ohne ACK --> in Kette LOG_DROP verschieben
iptables -I INPUT 1 -p tcp --tcp-flags ACK,URG URG -j LOG_DROP
#Anfragen von aussen loggen
iptables -I INPUT 1 -p tcp --dport 21 -i DSL -m limit --limit 10/m -j LOG --log-prefix "FTP-VERBINDUNG"
iptables -I INPUT 1 -p tcp --dport 22 -i DSL -m limit --limit 10/m -j LOG --log-prefix "SSH - VERBINDUNG"
iptables -I INPUT 1 -p tcp --dport 80 -i DSL -m limit --limit 10/m -j LOG --log-prefix "HTTP-VERBINDUNG"
##### #####
##### OUTPUT-KETTE #####
##### #####
iptables -P OUTPUT DROP
#Loopback-Netzwerk-Kommunikation zulassen
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT 1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j LOG_REJECT
iptables -A OUTPUT -m state --state INVALID -j DROP
##### #####
##### FORWARD-KETTE #####
##### #####
iptables -P FORWARD DROP
##### #####
##### NAT zum LAN #####
##### #####
#Remote Desktop-Verbindung zu rechner 192.168.2.200 forwarden
#iptables -I FORWARD 1 -i ppp0 -o $LAN -p tcp --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#iptables -t nat -I PREROUTING 1 -i DSL -s 0/0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.123.12
#iptables -t nat -I POSTROUTING 1 -o $LAN -s 0/0 -d 192.168.123.12 -p tcp --dport 3389 -j MASQUERADE
##### #####
##### Prioritaeten setzen #####
##### #####
#iptables -A FORWARD -m tos --tos 0x10 -j ACCEPT
#iptables -A FORWARD -m tos --tos Minimize-Delay -j ACCEPT
;;
stop)
echo "Die Firewall wird gestoppt..."
#Tabellen loeschen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#Default-Policies setzen (jedes Paket wird akzeptiert)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "Achtung, die Policies stehen jetzt auf ACCECPT"
;;
status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Logs liegen in /var/log/firewall"
;;
*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;
esac
[/quote]