• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Sind diese Firewallregeln sicher?

mmp5

Member
Ich wollte nun Folgendes machen:
Code:
#Firewall erstellen
iptables -N FIREWALL
#Alle bisherigen regeln löschen
iptables -F FIREWALL
#ALLES was in den Input kommt nach "Firewall" senden
iptables -A INPUT -j FIREWALL
#ALLES was geforwarded werden soll in meine chain senden
iptables -A FORWARD -j FIREWALL
#Port 25 erlauben Smtp, Mail
iptables -A FIREWALL -p tcp -m tcp --dport 25 --syn -j ACCEPT
#ssh verbindungen erlauben (ip des Servers oder des clients eingeben? bin mir nicht mehr sicher)
iptables -A FIREWALL -p tcp -m tcp -s IP.Des.Ser.vers/24 --dport 22 --syn -j ACCEPT
#locale Prozesse erlauben
iptables -A FIREWALL -i lo -j ACCEPT
#ftp verbindungen erlauben
iptables -A FIREWALL -p tcp -m tcp --dport 21 -j ACCEPT
#Telnet verbindung erlauben
iptables -A FIREWALL -p tcp -m tcp --dport 23 -j ACCEPT
#DNS auflösung erlauben
iptables -A FIREWALL -p udp -m udp --sport 53 -j ACCEPT
iptables -A FIREWALL -p tcp -m tcp --sport 53 -j ACCEPT
#Ntp daemon erlauben
iptables -A FIREWALL -p udp -m udp --dport 123 -j ACCEPT
#mailserver programm DCC erlauben
iptables -A FIREWALL -p udp -m udp --sport 6277 -j ACCEPT
#Mailserver Programm pyzor erlauben
iptables -A FIREWALL -p udp -m udp --sport 24441 -j ACCEPT
#Alles andere tcp pakete zurückschmeißen
iptables -A FIREWALL -p tcp -m tcp --syn -j REJECT
#Alles andere udp pakete zurückschmeißen
iptables -A FIREWALL -p udp -m udp -j REJECT

Sind diese Firewall Regeln soweit sicher?
Klappen sie überhaupt?
Sollte ich noch OUTPUT ein wenig absichern?
Sonstige Fehler (Highports, oder änliches)? wenn ja, warum?

Danke für ihr/euer verständniss.
 

Frankie777

Advanced Hacker
Nein, das ist suboptimal.
wie schon hier besprochen:
http://www.linux-club.de/viewtopic.php?p=323936#323936

Es ist eine Unsitte die Pakete für INPUT und FORWARD in einer Regel abzukippen. INPUT und FORWARD haben i.d.R. unterschiedliche Anforderungen.
Du filterst nicht stateful.

OUTPUT Filterung kommt erst zum Schluß. Erst mal solltest Du Dich auf funktionierenden Regeln für INPUT beschränken, dann FORWARD und dann OUTPUT wenn es notwendig oder sinnvoll ist.
 
OP
M

mmp5

Member
ok Frankie77 nbrk ich weiß ich hab viel mist gebaut:
Hier ist mein wiedergutmachungsversuch ;)
Die Neuen, besseren, unwiederstehlichen Iptables:
Gestestet habe ich sie schon und sie Funktionieren:

#//Pc Interne Port Freigabe
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT

#//--state new
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#//Eingehende FTP Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 21 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 21 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende SSH Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 22 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 22 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende Telnet Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 23 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 23 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende SMTP Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 25 --sport 1024:65535 -m state --state NEW -j ACCEPT
#//Mails aus Meinem Netz versenden
iptables -A OUTPUT -p tcp --dport 25 --sport 1024:65535 -m state --state NEW -j ACCEPT


#//Eingehende DNS Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 53 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende HTTP Verbindung erlauben (Zum download spezifischer SARules)
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 80 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 80 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


#//Eingehende Razor Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 7 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 7 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 2703 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 2703 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende pyzor Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 24441 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 24441 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende Webmin Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 10000 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 10000 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
#//Pakete vom Client zum Server
iptables -A INPUT -p udp --dport 10000 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p udp --sport 10000 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende DCC Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p udp --dport 6277 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p udp --sport 6277 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#//Eingehende Syslog Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p udp --dport 514 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p udp --sport 514 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


#//Eingehende NTP DAEMON Verbindung erlauben
#//Pakete vom Client zum Server
iptables -A INPUT -p udp --dport 123 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p udp --sport 123 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
#//Pakete vom Client zum Server
iptables -A INPUT -p tcp --dport 123 --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
#//Pakete vom SErver zum Client
iptables -A OUTPUT -p tcp --sport 123 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


#//Policy setzen - es wird alles verworfen
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Ein Problem hab ich Trotzdem noch(ihr habts bestimt schon gesehn):
Wenn ich OUTPUT auf Drop setze geht das mit dem Mails nicht mehr

Ich hab mittels nmap einen Portscan bei mir durchgeführt, der besagt;
Code:
PORT      STATE  SERVICE
7/tcp     closed echo
21/tcp    open   ftp
22/tcp    open   ssh
23/tcp    open   telnet
25/tcp    open   smtp
53/tcp    closed domain
80/tcp    closed http
123/tcp   closed ntp
10000/tcp open   snet-sensor-mgmt

Sieht das eher gut oder schlecht aus? (Bei Monowall sieht das ähnlich aus, nur ohne ftp und smtp ...)


Danke nochmals für eure Mühen ich werde mich mit den IPTABLES nochmal Intensivst auseinandersetzen.
Ich brauchte nur in diesem Fall schnell ergebnisse die AKzeptabel sind.
 

Frankie777

Advanced Hacker
Schau Dir mal dieses Beispiel ein. Das erweiterst Du dann um weitere Dienste für den INPUT.
Wichtig ist das Du verstehst wie connection tracking funktioniert und wie TCP, UDP und ICMP Protokolle ablaufen. Dann ist es auch mit den iptables nicht so schwer.



comm_iptables="/usr/sbin/iptables"

I_INT="eth0"
LOCAL_NET="192.168.55.0/24"

$comm_iptables -F
$comm_iptables -t nat -F
$comm_iptables -t mangle -F
$comm_iptables -X
$comm_iptables -t nat -X
$comm_iptables -t mangle -X
$comm_iptables -P INPUT DROP
$comm_iptables -P FORWARD DROP


$comm_iptables -A INPUT -i lo -j ACCEPT

# alle Pakete zu bekannten Verbindungen werden angenommen
$comm_iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH Verbindungsanfragen aus dem LAN (Prüfung auf Schnittstelle und Source-IP) werden akzeptiert
# um den Prozess vor Überlastung zu schützen wird limitiert und zur Doku geloggt
$comm_iptables -A INPUT -m state --state NEW -p TCP --dport 22 -m limit --limit 1/s --limit-burst 10 -j LOG --log-level 5 --log-prefix "SSH NEW:
$comm_iptables -A INPUT -i $I_INT -s $LOCAL_NET -p TCP --dport 22 -m state --state NEW -m limit --limit 1/s --limit-burst 5 -j ACCEPT



$comm_iptables -A INPUT -p tcp -i $I_INT -s $LOCAL_NET -j REJECT --reject-with tcp-reset
$comm_iptables -A INPUT -p udp -i $I_INT -s $LOCAL_NET -j REJECT --reject-with icmp-port-unreachable
$comm_iptables -A INPUT -p icmp -i $I_INT -s $LOCAL_NET -j REJECT --reject-with icmp-proto-unreachable
$comm_iptables -A INPUT -j DROP
 
Oben