iptables CentOS

seiimonn

Cadet 3rd Year
Registriert
Nov. 2012
Beiträge
42
Hallo zusammen

Momentan habe ich ein Projekt von der Schule mit einem Webserver. Es sollte CentOS 6.6 verwendet werden. So weit, so gut.
Installation Bind (für virtual-sites) ohne Probleme. Nun die grosse Herausforderung, damit auch die Clients auflösen können, muss die Firewall die Anfragen durchlassen. Ich habe bereits mehrere Stunden versucht dies zu erreichen.

Mit Hilfe verschiedener Tutorials, sieht meine iptables-Datei so aus:

Code:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Wenn ich die Datei so speichere und den Dienst mittels "service iptables restart" neu starte, funktioniert die Auflösung von den Clients aus.

Wenn "iptables -L" eingegeben wird kommt das hier:
Code:
[root@websrv ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:domain
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nun starte ich den Server neu, und nichts geht mehr. Daraufhin nochmals "iptables -L" bringt das gleiche wie vor dem Neustart.
Die Clients können jedoch nichts auflösen. Änderungen an der Datei ändern ab hier nichts mehr. Ich muss jeweils den Snapshot vor den Änderungen an der Iptables zurückziehen, damit etwas geht.

Ich hoffe meine Erläuterung ist verständlich und es kann mir jemand weiterhelfen.

Gruss WhatHeSays
 
Du musst die Config auch abspeichern, die Regeln sind erst mal nur im RAM und bei einem Neustart verloren. Falls du dich ausperrst oder sonst etwas kaputt machst kannst du das so leicht zurück setzen. Es gibt nun mehrere Wege die Regeln automatisch wiederherstellen zu lassen. CentOS hat da auch eine Anleitung dazu (ist nämlich bei jeder Linux Distri ein wenig anders) https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s1-iptables-saving.html
 
versuch es, es kann sich nur darum handeln das die tables nicht vollständig abrufbar sind.
 
Dies ist der Fall, wenn die Regeln als Befehl eingetragen werden. Die verlinkten Befehle, schreiben alle momentanen Regeln aus dem RAM in die Datei "/etc/sysconfig/iptables". Ich bearbeite diese Datei jedoch direkt.

Nach dem Neustart werden die Regeln bei mir Angewandt. Dies ist durch die Eingabe von "iptables -L" zu erkennen. Denn die Eingabe ist von und nach dem Neustart dieselbe. Nur irgendwie sind die Ports trotzdem zu...
 
Guten Abend,

Welche Ports versuchst du zu erreichen? TCP-Port 22 und UDP-Port 53?
Wenn die Regeln unten geladen sind, dann sind sie offen. Überprüfe, ob die
entsprechenden Anwendungen auf den Ports auch Pakete annehmen. Das tust du mit "ss -pnl".
Der Befehl gibt dir eine Liste der offenen Sockel zurück. Du hast im oberen Teil
des ersten Beitrags einen Webserver erwähnt. Versuchst du diesen zu erreichen? Dafür musst
du offensichtlich Port 80 öffnen.

Grüße,
Thermi
 
Momentan nur TCP 22 (SSH) und UDP/TCP 53 (Domain). Port 80 und 443 kommen dann später hinzu.
Der Webserver ist dann das Endstadium. Zuerst muss jedoch der DNS laufen (Virtual-Hosts).
Ich habe festgestellt, dass nach dem Neustart auch auf dem Server selbst nicht mehr aufgelöst werden kann.
Bind läuft selbst jedoch und "named-checkzone" sowie "named-checkconf" bringen keine Fehler.
Ich werde mal den Bind frisch installieren und schauen was passiert!

Vielen Dank für eure Hilfe!
 
Mit dem frisch installierten Bind läuft es nun. Keine Ahnung, was der Fehler war.
Nochmals vielen Dank und schönen Abend noch :)
 
Ich vermute, der Bind war vorher nur ans loopback interface gebunden und deshalb von außen nicht erreichbar. Da hilft alles Abschalten der iptables nichts. ;)
 
Zurück
Oben