Archive for the ‘ iptables ’ Category

IP Adressbereiche von Ländern sperren

Jeder der eine Website mit Kommentar Funktion oder ein Forum betreibt wird sich schonmal über die Kommentare in kyrillischer Sprache geärgert haben. Wer jedoch wie ich eine deutsche Seite betreibt kann sich dieser Probleme auf eine nicht gerade sehr freundliche aber einfache und Effektive Art entledigen.

Unter http://www.countryipblocks.net/country-blocks/select-formats/ kann man sich die IP Adressbereich einzelner Länder in verschiedenen Formaten ausgeben lassen. So zum Beispiel auch als iprange. Diese Liste kann man dann einfach in seine Firewall einpflegen. Ich denke es gibt aus Russland oder China nicht gerade viele Menschen, die sich auf deutschen Seiten rumtreiben. Wenn doch, so hätten diese leider keine Zugriff auf die eigene Seite.

Es muss jeder für sich entscheiden ob er das Risiko eingeht und die User aussperrt um auf der anderen Seite weniger Spam E-Mails und Spam Kommentare zu erhalten. Zuviele Firewall Regeln beeinflussen übrigens den Datendurchsatz eines Servers. Wieviele Regeln der Server verkraftet sollte jeder selber austesten.

Debian: Firewall beim starten laden

Wer sich selbst eine Firewall baut steht irgendwann vor der Frage “wie starte ich das Firewallscript bei jedem Boot?”.

Da gibts es zwei Möglichkeiten:

  1. Die Regel exportieren und bei jeder Aktivierung der Netzwerkkarte laden
  2. das script im entsprechnende Runleve Eintragen

 

Möglichkeit 1

Laden Sie zuerst die Firewall Regel. Sind diese wie gewünscht (iptables -L) exportieren Sie diese in eine Datei:

iptables-save > /etc/firewall.conf

Nun wird ein script erstellt, dass bei jedem laden der Netzwerkkrate ausgeführt wird.

echo "#\!/bin/bash" > /etc/network/if-up.d/firewall
echo "iptables-restore < /etc/firewall.conf" >> /etc/network/if-up.d/firewall
chmod +x /etc/network/if-up.d/firewall

Möglichkeit 2

Sie erstellen einen Link im entsprechenden Runleven auf das Firewallscript.

ln -s  /root/scripts/firewall.sh /etc/rc2.d/S99firewall

Das Firewall-Script selbst muss aber mit den Parametern start & stop umgehen können.

Beispiel: Weiterlesen

vmware: Port Forwarding

Wer mittels VMWare eine Maschine betreibt, möchte vielleicht auch wenn die Maschne im Host-Only Netzwerk läuft gewisse Ports nach außen freischalten. Dazu gibt es zwei Lösungen.

Vmware eigenes Portforwarding

Hierbei wird der umzuleitende Port in der Datei /etc/vmware/vmnet8/nat/nat.conf eingetragen

[incomingtcp]
# Use these with care - anyone can enter into your VM through these...
# FTP (both active and passive FTP is always enabled)
#      ftp localhost 8887
#8887 = 192.168.85.128:21
3389 = 192.168.85.128:3389
# WEB (make sure that if you are using named webhosting, names point to

Anschließend die virtuellen Netzwerkdienste neustarten

/usr/lib/vmware/net-services.sh restart

Das ganze funktionier relativ schnell, ist aber relativ langsam in der Datenübertragung.

Portforwarding mittels iptables

Hierbei werden die notwendigen Ports von der Physikalischen Maschine mittels iptables  an die virtuelle weitergeleitet. Dazu muss die virtuelle Maschine auch im Host-Only Netzwerk laufen. Weiterlesen

Debian: iptables Logging

Ich denke jeder kennt iptables. Meißt in der Funktion einer Firewall. Iptables können aber auch verwendet werden um den Netzwerkverkehr zu überwachten. Als erstes sollte dazu der Log-Level für den eingehenden Verkehr definiert werden.

Aktivierung:
iptables -A INPUT -j LOG --log-prefix "ipchains:" --log-level 4
Deaktivierung:
iptables -D INPUT -j LOG --log-prefix "ipchains:" --log-level 4

Nun können die Firewall Logs über den syslog-daemon in eine extra Datei umgelegt werden.

Syslog config Datei editieren:

vim /etc/syslog.conf

um folgende Zeile erweiteren: Weiterlesen

Debian: port knocking einrichten

I.d.R. werden Linux Systeme mit SSH Ferngewartet. Doch wenn man mal einen Blick in das auth Logfile wirft wird einem manchmal ganz anders. Da wird teilweise alle x Sekunden versucht sich über SSH anzumelden. Auch ein umlegen des SSH Ports bringt da nicht immer das gewünschte Ergebniss.

Jeder hat mittlerweile schon was von Portknocking gehört. Das Prinzip das dahinter steckt ist relativ simpel. Der eigentliche Dienst Port wird von der Firewall blockiert. Möchte man nun die Anwendung dahinter erreichen so senden man Pakete eines vorher definierten Typs an vorher fesgelegte Ports. Erkennt das System innerhalb von X Sekunden die entsprechenden Pakte an den definierten Ports, so wird der Zugriff für das absenden System für eine bestimmte Zeit geöffnet. Für SSH reichen wenigen Sekunden, da die Verbindung auch nach blockierung des Ports noch aktiv bleiben kann (bereites initiierte Verbindungen dürfen nicht von der Firewall gekappt werden).

Nun aber zur Einrichtung des port knocking dameons…. Unter Debian gibt es ein Paket namens knockd das zuerst installiert werden muss…

apt-get install knockd

Anschließend muss der Dienst noch aktiviert werden

/etc/default/knockd
START_KNOCKD=1

Nun kommt die Konfiguration des Daemons

/etc/knockd.conf
[options]
        logfile = /var/log/knockd.log
[openSSH]
        sequence        = 1234,5678,9101
        seq_timeout     = 15
        start_command   = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags        = syn
        cmd_timeout     = 30
        stop_command    = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Dieses Beispiel erwartet innerhalb von 15 Sekunden (seq_timeout) syn Pakete (tcpflags) auf den Ports 1234, 4567, 9101 (sequence) und erweitert nach erfolgreicher “Authentifizierung” die iptables (start_command) um eine Regel die Verbindungen der Quelladresse auf Port 22 zulässt. Anschließend wird nach 30 Sekunden der Port 22 wieder geschlossen (cmd_timeout)

Um nun eine Verbindung aufzubauen müssen Sie zuerst an den entsprechenden Ports “anklopfen”

knock 1234 5678 9101
ssh host

Links