Login
Newsletter
Werbung

Mo, 17. April 2000, 00:00

Firewalling unter Linux

Praktische Beispiele

Da die Firewall ihre letzte Konfiguration nicht automatisch speichert und nach einem Neustart des Rechners diese auch nicht automatisch neu lädt, empfehle ich, die im Folgenden aufgeführten Einzelaufrufe von ipchains in ein Skript zu schreiben, welches nach jedem Neustart ausgeführt wird und somit die Firewall konfiguriert. Schreiben Sie dazu das jeweilige Skript zur Konfiguration der Firewall und machen Sie einen entsprechenden Eintrag zum Aufruf des Skripts im init-Skript Ihres Rechners.

Hinweis: Man kann mit dem Befehl ipchains-save > regeln die aktuellen Regellisten in die Datei regeln schreiben und sie von dort bei jedem Neustart des Rechners mit ipchains-restore < regeln in die Firewall laden. Somit reicht es, anstatt des Firewall-Konfigurationsskriptes nach jedem Neustart ipchains-restore aufzurufen.

Hinweis: Die folgenden Beispiele gehen davon aus, dass die Firewall eine interne Netzwerkkarte $DEV_LAN mit der IP-Adresse (der LAN Adresse der Firewall) $IP_LAN, der LAN-Adresse und Maske $LAN hat.

Außerdem hat die Firewall ein externes Netzwerkinterface (ins Internet) $DEV_INET mit der IP-Adresse $IP_INET, und der Inter-Netz-Adresse und Maske $INET.

Es sollten also folgende Zeilen am Anfang jedes Firewall-Initialisierungs-Skriptes stehen (wobei Sie natürlich die Adressen durch die in Ihrer Konfiguration benutzten Adressen austauschen müssen):

DEV_LAN = eth0
IP_LAN = 192.168.0.1
LAN = 192.168.0.0/255.255.255.0
DEV_INET = ppp0
IP_INET = 141.35.1.16
INET = 0.0.0.0/0.0.0.0

Erste Konfiguration

Als ersten Schritt bei der Konfiguration der Firewall löschen wir alle alten Regeln und alle benutzerdefinierten Regellisten mit folgendem Befehl:

ipchains -F

Um jeglichen Netzwerkverkehr zu verbieten, der nicht explizit erlaubt wurde, wählen wir die Default-Policy DENY oder REJECT für alle drei Standard-Regellisten.

ipchains -P input DENY
ipchains -P forward DENY
ipchains -P output DENY

Nun müssen wir ledeglich die von uns gewünschten Dienste freischalten. Würden wir prinzipiell alles erlauben, und nur die »gefährlichen« Dienste verbieten, so würden wie Gefahr laufen einen gefährlichen Dienst zu übersehen.

Als erstes erlauben wir die lokale Netzwerkkommunikation auf der Firewall über das »local loopback device":

ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT

Für eine normale TCP-Verbindung durch die Firewall sind sechs Regeln notwendig. Drei für den Hinweg und drei für den Rückweg der Pakete.

Wollen wir nun z.B. allen Rechnern im an der Firewell angeschlossenen LAN den Zugriff auf einen Internet-Proxy gewähren, der auf der Firewall installiert ist, so gehen wir wie folgt vor:

# Wir sorgen dafür, dass der Proxy auf der Firewall von Clients
# im LAN angesprochen werden kann, indem TCP-Pakete von einem
# Port > 1024 kommend an den Port 3128 gehend (da ist der Proxy)
# akzeptiert werden.
ipchains -A input -s $LAN 1024: -d $IP_LAN 3128 -p tcp -i $DEV_LAN -j ACCEPT
# Erlaubt die Antwortpakete vom Proxy ins LAN. ! -y sorgt dafür, dass nur
# Pakete ohne SYN-Bit passieren dürfen. Der Proxy darf also nicht versuchen,
# mit dem SYN-Bit neue Verbindungen zu den Clients im LAN zu initialisieren.
# Das ist nur für den Fall, dass sich jemand in der Firewall
# befindet und von dort aus Angriffe auf einen der Clients versucht.
ipchains -A output -s $IP_LAN 3128 -d $LAN 1024: -p tcp -i $DEV_LAN -j ACCEPT ! -y

Damit haben aber die Clients im LAN keinen direkten Internetzugang. Es werden lediglich all ihre Anfragen an den Proxy und von diesem in das Internet gesendet. Die Antworten aus dem Internet werden vom Proxy entgegengenommen und an die Clients gesendet.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung