ubuntuusers.de

Firewall für Server konfigurieren

Status: Gelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

user32847

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Hallo Ubuntuusers,

im Moment bin ich dabei, meinen ersten VPS zu konfigurieren. Dabei möchte ich mit Hilfe von ufw eine Firewall konfigurieren. Ich bin momentan viel am lesen und möchte, auch aufgrund mangelnder Erfahrung, erstmal auf Nummer sicher gehen und den Server möglichst restriktiv konfigurieren.

Auf dem Server soll erstmal nur nginx laufen. Ansonsten brauche ich SSH-Zugang. Das bedeutet also, dass ich nur Port 22, 80 und 443 für die Außenwelt öffnen möchte. Allerdings bin ich mir nicht ganz sicher, ob das dann richtig ist.

Standardmäßig sind auf dem Server folgende Ports offen:

sudo netstat -tulpen | grep -v 127.0.0.1 

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        28516      3136/systemd-resolv 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          68428      631/sshd            
tcp6       0      0 :::22                   :::*                    LISTEN      0          68439      631/sshd            
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        28515      3136/systemd-resolv 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           0          14642      746/dhclient  

Die gelb markierten Stellen verstehe ich. Das ist einfach nur der SSH-Daemon, der sowohl für IPv4 als auch IPv6 auf dem Port 22 lauscht. Mit den andere drei Zeilen kann ich allerdings nicht ganz so viel anfangen. Wofür sind systemd-resolv und dhclient? Muss ich aufgrund dessen die Ports 53 und 68 auch für die Außenwelt öffnen? Ich bitte um Aufklärung. 😉

Danke für die Hilfe schonmal!

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

user32847 schrieb:

Muss ich aufgrund dessen die Ports 53 und 68 auch für die Außenwelt öffnen?

Nein, das musst Du nicht. Port 53 ist für das _lokale_ DNS und auf dem Port 68 wird für ankommende broadcasts (vom DHCP-Server) gelauscht.

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Hallo lubux, herzlichen Dank für deine Antwort.

Aber funktioniert das lokale DNS und das Broadcasting dann weiterhin, wenn ich folgendes mit ufw einstelle?

ufw allow 22
ufw allow 80
ufw allow 443
ufw enable

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

user32847 schrieb:

Aber funktioniert das lokale DNS und das Broadcasting dann weiterhin, wenn ich folgendes mit ufw einstelle?

Naja, ich benutze ufw nicht, sondern iptables. Poste mal die Ausgaben von:

sudo iptables -nvx -L

Befindet sich dein Server hinter einem Router oder ist der Server direkt im Internet?

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

@user32847

Diesen folgenden, scheinbar beiläufigen und 'vermutlich' unwichtigen Hinweis möchte ich Dir gerne ans Herz legen und empfehlen, dem doch ein wenig mehr Beachtung zu schenken... denn da steckt deutlich mehr Gewicht drin, als man vermutet.

lubux schrieb:

Naja, ich benutze ufw nicht, sondern iptables.

Ich halte die UFW nämlich auch nicht in allen Fällen für eine gute Wahl, z.B. dann nicht, wenn es um die individuelle Ausrichtung eines Paketfilters auf den eigenen Server geht. Die UFW ist prima, wenn ein Anfänger seinen Laptop draußen an offenen Accesspoints schützen will, ohne sich um so was kompliziertes wie Filterregeln im Kernel kümmern zu müssen. Aber wenn es sich um einen Server und dessen individuell vom Admin eingestellte Dienste handelt, bist Du mit dem Verstehen von eigenen Regeln und deren Aktivierung deutlich besser aufgestellt. Die UFW erstellt teilweise ein Regelwerk in einer Komplexität, das kaum noch überschaubar ist, selbst bei einfachen Anforderungen. Das bedeutet, durch den suggesitiven Namensteil "Firewall" und einem Haufen durch unzählige Verzweigungen schwer nachvollziehbarer Regeln fühlst Du Dich sicher, ohne faktisch bestätigen zu können, dass die Sicherheit wirklich gegeben ist. Man erkennt kaum, ob auch Dienste gefiltert werden, die es gar nicht gibt, oder ob andere aktive Dienste schlichtweg unbeachtet wurden. Ohne wirklich Hand an individuelle Regel anzulegen, bleibt die UFW nur ein einfaches statisches Stateless-Regelwerk. Aber Hand anzulegen bedeutet, eben über das notwendige Wissen zu verfügen... und wer das hat, kann besser gleich die iptables verwenden. Darüber hinaus kommt erschwerend bei Dualstack-DSL-Accounts hinzu, dass man keinen Einfluss darauf hat, welchen IP-Stack eine Anwendung verwendet, woraus resultiert, dass man beide IP-Stacks filtern muss, also IPv4 und IPv6.... und dem Rat, das bessere IPv6 zu deaktivieren, ums einfacher zu haben, kann man wohl wohl kaum ernsthaft folgen.

Aber mal ganz nebenbeibemerkt, nicht überall, wo "Firewall" draufsteht, ist auch wirklich Firewall drin. Die UFW ist NUR ein Paketfilter, zu einer tatsächlich wirksamen Firewall gehört ein wenig mehr, als nur ein paar Filter-Regeln einzustellen. Es gibt leider haufenweise Aspekte, die alle Deine Regeln wieder völlig neutralisieren können.

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

lubux schrieb:

user32847 schrieb:

Aber funktioniert das lokale DNS und das Broadcasting dann weiterhin, wenn ich folgendes mit ufw einstelle?

Naja, ich benutze ufw nicht, sondern iptables. Poste mal die Ausgaben von:

sudo iptables -nvx -L

Befindet sich dein Server hinter einem Router oder ist der Server direkt im Internet?

Der Server ist direkt über das Internet erreichbar.

Hier der Output von sudo iptables -nvx -L:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination 

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

user32847 schrieb:

Der Server ist direkt über das Internet erreichbar.

Hier der Output von sudo iptables -nvx -L:

OK, d. h. ufw ist (noch) nicht aktiv. Wie hast Du den sshd konfiguriert? Mit Passwort- oder mit publickey-Zugang? Ist dein Server auch per IPv6 aus dem Internet erreichbar?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9719

Wohnort: Münster

user32847 schrieb:

[…] meinen ersten VPS […] Firewall

Eine Firewall, die auf demselben Gerät läuft wie der Server, ist nutzlos. Sie kann sogar schädlich sein, weil sie das Gesamtsystem anfälliger für DoS-Angriffe (Denial of Service) macht.

Eine Firewall gehört auf eine dem eigentlichen Server vorgeschaltete Hardware. Nur so kann man verhindern, dass unerwünschte Pakete den Server erreichen.

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

kB schrieb:

Eine Firewall, die auf demselben Gerät läuft wie der Server, ist nutzlos. Sie kann sogar schädlich sein, weil sie das Gesamtsystem anfälliger für DoS-Angriffe (Denial of Service) macht.

Ein weiterer Grund, lieber auf die UFW zu verzichten. Desweiteren denke ich, dass man solche DoS-Attacken mit IPtables verhindern kann.

Eine Firewall gehört auf eine dem eigentlichen Server vorgeschaltete Hardware. Nur so kann man verhindern, dass unerwünschte Pakete den Server erreichen.

Ja, das stimmt... ein Aspekt, der meistens gar nicht beachtet wird. Aber ich glaube, ein lokaler Paketfilter kann trotzdem "gewinnbringend" direkt auf der Maschine betrieben werden. Eine für mich nicht ganz unwichtige Überlegung dabei ist nämlich, wenn man zusätzliche (Strom-)Kosten und eine weitere Maschine mit weiterem Wartungsaufkommen scheut, kann auch ein lokaler Paketfilter die Sicherheitsfrage verbessern. Bei dem Hintergrund muss man dann seine persönlichen Prämissen gegeneinander aufwiegen und dann irgendeine Entscheidung treffen.

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Ich würde gerne nochmal wegen diesen drei Zeilen nachfragen.

Wenn man die ufw so einstellt, wie oben beschrieben. Dann dürften die drei Services doch eigentlich gar nicht mehr funktionieren, oder sehe ich das falsch?

Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        28516      3136/systemd-resolv
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        28515      3136/systemd-resolv 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           0          14642      746/dhclient  

lubux schrieb:

user32847 schrieb:

Der Server ist direkt über das Internet erreichbar.

Hier der Output von sudo iptables -nvx -L:

OK, d. h. ufw ist (noch) nicht aktiv. Wie hast Du den sshd konfiguriert? Mit Passwort- oder mit publickey-Zugang? Ist dein Server auch per IPv6 aus dem Internet erreichbar?

Auch per IPv6 erreichbar und nur Public-Key-Zugang.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

user32847 schrieb:

Wenn man die ufw so einstellt, wie oben beschrieben. Dann dürften die drei Services doch eigentlich gar nicht mehr funktionieren, oder sehe ich das falsch?

Nein, das siehst Du nicht falsch. Wenn ufw, dann nicht für das lo-Interface (... wegen der 127.0.0.53) und in der INPUT chain, den destination-UDP-Port 68 auf ACCEPT lassen für NEW-Verbindungen.

Für IPv6 gibt es "IPV6=yes" in der "/etc/default/ufw", ... wenn Du auf ufw nicht verzichten willst.

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Was ich nicht ganz verstehe: Während systemd-resolv nur im lokalen Netzwerk erreichbar scheint, ist der DHCP-Client vom Internet aus erreichbar. Das ist das Standard-Image von Hetzner.

Edit: Dass der DHCP-Client erreichbar ist, steht auch im Wiki und düfte kein Problem sein → https://wiki.ubuntuusers.de/Offene_Ports/#Dhclient

Abschließende Frage:

Die offenen Ports kann ich also alle so lassen, oder?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

user32847 schrieb:

Die offenen Ports kann ich also alle so lassen, oder?

Ja.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

user32847 schrieb:

Dabei möchte ich mit Hilfe von ufw eine Firewall konfigurieren.

Die Frage ist, wozu du das willst. Normalerweise sollten auf einem System nur die Dienste öffentlich lauschen, welche auch öffentlich erreichbar sein sollen. Eine Firewall macht Sinn, wenn du auf bestimmte IP-Bereiche oder sowas beschränken willst. Willst du das nicht, sondern 22, 80 und 443 generisch öffnen, macht das ganze Konzept keinen Sinn. Mit anderen Worten: Eine nicht vorhandene Tür braucht keinen Türsteher, und die Türen, die du hast, sind eh öffentlich erreichbar.

Das heißt natürlich auch, dass du genau wissen musst, welche Dienste bei dir wo lauschen! Das ist aber sowieso Voraussetzung für einen sicheren Betrieb eines Servers...

Antworten |