Iptables script bitte korigiren/erweitern

time-walker

New Member
Hi, hab mir nen iptables script geschrieben, habe aber so gut wie garnix zur sicherheit bzw welche packete mit bestimmten typen die er sofort abweisen soll und ob loggin ok ist ober man noch was dazu nehmen sollte.

mfg time-walker

script :
Code:
#!/bin/sh
clear
#
#
# Dieser Root-Server bietet die folgende Dienste
# HTTP  Port 80/tcp
# SMTP  Port 25/tcp
# POP3  Port 110/tcp
# POP3s Port 995/tcp
# IMAP  Port 143/tcp
# IMAPs Port 993/tcp
# SSH   Port 22/tcp
# FTP   Port 21/tcp
# ... siehe Rest @Variablen TCPPORT & UDPPORT
#
#
# Dieser Root-Server benötigt Zugriff auf
# (oder uneingeschränkten zugriff)
# DNS  Port 53/tcp und 53/udp
# SSH  Port 22/tcp
# HTTP Port 80/tcp
# FTP  Port 21/tcp
# SMPT Port 25/tcp versand von Mails)
#


case "$1" in
start|restart)

# Definiere Variablen

# Akzeptiere eingehende TCP Verbindungen für -
# SMTP, HTTP, IMAP, IMAPs, POP3, POP3s, SSH, FTP, 
TCPPORT="25 80 143 993 110 995 22 21"

# Akzeptiere eingehende UDP Verbindungen für -
#Openvpn, Teamspeak
UDPPORT="1194 8767"


echo -e "Starte Firewall ..."
sleep 1

echo -e "lösche alle Regeln ..."
# Lösche alle Regeln in den INPUT-, OUTPUT-, FORWARD-Ketten
        iptables -F
        iptables -t nat -F
        iptables -t mangle -F
        iptables -X
        iptables -t nat -X
        iptables -t mangle -X

echo -e "Setze Regeln ..."


##########            Allgemin          ###########################

echo -e "Setze Kernelparameter, Lade kernel Module ..."
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
modprobe ip_conntrack_ftp
modprobe ip_conntrack

# Akzeptiere Verkehr auf der Loopback-Schnittstelle
        iptables -A INPUT -i lo -j ACCEPT
        iptables -A OUTPUT -o lo -j ACCEPT

#Kommunikation ueber Tunnel erlauben
        iptables -A INPUT -i tun0 -j ACCEPT
        iptables -A OUTPUT -o tun0 -j ACCEPT

# Erlaube Antwortpakete und Fehlermeldungen für aufgebaute Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Erlaube aufgebaute Verbindungen nach außen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#########        Ausgehende Verbindungen        ##################

##### Erlaube neue Verbindungsaufbauten nach außen uneingeschränkt
#       iptables -A OUTPUT -m state --state NEW -j ACCEPT

#eingeschränkt

# Erlaube DNS-Anfragen
        iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
        iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT

# Erlaube HTTP-Verbindungen
        iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

#Erlaube SSH zugriff von innen
        iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW -j ACCEPT

#Erlaube ping nach aussen
        iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request\
        -m state --state NEW -j ACCEPT

#Erlaube zugriff auf Mailserver (versand von e-mails)
        iptables -A OUTPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT

#Erlaube zugriff auf FTP-Server
        iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT


############      Server-Dienste        ###########################
#siehe oben $SERVPORT Variable

#Freigabe von Diensten - TCP
for PORT1 in $TCPPORT
do
iptables -A INPUT -p tcp --dport $PORT1 -m state --state NEW -j ACCEPT
done

#Freigabe von Diensten - UDP
for PORT2 in $UDPPORT
do
iptables -A INPUT -p udp --dport $PORT2 -m state --state NEW -j ACCEPT
done



############      Security              ###########################

#Erlaube ping von aussen
iptables -A INPUT -p icmp --icmp-type echo-request\
 -m state --state NEW -j ACCEPT

#identd-Verbindung zum Client ablehnen (FTP)
iptables -A INPUT -p tcp --dport 113 -j REJECT


############       logging              ###########################

iptables -A INPUT -m state --state INVALID -j LOG
iptables -A INPUT -p ICMP --icmp-type destination-unreachable -j LOG
iptables -A INPUT -p TCP --tcp-flags ALL, FIN,URG,PSH -j LOG
iptables -A INPUT -p TCP --tcp-flags ALL, NONE -j LOG
iptables -A INPUT -p TCP --tcp-flags NONE, ALL -j LOG
iptables -A INPUT -p ICMP --icmp-type source-quench -j LOG
iptables -A INPUT -p ICMP --icmp-type redirect -j LOG
iptables -A INPUT -p ICMP --icmp-type address-mask-request -j LOG


############      Default-Policy        ###########################
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


echo -e "Firewall erfolgreich gestartet"

;;
stop)

echo -e "Firewall deaktiviert ..."
        iptables -F
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
;;
status)

iptables -vL

;;
*)

        echo "Fehler /etc/init.d/$0 [start|restart|stop|status]"

esac;
 
Last edited by a moderator:
Back
Top