One place for hosting & domains

      Firewall

      Cara Membuat Daftar dan Menghapus Aturan Firewall Iptables


      Pengantar

      Iptables adalah suatu firewall yang memainkan peran penting dalam keamanan jaringan untuk banyak sistem Linux. Walaupun banyak tutorial iptables yang akan mengajarkan Anda cara menciptakan aturan firewall untuk mengamankan server, tutorial berikut ini akan berfokus pada aspek yang berbeda dari manajemen firewall: membuat daftar dan menghapus aturan.

      Dalam tutorial ini, kita akan membahas cara melakukan tugas iptables berikut:

      • Membuat daftar aturan
      • Membersihkan Penghitung Bita dan Paket
      • Menghapus aturan
      • Melakukan flush rantai (menghapus semua aturan dalam suatu rantai)
      • Melakukan flush semua rantai dan tabel, menghapus semua rantai, dan menerima semua lalu lintas

      Catatan: Ketika bekerja dengan firewall, berhati-hatilah agar jangan sampai Anda mengunci diri sendiri dari server dengan memblokir lalu lintas SSH (porta 22, secara asali). Jika Anda kehilangan akses karena pengaturan firewall, Anda mungkin perlu menghubungkannya melalui konsol di luar jaringan untuk memperbaiki akses Anda.

      Prasyarat

      Tutorial ini mengasumsikan Anda menggunakan server Linux dengan perintah iptables yang sudah terinstal, dan bahwa pengguna Anda memiliki privilese sudo.

      Jika Anda memerlukan bantuan dengan penyiapan awal ini, silakan merujuk ke panduan Penyiapan Server Awal dengan Ubuntu 20.04 dari kami. Juga tersedia untuk Debian dan CentOS

      Mari kita lihat cara membuat daftar aturan terlebih dahulu. Ada dua cara berbeda untuk melihat aturan iptables Anda yang sedang aktif: di dalam tabel atau sebagai daftar dari spesifikasi aturan. Kedua metode ini memberikan informasi yang kurang-lebih sama dalam format berbeda.

      Untuk membuat daftar dari semua aturan iptables yang aktif menurut spesifikasi, jalankan perintah iptables dengan opsi -S:

      Output

      -P INPUT DROP -P FORWARD DROP -P OUTPUT ACCEPT -N ICMP -N TCP -N UDP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

      Seperti yang Anda lihat, keluarannya terlihat seperti perintah yang digunakan untuk menciptakannya, tanpa perintah iptables yang mendahuluinya. Ini juga akan terlihat mirip dengan berkas konfigurasi aturan iptables, jika Anda pernah menggunakan iptables-persistent atau iptables save.

      Membuat Daftar Rantai Spesifik

      Jika Anda ingin membatasi keluaran menurut suatu rantai spesifik (INPUT, OUTPUT, TCP, dll.), Anda dapat menentukan nama rantai secara langsung setelah opsi -S. Misalnya, untuk menunjukkan semua spesifikasi aturan dalam rantai TCP, Anda akan menjalankan perintah ini:

      Output

      -N TCP -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

      Sekarang mari kita lihat cara alternatif untuk melihat aturan iptables yang aktif, sebagai tabel aturan.

      Membuat Daftar Aturan sebagai Tabel

      Membuat daftar aturan iptables dalam bentuk tabel dapat berguna untuk membandingkan aturan-aturan yang berbeda terhadap satu sama lain,

      Untuk mendapatkan keluaran dari semua aturan iptables aktif dalam suatu tabel, jalankan perintah iptables dengan opsi -L:

      Ini akan memberikan keluaran dari semua aturan saat ini yang diurutkan berdasarkan rantai.

      Jika Anda ingin membatasi keluaran menurut suatu rantai tertentu (INPUT, OUTPUT, TCP, dll.), Anda dapat menentukan nama rantai secara langsung setelah opsi -L.

      Mari kita lihat contoh dari rantai INPUT:

      Output

      Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID UDP udp -- anywhere anywhere ctstate NEW TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW ICMP icmp -- anywhere anywhere ctstate NEW REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable REJECT tcp -- anywhere anywhere reject-with tcp-reset REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

      Baris pertama keluaran mengindikasikan nama rantai (INPUT, dalam kasus ini), yang diikuti oleh kebijakan asali (DROP). Baris selanjutnya terdiri atas tajuk dari setiap kolom di dalam tabel, dan diikuti oleh aturan rantai. Mari kita membahas yang diindikasikan setiap tajuk:

      • target: Jika paket sesuai aturan, maka target menetapkan tindakan yang harus dilakukan dengannya. Sebagai contoh, paket dapat diterima, didrop, dicatat, atau dikirim ke rantai lain untuk dibandingkan terhadap aturan lebih lanjut
      • prot: Protokol, seperti tcp, udp, icmp, atau all
      • opt: Jarang digunakan, kolom ini mengindikasikan opsi IP
      • source: Alamat IP sumber atau subnet lalu lintas, atau anywhere
      • destination: Alamat IP tujuan atau subnet lalu lintas, atau anywhere

      Kolom terakhir, yang tidak diberi label, mengindikasikan opsi dari suatu aturan. Yang berarti, bagian apa pun dari aturan yang tidak diindikasikan oleh kolom sebelumnya. Ini dapat berupa apa pun, mulai dari porta sumber dan tujuan hingga kondisi koneksi dari paket.

      Menampilkan Hitungan Paket dan Ukuran Agregat

      Ketika membuat daftar aturan iptables, dimungkinkan untuk menampilkan jumlah paket, dan ukuran agregat dari paket dalam bita, yang sesuai dengan setiap aturan tertentu. Ini seringkali berguna saat sedang mencoba mendapatkan ide kasar tentang aturan yang sesuai dengan paket. Untuk melakukannya, gunakan opsi -L dan -v secara bersamaan.

      Misalnya, mari kita lihat rantai INPUT lagi, dengan opsi -v:

      • sudo iptables -L INPUT -v

      Output

      Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 DROP all -- any any anywhere anywhere ctstate INVALID 396 63275 UDP udp -- any any anywhere anywhere ctstate NEW 17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW 2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW 396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable 2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

      Perhatikan bahwa daftar itu sekarang memiliki dua kolom tambahan, pkts dan bytes.

      Kini karena Anda telah mengetahui cara membuat daftar aturan firewall aktif dengan berbagai cara, mari kita lihat cara Anda dapat melakukan reset penghitung bita dan paket.

      Melakukan Reset Hitungan Paket dan Ukuran Agregat

      Jika Anda ingin membersihkan, atau menjadikan nol, penghitung bita dan paket untuk aturan Anda, gunakan opsi -Z. Opsi ini juga melakukan reset jika boot ulang terjadi. Ini berguna jika Anda ingin melihat apakah server Anda menerima lalu lintas baru yang sesuai dengan aturan yang ada.

      Untuk membersihkan penghitung semua rantai dan aturan, gunakan opsi -Z itu sendiri:

      Untuk membersihkan penghitung semua aturan dalam rantai tertentu, gunakan opsi -Z dan tentukan rantainya. Misalnya, untuk membersihkan penghitung rantai INPUT, jalankan perintah ini:

      Jika Anda ingin membersihkan penghitung untuk suatu aturan tertentu, tentukan nama rantai dan nomor aturan. Misalnya, untuk menjadikan penghitung kembali ke nol pada aturan pertama dalam rantai INPUT, jalankan ini:

      Karena kini Anda telah mengetahui cara melakukan reset penghitung bita dan paket iptables, mari kita lihat dua metode yang dapat digunakan untuk menghapusnya.

      Salah satu cara untuk menghapus aturan iptables adalah dengan spesifikasi aturan. Untuk melakukannya, Anda dapat menjalankan perintah iptables dengan opsi -D yang diikuti oleh spesifikasi aturan. Jika Anda ingin menghapus aturan menggunakan metode ini, Anda dapat menggunakan keluaran dari daftar aturan iptables -S untuk bantuan.

      Misalnya, jika Anda ingin menghapus aturan yang mengedrop paket masuk yang tidak valid (-A INPUT -m conntrack --ctstate INVALID -j DROP), Anda dapat menjalankan perintah ini:

      • sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

      Perhatikan bahwa opsi -A, yang digunakan untuk mengindikasikan posisi aturan pada waktu pembuatan, harus dikecualikan di sini.

      Cara lain untuk menghapus aturan iptables adalah melalui rantai dan nomor barisnya. Untuk menentukan nomor baris aturan, buatlah daftar aturan dalam format tabel dan tambahkan opsi --line-numbers:

      • sudo iptables -L --line-numbers
      [secondary_output Output]
      Chain INPUT (policy DROP)
      num  target     prot opt source               destination
      1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
      2    ACCEPT     all  --  anywhere             anywhere
      3    DROP       all  --  anywhere             anywhere             ctstate INVALID
      4    UDP        udp  --  anywhere             anywhere             ctstate NEW
      5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
      6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
      7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
      8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
      9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable
      10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
      ...
      

      Ini menambahkan nomor baris di setiap baris aturan, yang diindikasikan oleh tajuk num.

      Setelah Anda mengetahui aturan yang ingin Anda hapus, perhatikan rantai dan nomor baris dari aturannya. Kemudian, jalankan perintah iptables -D yang diikuti oleh rantai dan nomor raturan.

      Misalnya, jika kita ingin menghapus aturan masukan yang mengedrop paket tidak valid, kita dapat melihat bahwa itu adalah aturan 3 dari rantai INPUT. Jadi, kita harus menjalankan perintah ini:

      Karena kini Anda telah mengetahui cara menghapus aturan firewall individual, mari kita membahas cara melakukan flush rantai aturan.

      Melakukan Flush Rantai

      Iptables menawarkan cara untuk menghapus semua aturan dalam suatu rantai, atau melakukan flush suatu rantai. Bagian ini akan mencakup berbagai cara untuk melakukannya.

      Catatan: Berhati-hatilah agar tidak mengunci diri sendiri dari server Anda, melalui SSH, dengan melakukan flush rantai menggunakan kebijakan asali dari drop atau deny. Jika Anda melakukannya, Anda mungkin perlu terhubung dengannya melalui konsol untuk memperbaiki akses.

      Melakukan Flush Rantai Tunggal

      Untuk melakukan flush rantai tertentu, yang akan menghapus semua aturan dalam rantai itu, Anda dapat menggunakan opsi -F, atau padanan kata dari --flush, dan nama dari rantai yang akan dilakukan flush.

      Misalnya, untuk menghapus semua aturan dalam rantai INPUT, jalankan perintah ini:

      Melakukan Flush Semua Rantai

      Untuk melakukan flush semua rantai, yang akan menghapus semua aturan firewall, Anda dapat menggunakan opsi -F, atau padanan kata dari --flush dengan sendirinya:

      Melakukan Flush Semua Aturan, Menghapus Semua Rantai, dan Menerima Semua

      Bagian ini akan menunjukkan kepada Anda cara melakukan flush semua aturan firewall, tabel, dan rantai, serta mengizinkan semua lalu lintas jaringan.

      Catatan: Ini akan secara efektif menonaktifkan firewall Anda. Anda dapat mengikuti bagian ini hanya jika Anda ingin memulai ulang seluruh konfigurasi firewall.

      Pertama-tama, tetapkan kebijakan asali untuk setiap rantai bawaan menjadi ACCEPT. Alasan utama melakukan ini adalah untuk memastikan bahwa Anda tidak akan terkunci dari server Anda melalui SSH:

      • sudo iptables -P INPUT ACCEPT
      • sudo iptables -P FORWARD ACCEPT
      • sudo iptables -P OUTPUT ACCEPT

      Lalu lakukan flush tabel nat dan mangle, flush semua rantai (-F), dan hapus semua rantai non-asali (-X):

      • sudo iptables -t nat -F
      • sudo iptables -t mangle -F
      • sudo iptables -F
      • sudo iptables -X

      Firewall Anda kini akan mengizinkan semua lalu lintas jaringan. Jika Anda membuat daftar aturan sekarang, Anda tidak akan melihat apa pun, dan hanya tiga rantai asali (INPUT, FORWARD, dan OUTPUT) yang tersisa.

      Kesimpulan

      Setelah mengikuti tutorial ini, Anda seharusnya memahami cara membuat daftar dan menghapus aturan firewall iptables.

      Ingat bahwa setiap perubahan iptables melalui perintah iptables bersifat tidak permanen, dan perlu disimpan agar tetap ada di sepanjang boot ulang server. Ini dibahas dalam bagian Aturan Penyimpanan dari tutorial Aturan Firewall dan Perintah Umum.



      Source link

      Einrichten einer Firewall mit UFW unter Ubuntu 20.04


      Einführung

      UFW (oder Uncomplicated Firewall) ist eine vereinfachte Firewall-Verwaltungsschnittstelle, die die Komplexität von Paketfilterungstechnologie auf niedriger Ebene wie iptables und nftables versteckt. Wenn Sie mit dem Sichern Ihres Netzwerks beginnen möchten und Sie nicht sicher sind, welches Tool Sie verwenden sollen, könnte UFW die richtige Wahl für Sie sein.

      In diesem Tutorial erfahren Sie, wie Sie eine Firewall mit UFW unter Ubuntu 20.04 einrichten.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      UFW ist unter Ubuntu standardmäßig installiert. Wenn UFW aus einem bestimmten Grund deinstalliert wurde, können Sie UFW mit sudo apt install ufw installieren.

      Schritt 1 — Verwenden von IPv6 mit UFW (optional)

      Dieses Tutorial wurde für IPv4 verfasst, funktioniert aber auch für IPv6, solange es aktiviert ist. Wenn auf Ihrem Ubuntu-Server IPv6 aktiviert ist, muss UFW so konfiguriert sein, dass IPv6 unterstützt wird, um Firewall-Regeln nicht für IPv4, sondern auch für IPv6 zu verwalten. Öffnen Sie dazu die UFW-Konfiguration mit nano oder Ihrem bevorzugten Editor.

      • sudo nano /etc/default/ufw

      Stellen Sie dann sicher, dass der Wert von IPV6 yes lautet. Das sollte wie folgt aussehen:

      /etc/default/ufw excerpt

      IPV6=yes
      

      Speichern und schließen Sie die Datei. Wenn UFW aktiviert ist, wird es so konfiguriert, dass sowohl IPv4- als auch IPv6-Firewall-Regeln geschrieben werden. Bevor wir UFW aktivieren, wollen wir jedoch überprüfen, ob Ihre Firewall so konfiguriert ist, dass Verbindungen über SSH möglich sind. Beginnen wir mit der Einstellung der Standardrichtlinien.

      Schritt 2 — Einrichten von Standardrichtlinien

      Wenn Sie gerade mit der Verwendung Ihrer Firewall begonnen haben, sind Ihre Standardrichtlinien die ersten Regeln, die Sie definieren sollten. Diese Regeln steuern die Handhabung von Daten, die nicht ausdrücklich von anderen Regeln abgedeckt werden. Standardmäßig ist UFW so konfiguriert, dass alle eingehenden Verbindungen abgelehnt und alle ausgehenden Verbindungen zugelassen werden. So kann niemand, der versucht, Ihren Server zu erreichen, eine Verbindung herstellen, während jede Anwendung innerhalb des Servers nach außen kommunizieren kann.

      Lassen Sie uns Ihre UFW-Regeln zurück auf die Standardeinstellungen setzen, um sicherzugehen, dass Sie diesem Tutorial folgen können. Um die von UFW verwendeten Standardeinstellungen auszuwählen, verwenden Sie diese Befehle:

      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing

      Diese Befehle legen die Standardeinstellungen fest: eingehende Verbindungen werden abgelehnt und ausgehende Verbindungen zugelassen. Die Standardeinstellungen der Firewall allein können für einen PC ausreichen, Server müssen aber normalerweise auf eingehende Anfragen von externen Benutzern reagieren. Das sehen wir uns als Nächstes an.

      Schritt 3 — Zulassen von SSH-Verbindungen

      Wenn wir unsere UFW-Firewall jetzt aktivieren würden, würde sie alle eingehenden Verbindungen ablehnen. Das bedeutet, dass wir Regeln erstellen müssen, die legitime eingehende Verbindungen (z. B. SSH- oder HTTP-Verbindungen) ausdrücklich zulassen, wenn unser Server auf diese Art von Anforderungen reagieren soll. Wenn Sie einen Cloud-Server verwenden, werden Sie wahrscheinlich eingehende SSH-Verbindungen zulassen wollen, damit Sie sich mit Ihrem Server verbinden und den Server verwalten können.

      Um Ihren Server so zu konfigurieren, dass eingehende SSH-Verbindungen zugelassen werden, können Sie diesen Befehl verwenden:

      Dadurch werden Firewall-Regeln erstellt, die alle Verbindungen an Port 22 zulassen; das ist der Port, an dem der SSH-Daemon standardmäßig lauscht. UFW weiß, was Port allow ssh bedeutet, da dies in der Datei /etc/services als Dienst aufgeführt wird.

      Wir können die äquivalente Regel jedoch auch schreiben, indem wir den Port anstelle des Dienstnamens angeben. Dieser Befehl funktioniert zum Beispiel genauso wie oben:

      Wenn Sie Ihren SSH-Daemon so konfiguriert haben, dass er einen anderen Port verwendet, müssen Sie den entsprechenden Port angeben. Wenn Ihr SSH-Server beispielsweise an Port 2222 lauscht, können Sie diesen Befehl verwenden, um Verbindungen an diesem Port zuzulassen:

      Nachdem Ihre Firewall nun so konfiguriert ist, dass eingehende SSH-Verbindungen zugelassen werden, können wir sie aktivieren.

      Schritt 4 — Aktivieren von UFW

      Um UFW zu aktivieren, verwenden Sie diesen Befehl:

      Sie erhalten eine Warnung, die besagt, dass der Befehl bestehende SSH-Verbindungen stören kann. Wir haben bereits eine Firewall-Regel eingerichtet, die SSH-Verbindungen zulässt. Daher sollte es in Ordnung sein, fortzufahren. Beantworten Sie die Eingabeaufforderung mit y und drücken Sie ENTER.

      Die Firewall ist jetzt aktiv. Führen Sie den Befehl sudo ufw status verbose aus, um die festgelegten Regeln anzuzeigen. Im Rest des Tutorials wird die Verwendung von UFW im Detail behandelt, wie das Zulassen oder Ablehnen verschiedener Verbindungen.

      Schritt 5 — Zulassen anderer Verbindungen

      Jetzt sollten Sie alle anderen Verbindungen zulassen, auf die Ihr Server reagieren soll. Die Verbindungen, die Sie zulassen sollten, sind von Ihren spezifischen Bedürfnissen abhängig. Glücklicherweise wissen Sie bereits, wie Sie Regeln schreiben, die Verbindungen anhand eines Dienstnamens oder Ports zulassen. Das haben wir bereits für SSH an Port 22 getan. Sie können es auch tun für:

      • HTTP an Port 80, was nicht verschlüsselte Webserver verwenden; mit sudo ufw allow http oder sudo ufw allow 80
      • HTTPS an Port 443, was verschlüsselte Webserver verwenden; mit sudo ufw allow https oder sudo ufw allow 443

      Es gibt weitere Möglichkeiten, um andere Verbindungen zuzulassen, abgesehen von der Angabe eines Ports oder bekannten Dienstes.

      Spezifische Portbereiche

      Sie können mit UFW spezifische Portbereiche angeben. Einige Anwendungen verwenden mehrere Ports anstelle eines einzelnen Ports.

      Um zum Beispiel X11-Verbindungen zuzulassen, die Ports 60006007 verwenden, nutzen Sie diese Befehle:

      • sudo ufw allow 6000:6007/tcp
      • sudo ufw allow 6000:6007/udp

      Wenn Sie mit UFW Portbereiche angeben, müssen Sie das Protokoll (tcp oder udp) angeben, für das die Regeln gelten sollen. Wir haben das vorher nicht erwähnt, da wir ohne Angabe des Protokolls automatisch beide Protokolle zulassen, was in den meisten Fällen in Ordnung ist.

      Spezifische IP-Adressen

      Beim Arbeiten mit UFW können Sie auch IP-Adressen spezifizieren. Wenn Sie zum Beispiel Verbindungen von einer bestimmten IP-Adresse zulassen möchten, wie einer Arbeits- oder privaten IP-Adresse unter 203.0.113.4, müssen Sie from und dann die IP-Adresse angeben:

      • sudo ufw allow from 203.0.113.4

      Sie können auch einen bestimmten Port angeben, mit dem die IP-Adresse eine Verbindung herstellen darf, indem Sie to any port (zu jedem Port) gefolgt von der Portnummer hinzufügen. Wenn Sie zum Beispiel 203.0.113.4 erlauben möchten, sich mit Port 22 (SSH) zu verbinden, verwenden Sie diesen Befehl:

      • sudo ufw allow from 203.0.113.4 to any port 22

      Subnetze

      Wenn Sie ein Subnetz von IP-Adressen zulassen möchten, können Sie CIDR-Notation verwenden, um eine Netzmaske anzugeben. Wenn Sie zum Beispiel alle IP-Adressen im Bereich von 203.0.113.1 bis 203.0.113.254 zulassen möchten, können Sie diesen Befehl verwenden:

      • sudo ufw allow from 203.0.113.0/24

      Außerdem können Sie auch den Zielport angeben, mit dem das Subnetz 203.0.113.0/24 eine Verbindung herstellen darf. Auch hier verwenden wir Port 22 (SSH) als Beispiel:

      • sudo ufw allow from 203.0.113.0/24 to any port 22

      Verbindungen zu einer spezifischen Netzwerkschnittstelle

      Wenn Sie eine Firewall-Regel erstellen möchten, die nur für eine bestimmte Netzwerkschnittstelle gilt, können Sie dazu „allow in on“ gefolgt vom Namen der Netzwerkschnittstelle angeben.

      Sie möchten möglicherweise Ihre Netzwerkschnittstellen überprüfen, bevor Sie fortfahren. Dazu verwenden Sie diesen Befehl:

      Output Excerpt

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

      Die hervorgehobene Ausgabe gibt die Namen der Netzwerkschnittstellen an. Sie haben typischerweise Namen wie eth0 oder enp3s2.

      Wenn Ihr Server eine öffentliche Netzwerkschnittstelle namens eth0 hat, könnten Sie HTTP-Verkehr (Port 80) dorthin mit diesem Befehl zulassen:

      • sudo ufw allow in on eth0 to any port 80

      Dadurch würden Sie zulassen, dass Ihr Server HTTP-Anfragen aus dem öffentlichen Internet empfängt.

      Oder wenn Sie möchten, dass Ihr MySQL-Datenbankserver (Port 3306) an der privaten Netzwerkschnittstelle eth1 nach Verbindungen lauschen soll, können Sie diesen Befehl verwenden:

      • sudo ufw allow in on eth1 to any port 3306

      Dadurch dürften andere Server in Ihrem privaten Netzwerk eine Verbindung mit Ihrer MySQL-Datenbank herstellen.

      Schritt 6 — Ablehnen von Verbindungen

      Wenn Sie die Standardrichtlinie für eingehende Verbindungen nicht geändert haben, ist UFW so konfiguriert, dass alle eingehenden Verbindungen abgelehnt werden. Das vereinfacht im Allgemeinen das Erstellen einer sicheren Firewall-Richtlinie, da Sie Regeln erstellen müssen, die bestimmte Ports und IP-Adressen explizit zulassen.

      Manchmal werden Sie jedoch einzelne Verbindungen auf Grundlage der Quell-IP-Adresse oder des Subnetzes ablehnen wollen, vielleicht weil Sie wissen, dass Ihr Server von dort angegriffen wird. Wenn Sie Ihre Richtlinie für eingehenden Datenverkehr in allow ändern möchten (was nicht empfohlen wird), müssten Sie für alle Dienste oder IP-Adressen, bei denen Sie keine Verbindung zulassen wollen, deny-Regeln erstellen.

      Um deny-Regeln zu schreiben, können Sie die oben beschriebenen Befehle verwenden und allow durch deny ersetzen.

      Um zum Beispiel HTTP-Verbindungen abzulehnen, können Sie diesen Befehl verwenden:

      Oder wenn Sie alle Verbindungen von 203.0.113.4 ablehnen möchten, können Sie diesen Befehl verwenden:

      • sudo ufw deny from 203.0.113.4

      Jetzt werfen wir einen Blick auf das Löschen von Regeln.

      Schritt 7 — Löschen von Regeln

      Zu wissen, wie man Firewall-Regeln löscht, ist genauso wichtig wie zu wissen, wie man sie erstellt. Es gibt zwei Wege, um anzugeben, welche Regeln gelöscht werden sollen: anhand der Regelnummer oder der tatsächlichen Regel (ähnlich wie beim Angeben der Regeln im Rahmen der Erstellung). Wir beginnen mit der Methode Löschen anhand von Regelnummer, da sie einfacher ist.

      Nach Regelnummer

      Wenn Sie die Regelnummer verwenden, um Firewall-Regeln zu löschen, wird eine Liste Ihrer Firewall-Regeln angezeigt. Der UFW-Statusbefehl hat eine Option, um neben jeder Regel eine Nummer anzuzeigen, wie hier gezeigt:

      Numbered Output:

      Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

      Wenn wir entscheiden, dass wir Regel 2, die Verbindungen an Port 80 (HTTP) zulässt, löschen möchten, können wir sie in einem UFW-Befehl wie diesem angeben:

      Dadurch würde eine Bestätigungsaufforderung angezeigt und Regel 2, die HTTP-Verbindungen zulässt, dann gelöscht. Beachten Sie, dass Sie bei aktiviertem IPv6 wahrscheinlich auch die entsprechende IPv6-Regel löschen möchten.

      Nach tatsächlicher Regel

      Die Alternative zu Regelnummern besteht darin, die tatsächlich zu löschende Regel anzugeben. Wenn Sie zum Beispiel die Regel allow http entfernen möchten, können Sie das wie folgt schreiben:

      • sudo ufw delete allow http

      Sie könnten die Regel auch anhand von allow 80 anstelle des Dienstnamens angeben:

      Diese Methode löscht sowohl IPv4- als auch IPv6-Regeln, falls vorhanden.

      Schritt 8 — Prüfen von UFW-Status und -Regeln

      Sie können den Status von UFW mit diesem Befehl jederzeit überprüfen:

      Wenn UFW deaktiviert ist, was standardmäßig der Fall ist, sehen Sie in etwa Folgendes:

      Output

      Status: inactive

      Wenn UFW aktiv ist, was der Fall sein sollte, wenn Sie Schritt 3 ausgeführt haben, teilt die Ausgabe mit, dass UFW aktiv ist; zudem werden alle festgelegten Regeln aufgelistet. Wenn Sie die Firewall beispielsweise so einrichten, dass SSH (Port 22)-Verbindungen überall zugelassen werden, könnte die Ausgabe ungefähr wie folgt aussehen:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

      Verwenden Sie den Befehl status, um zu prüfen, wie UFW die Firewall konfiguriert hat.

      Schritt 9 — Aktivieren oder Zurücksetzen von UFW (optional)

      Wenn Sie entscheiden, dass Sie UFW nicht mehr verwenden möchten, können Sie die Firewall mit diesem Befehl deaktivieren:

      Alle Regeln, die Sie mit UFW erstellt haben, sind dann nicht mehr aktiv. Sie können später jederzeit sudo ufw enable nutzen, um sie wieder zu aktivieren.

      Wenn Sie bereits UFW-Regeln konfiguriert haben, aber lieber neu anfangen möchten, können Sie den Befehl reset verwenden:

      Dadurch wird UFW deaktiviert und alle Regeln, die zuvor definiert wurden, werden gelöscht. Beachten Sie, dass die Standardrichtlinien nicht zu ihren ursprünglichen Einstellungen zurückkehren, wenn Sie sie irgendwann geändert haben. Jetzt sollten Sie mit UFW neu anfangen können.

      Zusammenfassung

      Ihre Firewall ist jetzt so konfiguriert, dass (mindestens) SSH-Verbindungen zugelassen werden. Achten Sie darauf, alle anderen eingehenden Verbindungen, die Ihr Server benötigt, zuzulassen und beschränken Sie alle unnötigen Verbindungen, sodass Ihr Server gleichzeitig funktional und sicher ist.

      Um mehr über gängige UFW-Konfigurationen zu erfahren, lesen Sie das Tutorial UFW-Grundlagen: Gängige Firewall-Regeln und -Befehle.



      Source link

      Cómo configurar un firewall con UFW en Ubuntu 20.04


      Introducción

      UFW, o Uncomplicated Firewall, es una interfaz de gestión de firewall simplificada que oculta la complejidad de las tecnologías de filtrado de paquetes de nivel inferior, como iptables y nftables. Si desea comenzar a proteger su red y no está seguro respecto de la herramienta que debe utilizar, UFW puede ser la mejor opción .

      En este tutorial, verá la manera de configurar un firewall con UFW en Ubuntu 20.04.

      Requisitos previos

      Para este tutorial, necesitará lo siguiente:

      UFW viene instalado por defecto en Ubuntu. Si se desinstaló por alguna razón, puede instalarlo con sudo apt install ufw​​​2​​​.

      Paso 1: Utilizar IPv6 con UFW (opcional)

      Este tutorial se redactó teniendo en cuenta IPv4, pero funcionará para IPv6 siempre que lo habilite. Si su servidor de Ubuntu tiene IPv6 habilitado, compruebe que UFW esté configurado para que admitir IPv6 de modo que administre las reglas de firewall para IPv6 además de IPv4. Para hacerlo, abra la configuración de UFW con nano o su editor favorito.

      • sudo nano /etc/default/ufw

      A continuación, asegúrese de que el valor de IPV6 sea yes. Debería tener el siguiente aspecto:

      /etc/default/ufw excerpt

      IPV6=yes
      

      Guarde y cierre el archivo. Cuando UFW esté habilitado, se configurará para escribir reglas de firewall de IPv4 y IPv6. Sin embargo, antes de habilitar UFW, nos convendrá comprobar que su firewall esté configurado para que usted pueda establecer conexión a través de SSH. Empezaremos con la configuración de las políticas predeterminadas.

      Paso 2: Configurar políticas predeterminadas

      Si recién está dando los primeros pasos con su firewall, las primeras reglas que deben definirse son sus políticas predeterminadas. Estas reglas controlan el manejo del tráfico que no coincida de forma explícita con otras reglas. Por defecto, UFW está configurado para denegar todas las conexiones entrantes y permitir todas las conexiones salientes. Esto significa que quien intente establecer conexión con su servidor no podrá hacerlo, mientras que cualquier aplicación dentro del servidor podrá llegar al mundo exterior.

      Restableceremos los valores predeterminados de sus reglas de UFW para garantizar que podamos seguir con este tutorial. Para fijar los valores predeterminados utilizados por UFW, emplee estos comandos:

      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing

      Establecen los valores predeterminados para denegar las conexiones entrantes y permitir las salientes. Con solo estos valores predeterminados de firewall podría bastar para una computadora personal, pero normalmente los servidores deben responder a las solicitudes de usuarios externos. Lo veremos a continuación.

      Paso 3: Habilitar conexiones SSH

      Si habilitamos nuestro firewall de UFW ahora, denegaría todas las conexiones entrantes. Esto significa que deberemos crear reglas que permitan explícitamente las conexiones entrantes legítimas (SSH o HTTP, por ejemplo) si queremos que nuestro servidor responda a estos tipos de solicitudes. Si utiliza un servidor en nube, probablemente le convenga permitir las conexiones SSH entrantes para poder conectarse y administrar su servidor.

      Para configurar su servidor de modo que permita las conexiones SSH entrantes, puede utilizar este comando:

      Esto creará reglas de firewall que permitirán todas las conexiones en el puerto 22, que es el que escucha el demonio SSH por defecto. UFW registra el significado del puerto allow ssh porque está enumerado como servicio en el archivo /etc/services.

      Sin embargo, podemos escribir la regla equivalente especificando el puerto en vez del nombre del servicio. Por ejemplo, este comando funciona como el anterior:

      Si configuró su demonio SSH para utilizar un puerto diferente, deberá especificar el puerto apropiado. Por ejemplo, si su servidor SSH escucha en el puerto 2222 puede utilizar este comando para permitir las conexiones en ese puerto:

      Ahora que su firewall está configurado para permitir las conexiones SSH entrantes, podemos habilitarlo.

      Paso 4: Habilitar UFW

      Para habilitar UFW, utilice este comando:

      Recibirá una advertencia que indicará que el comando puede interrumpir las conexiones SSH existentes. Ya configuramos una regla de firewall que permite conexiones SSH. Debería ser posible continuar sin inconvenientes. Responda a la solicitud con y y presione ENTER.

      Con esto, el firewall quedará activo. Ejecute el comando sudo ufw status verbose para ver las reglas que se configuran. En el resto de este tutorial se abarca en mayor profundidad la forma de utilizar UFW. Se analizarán opciones como las de permitir o denegar diferentes tipos de conexiones.

      Paso 5: Habilitar otras conexiones

      En este momento, debería permitir el resto de las conexiones a las que su servidor debe responder. Las conexiones que debería permitir dependen de sus necesidades específicas. Afortunadamente, ya sabe cómo escribir reglas que permiten las conexiones basadas en un nombre de servicio o un puerto; ya lo hicimos para SSH en el puerto 22. También puede hacerlo para:

      • HTTP en el puerto 80, que es lo que utilizan los servidores web no cifrados, con sudo ufw allow http o sudo ufw allow 80
      • HTTPS en el puerto 443, que es lo que utilizan los servidores web cifrados, con sudo ufw allow https o sudo ufw allow 443

      Existen varias maneras de permitir otras conexiones, aparte de especificar un puerto o un servicio conocido.

      Intervalos de puerto específicos

      Puede especificar intervalos de puerto con UFW. Algunas aplicaciones utilizan varios puertos en vez de uno solo.

      Por ejemplo, para permitir las conexiones de X11 que utilizan los puertos 6000 a 6007, use estos comandos:

      • sudo ufw allow 6000:6007/tcp
      • sudo ufw allow 6000:6007/udp

      Al especificar intervalos de puerto con UFW, debe definir el protocolo (tcp o udp) al que deberían aplicarse las reglas. No lo mencionamos antes porque cuando no se especifica el protocolo se permiten ambos de forma automática, lo cual está bien en la mayoría de los casos.

      Direcciones IP específicas

      Al trabajar con UFW, también puede especificar direcciones IP. Por ejemplo, si desea permitir las conexiones desde una dirección IP específica, como una dirección IP de trabajo o doméstica 203.0.113.4, debe definir from y luego la dirección IP:

      • sudo ufw allow from 203.0.113.4

      También puede especificar un puerto concreto al que la dirección IP pueda conectarse agregando to any port seguido del número de este. Por ejemplo, si desea permitir que 203.0.113.4 se conecte al puerto 22 (SSH), utilice este comando:

      • sudo ufw allow from 203.0.113.4 to any port 22

      Subredes

      Si desea permitir una subred de direcciones IP, puede hacerlo utilizando la notación CIDR para especificar una máscara de red. Por ejemplo, si desea permitir todas las direcciones IP de la 203.0.113.1 a la 203.0.113.254 podría utilizar este comando:

      • sudo ufw allow from 203.0.113.0/24

      Del mismo modo, también puede especificar el puerto de destino al que puede conectarse la subred 203.013.0/24. Una vez más, utilizaremos el puerto 22 (SSH) como ejemplo:

      • sudo ufw allow from 203.0.113.0/24 to any port 22

      Conexiones a una interfaz de red específica

      Si desea crear una regla de firewall que solo se aplique a una interfaz de red específica, puede hacerlo optando por “allow in on” seguido del nombre de la interfaz de red.

      Tal vez le convenga revisar sus interfaces de red antes de continuar. Para hacerlo, utilice este comando:

      Output Excerpt

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

      El resultado resaltado indica los nombres de la interfaz de red. Normalmente, tienen nombres similares a eth0 o enp3s2.

      Así, si su servidor tiene una interfaz de red pública llamada eth0, podría permitir el tráfico HTTP (puerto 80) hacia él con este comando:

      • sudo ufw allow in on eth0 to any port 80

      Al hacerlo permitiría que su servidor recibiera solicitudes HTTP desde la Internet pública.

      O bien, si desea que su servidor de base de datos de MySQL (puerto 3306) escuche las conexiones en la interfaz de red privada eth1, por ejemplo, podría utilizar este comando:

      • sudo ufw allow in on eth1 to any port 3306

      Esto permitiría que otros servidores de su red privada se conectaran a su base de datos de MySQL.

      Paso 6: Denegar conexiones

      Si no cambió la política predeterminada para las conexiones entrantes, UFW está configurado para denegarlas a todas. Generalmente, esto simplifica el proceso de creación de una política de firewall segura al exigirle crear reglas que permitan de forma explícita el acceso de puertos específicos y direcciones IP.

      Sin embargo, a veces le convendrá denegar conexiones específicas basadas en la dirección IP o subred de origen, quizás por saber que su servidor recibe ataques desde ellas. Además, si desea cambiar el valor su política entrante predeterminada a allow (no lo recomendamos), debería crear reglas deny para cualquier servicio o dirección IP cuyas conexiones no desee permitir.

      Para escribir reglas de deny, puede utilizar los comandos descritos anteriormente y sustituir allow por deny.

      Por ejemplo, para denegar conexiones HTTP, podría utilizar este comando:

      A su vez, si desea denegar todas las conexiones de 203.0.113.4 podría utilizar este comando:

      • sudo ufw deny from 203.0.113.4

      Ahora veremos la forma de eliminar reglas.

      Paso 7: Eliminar reglas

      Saber eliminar reglas de firewall es tan importante como saber crearlas. Existen dos maneras diferentes de especificar las reglas que se eliminarán: por número de regla o por regla real (se asemejan a la forma en que las reglas se especifican al crearse). Comenzaremos con el método de eliminación por número de regla porque es más sencillo.

      Por número de regla

      Si utiliza el número de regla para eliminar reglas de firewall, lo primero que le convendrá hacer es obtener una lista de reglas de firewall. El comando “UFW status” tiene una opción para mostrar números junto a cada regla, como se muestra aquí:

      Numbered Output:

      Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

      Si decidimos eliminar la regla 2, que permite las conexiones del puerto 80 (HTTP), podemos especificarlo en un comando “UFW delete”como este:

      Esto mostraría un mensaje de confirmación y eliminaría la regla 2, que permite conexiones HTTP. Tenga en cuenta que si tiene IPv6 habilitado, le convendría eliminar también la regla IPv6 correspondiente.

      Por regla real

      La alternativa a números de regla es especificar la regla real que se eliminará. Por ejemplo, si desea eliminar la regla allow http, podría escribir lo siguiente:

      • sudo ufw delete allow http

      También podría especificar la regla mediante allow 80 en vez de hacerlo por nombre de servicio:

      Con este método se eliminarán las reglas IPv4 y IPv6, si existen.

      Paso 8: Comprobar el estado y las reglas de UFW

      En cualquier momento, puede verificar el estado de UFW con este comando:

      Si UFW está desactivado, lo cual se aplica por defecto, verá algo como esto:

      Output

      Status: inactive

      Si UFW está activo, lo cual debería suceder si siguió el paso 3, en el resultado se indicará que está activo y se enumerará cualquier regla configurada. Por ejemplo, si el firewall está configurado para permitir conexiones SSH (puerto 22) desde cualquier parte, el resultado podría ser parecido a este:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

      Utilice el comando status si desea verificar la configuración que UFW aplicó al firewall.

      Paso 9: Deshabilitar o reiniciar UFW (opcional)

      Si decide que no desea utilizar UFW, puede desactivarlo con este comando:

      Cualquier regla que haya creado con UFW dejará de estar activa. Siempre puede ejecutar sudo ufw enable si necesita activarla más adelante.

      Si ya configuró reglas de UFW y decide que desea empezar de nuevo, puede utilizar el comando “reset”:

      Con esto se desactivará UFW y se eliminará cualquier regla definida anteriormente. Tenga en cuenta que los ajustes originales de las políticas predeterminadas no se restablecerán si las modificó en algún momento. Esto debería permitirle empezar de nuevo con UFW.

      Conclusión

      De esta manera, su firewall quedará configurado para permitir conexiones SSH (al menos). Asegúrese de permitir cualquier otra conexión entrante que necesite su servidor y, al mismo tiempo, limitar cualquier conexión innecesaria, de modo que su servidor funcione y sea seguro.

      Para obtener información sobre más configuraciones comunes de UFW, consulte el tutorial Aspectos básicos de UFW: reglas y comandos comunes de firewall.



      Source link