
XET!C
Tripel-As
Hi,
Meine iptables Regeln verhindert das Portknocking die Verbindung zulässt.
iptables skript
Wenn ich die Regeln ab LOG + DROP auskommentiere, funktioniert es einwandfrei. Aber so sind die Ports nicht gesperrt. Oder vertuh ich mich da???
Hier ein iptables -L nach dem knocking
Damit ist die Verbindung immer noch zu...
Hat jemand ne Ahnung welche Regel ich umschreiben muss oder weg lassen muss?
Meine iptables Regeln verhindert das Portknocking die Verbindung zulässt.
iptables skript
Code:
##########################
# #
# Variablen Definitionen #
# #
##########################
LOCKFILE="/var/lock/guefz-fw.pid"
IPTABLES="/sbin/iptables"
LOGGER="/usr/bin/logger"
MAIL="/usr/bin/mail"
MAIL_ADR="xetic"
ETH0_NET="192.168.0.0/24"
ETH0_ADR="194.168.46.128"
ETH0_BC="194.168.0.255"
LOG="--log-level warning --log-tcp-options --log-ip-options --log-prefix sv1"
#######################
# #
# Locking Mechanismus #
# #
#######################
test -e "$LOCKFILE" && {
$LOGGER -p kern.info -t guefz-fw "Es gibt mich schon mit PID `cat $LOCKFILE`, ich warte ..."
I=0
LOCK=1
while [ "$LOCK" = 1 ]; do
sleep 2
test -e "$LOCKFILE" || LOCK=0
I=`expr $I + 1`
test "$I" = 15 && LOCK=0
done
test -e "$LOCKFILE" && {
$LOGGER -p kern.info -t guefz-fw "Lockdatei ist zwar immer noch da, aber was solls ..."
kill -TERM `cat $LOCKFILE`
sleep 2
kill -KILL `cat $LOCKFILE`
rm -f "$LOCKFILE"
}
}
trap "rm -f $LOCKFILE" 0 1 2 3 13 15
set -o noclobber
echo "$$" > $LOCKFILE || exit 1
set +o noclobber
##########################################################################
# #
# Funktionen, um die verschiedenen Varianten des Regelsatzes zu erzeugen #
# #
##########################################################################
############################################
# #
# Packetfilterregeln loeschen, alles offen #
# #
############################################
function stop_rules() {
echo -n "FIREWALL: ALLES OFFEN ..."
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F
$IPTABLES -X
echo " done"
}
############################################
# #
# Packetfilterregeln loeschen, alles zu #
# #
############################################
function close_rules() {
echo -n "FIREWALL: ALLES ZU ..."
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -F
$IPTABLES -X
echo " done"
}
#############################################################
# #
# Packetfilterregeln fuer Normalbetrieb im Internet laden #
# #
#############################################################
function start_rules() {
echo -n "FIREWALL: REGELN werden aktiv ..."
#
# Defaulteinstellungen und evtl. vorhandene Regeln loeschen
#
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD 2> /dev/null
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP 2> /dev/null
$IPTABLES -F
$IPTABLES -X
# $IPTABLES -A INPUT -j DROP
#
# Kernel-Einstellungen
#
(
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null # Ping an BC ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 2> /dev/null # Ping komplett ignorieren
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null # SYN-Cookie Schutz
echo 1 > /proc/sys/net/ipv4/ip_always_defrag 2> /dev/null # XXX not there?
echo 0 > /proc/sys/net/ipv4/tcp_ecn 2> /dev/null
) > /dev/null 2>&1
#
# normalen Loopback-Verkehr zulassen
#
$IPTABLES -A INPUT -j ACCEPT -i lo
$IPTABLES -A OUTPUT -j ACCEPT -o lo
#
# Regeln gegen Adressfaelschungen aus dem Loopback-Bereich
#
$IPTABLES -A INPUT -j LOG ${LOG}-ANTI-SPOOFING -s 127.0.0.0/8
$IPTABLES -A INPUT -j LOG ${LOG}-ANTI-SPOOFING -d 127.0.0.0/8
$IPTABLES -A INPUT -j DROP -s 127.0.0.0/8
$IPTABLES -A INPUT -j DROP -d 127.0.0.0/8
#
# Eigene Broadcasts ohne Logging ignorieren
#
$IPTABLES -A INPUT -j DROP -s $ETH0_ADR -d $ETH0_BC
#
# Regeln gegen Packete mit den eigenen Adressen als Quelladresse
#
$IPTABLES -A INPUT -j LOG ${LOG}-ANTI-SPOOFING -s $ETH0_ADR
$IPTABLES -A INPUT -j DROP -s $ETH0_ADR
#
# Regeln fuer das Versenden eigener Packete
#
$IPTABLES -A OUTPUT -j LOG ${LOG}-TRACEROUTE-ATTEMPT -p icmp --icmp-type time-exceeded
#
# Regeln fuer die Annahme ankommender Packete
#
# Stateful: allgemein Antworten zulassen
$IPTABLES -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
# ICMP
$IPTABLES -A INPUT -j ACCEPT -p icmp --icmp-type echo-request
for TYPE in echo-reply destination-unreachable time-exceeded parameter-problem timestamp-reply address-mask-reply; do
$IPTABLES -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED -p icmp --icmp-type $TYPE
done
# TCP
# normale zugelassene Verbindungen:
# $IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22 #ssh
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 995 #pop3s
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 10000 #webmin
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 80 #http
# $IPTABLES -A INPUT -j ACCEPT -p tcp --dport 443
# $IPTABLES -A INPUT -j REJECT -p tcp --dport 113 --syn --reject-with tcp-reset 2> /dev/null
# LOG + DROP
# $IPTABLES -A INPUT -j REJECT -p tcp --dport 135 --reject-with tcp-reset
# $IPTABLES -A INPUT -j REJECT -p tcp --dport 445 --reject-with tcp-reset
# $IPTABLES -A INPUT -j LOG ${LOG}-DROP-TCP -p tcp --syn
# $IPTABLES -A INPUT -j REJECT -p tcp --syn --reject-with tcp-reset
# $IPTABLES -A INPUT -j LOG ${LOG}-DROP-ICMP -p icmp
# $IPTABLES -A INPUT -j DROP -p icmp
# $IPTABLES -A INPUT -j LOG ${LOG}-DROP-UDP -p udp
# $IPTABLES -A INPUT -j REJECT -p udp --reject-with icmp-port-unreachable
# $IPTABLES -A INPUT -j LOG ${LOG}-DROP-INVALID -m state --state INVALID
# $IPTABLES -A INPUT -j DROP -m state --state INVALID
#
# Verwerfen aller bisher nicht erfassten Packete
#
# $IPTABLES -A INPUT -j LOG ${LOG}-WEIRD
# $IPTABLES -A INPUT -j DROP
#
# Ende der Regeln
#
echo "... habe fertig"
}
###########################
# #
# Kommandozeile auswerten #
# #
###########################
case "$1" in
# Packetfilterregeln loeschen, alles offen
stop|halt|down|shutdown)
$IPTABLES -L -nv | $MAIL -s FIREWALL_STATUS_OFFEN $MAIL_ADR
stop_rules
$LOGGER -p kern.info -t FIREWALL "Firewall offen"
exit 0
;;
# Packetfilterregeln loeschen, alles zu
close|zu)
$IPTABLES -L -nv | $MAIL -s FIREWALL_STAUTS_ZU $MAIL_ADR
close_rules
$LOGGER -p kern.info -t FIREWALL "Firewall zu"
exit 0
;;
# Statusanzeige
status)
$IPTABLES -L -Z -nv | $MAIL -s FIREWALL_STATUS $MAIL_ADR
# start_rules
# $IPTABLES -t nat -L -nv
# $IPTABLES -t mangle -L -nv
exit 0
;;
# Laden der Packetfilterregeln
start|up)
start_rules
$LOGGER -p kern.info -t firewall "Firewall geladen"
exit 0
;;
# Fehler bei unbekannter Option in der Kommandozeile
*)
echo "Usage: $0 {start|stop|close|status}"
exit 1
;;
esac
########
# #
# Ende #
# #
########
Wenn ich die Regeln ab LOG + DROP auskommentiere, funktioniert es einwandfrei. Aber so sind die Ports nicht gesperrt. Oder vertuh ich mich da???
Hier ein iptables -L nach dem knocking
Code:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
LOG all -- loopback/8 anywhere LOG level warning tcp-options ip-options prefix `sv1-ANTI-SPOOFING'
LOG all -- anywhere loopback/8 LOG level warning tcp-options ip-options prefix `sv1-ANTI-SPOOFING'
DROP all -- loopback/8 anywhere
DROP all -- anywhere loopback/8
DROP all -- 128-46-168-194.static.virginmedia.com 194.168.0.255
LOG all -- 128-46-168-194.static.virginmedia.com anywhere LOG level warning tcp-options ip-options prefix `sv1-ANTI-SPOOFING'
DROP all -- 128-46-168-194.static.virginmedia.com anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp echo-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp time-exceeded
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp parameter-problem
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp timestamp-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp address-mask-reply
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
ACCEPT tcp -- anywhere anywhere tcp dpt:webmin
ACCEPT tcp -- anywhere anywhere tcp dpt:www
REJECT tcp -- anywhere anywhere tcp dpt:loc-srv reject-with tcp-reset
REJECT tcp -- anywhere anywhere tcp dpt:microsoft-ds reject-with tcp-reset
LOG tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `sv1-DROP-TCP'
REJECT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN reject-with tcp-reset
LOG icmp -- anywhere anywhere LOG level warning tcp-options ip-options prefix `sv1-DROP-ICMP'
DROP icmp -- anywhere anywhere
LOG udp -- anywhere anywhere LOG level warning tcp-options ip-options prefix `sv1-DROP-UDP'
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
LOG all -- anywhere anywhere state INVALID LOG level warning tcp-options ip-options prefix `sv1-DROP-INVALID'
DROP all -- anywhere anywhere state INVALID
LOG all -- anywhere anywhere LOG level warning tcp-options ip-options prefix `sv1-WEIRD'
DROP all -- anywhere anywhere
ACCEPT tcp -- 192.168.46.1 anywhere tcp dpt:22
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
LOG icmp -- anywhere anywhere icmp time-exceeded LOG level warning tcp-options ip-options prefix `sv1-TRACEROUTE-ATTEMPT'
Damit ist die Verbindung immer noch zu...
Hat jemand ne Ahnung welche Regel ich umschreiben muss oder weg lassen muss?