Beiträge zu “iptables”

Firewall ausgehend einschränken

Bisher habe ich die Firewall regeln auf meinen Servern so eingerichtet das nur Dienste geschützt worden sind die auch laufen. Jetzt wollte ich das dahingehend umstellen das nur noch erlaubte Dienste etwas dürfen und das auch für den ausgehenden Verkehr.

ACHTUNG: Dies sind meine Notizen und kein Lehrbuch. Use at your own risk.

Basis war vor allem dieses Dokument.

So, erst einmal sehen was schon da ist

  sudo iptables -L --line-numbers
  Chain INPUT (policy ACCEPT)
  num  target     prot opt source               destination         
  1    ACCEPT     tcp  --  mail.hagen-bauer.de  anywhere             tcp dpt:smtp
  2    ACCEPT     tcp  --  mail.1bis3.de        anywhere             tcp dpt:smtp
  3    ACCEPT     tcp  --  localhost.localdomain  anywhere             tcp dpt:smtp
  4    DROP       tcp  --  anywhere             anywhere             tcp dpt:smtp

  Chain FORWARD (policy ACCEPT)
  num  target     prot opt source               destination         

  Chain OUTPUT (policy ACCEPT)
  num  target     prot opt source               destination   

Jetzt wollte ich

  • Antworten auf eigene Anfagen
  • ssh Verbindung
  • internen Verkehr auf localhost

erlauben.

Die alte Regel 4 wird durch einen generellen Drop ersetzt

  sudo iptables -D INPUT 4
  sudo iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  sudo iptables -I INPUT 1 -p tcp --dport 3005 -j ACCEPT
  sudo iptables -I INPUT 1 -i lo -j ACCEPT
  sudo iptables -A INPUT -j DROP

Ausgehend darf nur noch

  • Mail zu meinem Mailserver
  • interner Verkehr auf localhost
  • DNS Abfragen
  • Antworten auf eingegangene Anfragen

passieren

  sudo iptables -I OUTPUT -d mail.hagen-bauer.de -p tcp --dport 25 -j ACCEPT
  sudo iptables -I OUTPUT -d mail.1bis3.de -p tcp --dport 25 -j ACCEPT
  sudo iptables -A OUTPUT -o lo -j ACCEPT
  sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
  sudo iptables -I OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
  sudo iptables -I OUTPUT -p udp --sport 1024:65535 --dport 67 -j ACCEPT
  sudo iptables -A OUTPUT -j DROP

Weitergeleitet wird garnichts

 iptables -P FORWARD DROP

Bisher kann ich keine Probleme feststellen

22.3.18
Weitere Beiträge zu: iptables  

Regel für die Firewall iptables dauerhaft einrichten

Wenn man Regeln für iptabels wie hier einstellt dann bleiben die im Normalfall nicht erhalten wenn das Betriebssystem neu gestartet wird.

Mit folgenden einfachen Schritten kann man dies erreichen

 iptables -A INPUT ! -s 127.0.0.0/8 -p tcp --dport 8080 -j DROP
 iptables-save > /etc/iptables.up.rules
 vi /etc/network/if-pre-up.d/iptables 
     #!/bin/bash
     /sbin/iptables-restore < /etc/iptables.up.rules
 chmod +x /etc/network/if-pre-up.d/iptables 

Rebooten und noch mal prüfen

18.5.15
Weitere Beiträge zu: iptables  

iptables: alle bis auf localhost

Wenn man nur den Zugriff "auf sich selbst" erlauben möchte. Kann man gut gebrauchen wenn man mittel ssh portforwarding auf einen Server zugreifen möchte

iptables -A INPUT ! -s 127.0.0.0/8 -p tcp --dport 8080 -j DROP
iptables -A INPUT ! -s 127.0.0.0/8 -p tcp --dport 8443 -j DROP

 

25.2.13
Weitere Beiträge zu: iptables  

Debian: Offene Ports testen


Ich wollte testen ob die Firewall richtig arbeitet und war auf der Suche nach einem einfachen Program das auf dem entsprechenden Port "hört". Hier habe ich das gefunden.

vi test.pl

#!/usr/bin/perl
##### Written by Paul A. Luzzi on 07/01/2008
##### Name : perl_socket_8151.pl
##### Purpose : a basic perl socket listener
##### used to check that firewall ports are
##### open before installation of software
use strict;
use Socket;

##### Use port of 8151

my $port = shift || 8151;
my $proto = getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto)
  or die "Can not open socket $!\n";
setsockopt(SOCKET, SOL_SOCKET, SO_REUSEADDR, 1)
  or die "Can not set socket optoin to SO_REUSEADDR $!\n";
bind( SOCKET, pack('SnA4x8', AF_INET, $port, 0.0.0.0))
  or die "Can not bind to port $port! \n";
listen (SOCKET, 5) or die "listen: $!";
print "SERVER started on port $port \n";
my $client_addr;
while ($client_addr = accept(NET_SOCKET, SOCKET)) {
  # send them a message, close connection
  print NEW_SOCKET "Smile from the server :-) ";
  close NEW_SOCKET;
}

und ausführbar machen, aufrufen und von einem anderen Rechner aus mit Telnet ansprechen.

chmod +x test.pl
perl test.pl
SERVER started on port 8151
telnet www.hagen-bauer.de 8151
Trying 5.9.149.232...
Connected to www.hagen-bauer.de.
Escape character is '^]'.

Die Verbindung hat also geklappt. Dann den Port in dem Script ändern und nochmal aufrufen

 perl test.pl
SERVER started on port 8080
 telnet www.hagen-bauer.de 8080

Trying 5.9.149.232...
^C





 

 

 

5.2.13
Weitere Beiträge zu: iptables  

Debian: blockieren eines Ports mittels iptables

Die Notizen lehnen sich an dieses  Wiki an. Zuerst den gewünschten Port per Befehl blockieren. In diesem Fall 8080

/sbin/iptables -A INPUT -p tcp --destination-port 8080 -j DROP

Nun sehen wir mal wie das Ergebnis ist:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere            tcp dpt:http-alt

Diese Änderungen werden jetzt in einer iptables Konfigurationsdatei festgehalten damit wir die später beim neustarten automatisch restaurieren können.

iptables-save > /etc/iptables.up.rules


Diese Datei restauriert dann die Einstellungen beim Neustart:

vi /etc/network/if-pre-up.d/iptables
 #!/bin/bash /sbin/iptables-restore < /etc/iptables.up.rules

Und jetzt noch die Datei ausführbar machen

chmod +x /etc/network/if-pre-up.d/iptables

und neustarten.

4.2.13
Weitere Beiträge zu: Debian   iptables  

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License