Firewall und SELinux
iptables ist ein Userspace-Programm zur Konfiguration der Tabellen (tables), die durch die Firewall im Linux-Kernel (bestehend aus einer Reihe von Netfilter-Modulen) bereitgestellt werden. Diese Tabellen enthalten Ketten (chains) und Regeln (rules). Verschiedene Programme werden gegenwärtig für unterschiedliche Protokolle verwendet.
SELinux ist eine Erweiterung des Linux-Kernels, die den ersten Versuch darstellt, das FLASK-Konzept der NSA umzusetzen. Es implementiert die Zugriffskontrollen auf Ressourcen im Sinne von Mandatory Access Control. SELinux wird maßgeblich von der NSA und von dem Linux-Distributor Red Hat entwickelt.
SELinux
Installation
yum install setools setools-gui
Befehle und Tools
Folgende Programme sind in den Paketen setools bzw. setools-gui enthalten und stellen grundlegende Werkzeuge für die Arbeit mit SELinux zur Verfügung.
seinfo | zeigt eine Statistik der SELinux-Policy an |
sestatus | zeigt allgemeine Statusinformationen von SELinux an |
sediff | eine spezielle Variante des Programms diff für die SELinux-Policy, vergleicht zwei Policies auf sematische Unterschiede |
sediffx | die grafische Oberfläche zu sediff |
semodule | ein Programm zur Verwaltung von SELinux-Modulen |
getenforce | zeigt an, ob SELinux im Enforcing-Modus arbeitet oder nicht |
setenforce | ändert temporär den SELinux-Modus (0=Permissive Mode, 1=Enforcing Mode) |
Ein grafisches Konfigurationstool wird nachinstalliert mit
yum install policycoreutils-gui
Weitere Informationen
http://debian-handbook.info/browse/de-DE/stable/sect.selinux.html
http://wiki.centos.org/HowTos/SELinux
http://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-admincontrol.html
Sicherheitsmanagement mit SELinux unter CentOS 5
IPtables
Die Paketprüfung und die mit iptables zu erstellenden Filterregeln sind dreistufig aufgebaut. Es gibt (hierarchisch von oben nach unten):
- Tabellen
- Chains
- die eigentliche Filterregeln
Trifft eine in einer Tabelle und Chain definierte Regel zu, so wird die in der Regel hinterlegte Aktion ausgeführt. Sollte keine Regel zutreffen so wird die in der Tabelle hinterlegte Default-Policy angewendet
Beispiel Portweiterleitung
Diese Regel leitet den Ausgangsport 21 zum Zielport 1121 um
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j REDIRECT --to-port 1121Diese Regel leitet den gesamten Traffic von Port 80 auf Port 81 um
iptables -t nat -I PREROUTING --src 0/0 --dst 192.168.1.5 -p tcp --dport 80 -j REDIRECT --to-ports 8123
iptables Grundkonfiguration mit der GUI
System → Administration → Firewall mit der GUI ist es möglich
- Benötigte Ports freizugeben und wieder zu schließen
- Schnittstellen zu vertrauen
- Masquerading einzurichten
- Portweiterleitungen und NAT einzurichten
- ICMP Filter zu aktivieren / deaktivieren
- Firewall aktivieren / deaktivieren
Weitere Informationen:
http://de.wikibooks.org/wiki/Linux-Kompendium:_Linux-Firewall_mit_IP-Tables
http://www.online-tutorials.net/internet-netzwerk/iptables-tutorial/tutorials-t-29-214.html
http://www.netfilter.org/documentation/index.html#documentation-howto
Webmin
Shorewall
Shorewall (Kurzform für Shoreline Firewall; benannt nach dem Wohnort seines Autors Thomas M. Eastep, Shoreline, Washington, Vereinigte Staaten) ist ein freier Firewall-Konfigurator, der auf den im Linux-Kernel eingebauten netfilter aufsetzt (http://www.shorewall.net/).
Sie kann über die Konfigurationsdateien konfiguriert werden .Zusätzlich gibt es eine mächtige Erweiterung für webmin.
Installation
yum install shorewall
Oder wenn dies nicht funktioniert, gibt es unter www.shorewall.net für CentOS vorbereitete Installationspakete.Die Default-Config muss erst in das richtige Verzeichnis (/etc/shorewall) kopiert werden. Die Sample Dateien liegen unter /usr/share/doc/shorewall-4.5.0.3/Samples/, wobei der Pfad auf die Versionen angepasst werden muss.
cd /usr/share/doc/shorewall-4.5.0.3/Samples/two-interfaces # Sample Dateien für eine FW mit 2 NIC cp interfaces rules zones policy /etc/shorewall
Konfiguration
Anschließend müssen noch die folgenden Config-Files editiert werden:
In der Datei /etc/shorewall/interfaces wird die Netzwerkkarte und die Broadcast Adresse eingestellt.
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,nosmurfs,routefilter,logmartians
loc eth1 detect tcpflags,nosmurfs,routefilter,logmartians
In der Datei /etc/shorewall/policy wird die grundlegende Konfiguration der einzelnen Verbindungen festgelegt. $FW bezeichnet den verwendeten PC selbst und net ist unsere Netzwerkkarte wie in /etc/shorewall/interfaces angegeben. Die folgende Konfiguration erlaubt den PC auf allen Ports nach aussen zu senden, aber alle eingehenden Anfragen zu verwerfen.
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net ACCEPT net all DROP info # THE FOLLOWING POLICY MUST BE LAST all all REJECT info
In der Datei /etc/shorewall/zones muss folgendes eingestellt werden.
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4
In der Datei /etc/shorewall/rules können dann einzelne Ports behandelt werden. Das folgende Beispiel zeigt auf 2 verschiedene Varianten wie der SSH-Port (Port 22) zugelassen werden kann.
#Variante 1 mit Macros SSH/ACCEPT net $FW #Variante 2 mit der Portnummer ACCEPT net $FW tcp 22
Welche Macros zur Verfügung stehen kann man leicht mit folgendem Befehl herausfinden:
shorewall show macros
Danach muss noch die Firewall gestartet werden.
shorewall safe-start
Sollte sie bereits laufen, hilft der folgende Befehl.
shorewall safe-restart
Sobald die Firewall abschließend getestet ist, muss sie nur mehr beim Starten des PCs mitgestartet werden.
chkconfig shorewall on
Das wars, damit sollten Sie sicherer sein, als zuvor.
Weitere Informationen und ein gutes Tutorial: http://www.linuxarticles.org/2011/05/firewall-shorewall-configuration-on-linux/
http://www.cyberciti.biz/faq/centos-rhel-shorewall-firewall-configuration-setup-howto-tutorial/
Smoothwall
Smoothwall ist eine weitere Open Source Firewall für Linux http://www.smoothwall.org/get/
FWBuilder
Dies ist ein Tool um in einem Netzwerksegment mehrere Client Firewallsettings synchron zu halten und um neue Regeln generieren zu können
Installation
vim /etc/yum.repos.d/fwbuilder.repo
[fwbuilder] name=Firewall Builder failovermethod=priority baseurl=http://packages.fwbuilder.org/rpm/stable/rhel-$releasever-$basearch enabled=1 [fwbuilder-testing] name=Firewall Builder Test Builds failovermethod=priority baseurl=http://packages.fwbuilder.org/rpm/testing/rhel-$releasever-$basearch enabled=0Der Sicherheitsschlüssel muss importiert werden
rpm --import http://www.fwbuilder.org/PACKAGE-GPG-KEY-fwbuilder.asc
Jetzt kann mit yum installiert werden
yum install fwbuilder
Der fwbilder ist bestens geeignet eine sehr komplexe Firewall zu erstellen. Daher ist der Funktionsumfang sehr hoch. Im Internet gibt es einige Anleitungen wie fwbuilder verwendet werden kann.
Weitere Informationen
- http://dokuwiki.tachtler.net/doku.php?id=tachtler:firewallbuilder (sehr gute Anleitung)
Weitere Informationen:
http://www.vdr-wiki.de/wiki/index.php/WAKE_ON_LAN
http://www.slixs.at/web/dokus/sarge/shorewall.htm
http://www.howtoforge.com/how-to-set-up-shorewall-firewall-on-centos-5.1
http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2011/05/Firewalls-in-der-GUI-konfigurieren-mit-FWBuilder/%28printView%29/true
http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2005/05/Grafische-Firewall-Administration-mit-FWBuilder-2.0