Einfache IPTables-Konfiguration und Beispiele unter Ubuntu 16.04

Einführung

iptablesist ein leistungsstarkes Tool zum Konfigurieren der integrierten Firewall des Linux-Kernels. Es ist auf den meisten Ubuntu-Distributionen vorinstalliert. Wenn Sie jedoch eine angepasste Ubuntu-Version verwenden oder in einem Container ausgeführt werden, müssen Sie es höchstwahrscheinlich manuell installieren.

sudo apt-get install iptables iptables-persistent

Wenn Sie nach der Installation gefragt werden, ob Sie Ihre aktuellen Regeln speichern möchten, spielt dies im Moment keine Rolle, da Sie sie später entfernen oder neue Regeln erstellen werden.

Tipps

Mit dem netcatBefehl (auf einem anderen Computer als Ihrem Server) können Sie testen, welche Ihrer Ports geöffnet oder geschlossen sind.

nc -z -w5 -v SERVER_IP PORT
  • nc ist der Befehl netcat.
  • -z Senden Sie einfach ein Paket ohne Nutzlast.
  • -w5 Warten Sie bis zu 5 Sekunden auf eine Antwort.
  • -v ausführlicher Modus.
  • Ersetzen Sie SERVER_IPdurch Ihre Serveradresse.
  • Ersetzen Sie ihn PORTdurch den Port, den Sie testen möchten, wenn er geöffnet ist (z 22. B. ).

Auf Ihrem Server können Sie mit dem netstatBefehl sehen, welche Ports derzeit auf Verbindungen warten.

sudo netstat -tulpn

Hinweis: Obwohl netstates praktisch ist, die Ports zu finden, mit denen Sie arbeiten möchten, sollten Sie wissen, welche Anwendungen Sie derzeit auf Ihrem Server installiert haben und welche Ports empfangsbereit sind. Sie müssen nicht jeden Port zulassen, den Sie in der netstatAusgabe finden .

Syntax

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTFügen Sie der INPUTKette eine Regel hinzu . Eine Kette ist eine Gruppe von Regeln. Die Regeln, die wir in diesem Handbuch am häufigsten verwenden INPUT, sind OUTPUTund PREROUTING.
  • -p tcpSatz tcpals Protokoll gilt diese Regel für Sie auch andere Protokolle wie verwenden können udp, icmpoder all.
  • -m tcpVerwenden Sie das tcpModul. iptablesunterstützt zusätzliche Funktionen über Module, von denen einige bereits vorinstalliert sind iptablesund andere, wie z. B. das geoipModul.
  • --dport 22Die Befehle, die mit beginnen, --geben zusätzliche Optionen für das zuvor verwendete Modul an. In diesem Fall weisen wir das tcpModul an, nur für den Port zu gelten 22.
  • -m geoipVerwenden Sie das geoipModul. Es werden Pakete auf Länderbasis begrenzt (weitere Informationen in Schritt 5).
  • --src-cc PEWeisen Sie das geoipModul an, die eingehenden Pakete auf diejenigen zu beschränken, die aus Peru stammen. Weitere Ländercodes finden Sie ISO 3166 country codesim Internet.
  • -j ACCEPTDas -jArgument gibt an, iptableswas zu tun ist, wenn ein Paket den in den vorherigen Argumenten angegebenen Einschränkungen entspricht. In diesem Fall wird es ACCEPTdiese Pakete, andere Optionen sind REJECT, DROPund vieles mehr. Weitere Optionen finden Sie iptables jump targetsim Internet.

1. Grundlagen

Listen Sie alle Regeln auf.

sudo iptables -L

Listen Sie alle Befehle auf, die zum Erstellen der aktuell verwendeten Regeln verwendet wurden, um Regeln zu bearbeiten oder zu löschen.

sudo iptables -S

Um eine bestimmte Regel zu löschen, wählen Sie eine Regel aus sudo iptables -Sund ersetzen Sie sie -Adurch -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Listen Sie alle nummerierten Regeln in der INPUTKette auf.

sudo iptables -L INPUT --line-numbers

Löschen Sie eine nummerierte Regel.

sudo iptables -D INPUT 2

Alle Regeln löschen.

sudo iptables -F

Warnung: Bei einer SSH-Verbindung kann die Verbindung unterbrochen werden .

Löschen Sie nur Regeln in der OUTPUTKette.

sudo iptables -F OUTPUT

2. Erstellen Sie erste Regeln

Lassen Sie SSHauf eth0Schnittstelle

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 Wenden Sie eine Regel auf eine bestimmte Schnittstelle an, damit dieser Befehl von jeder Schnittstelle entfernt werden kann.

Eingehende Pakete auf eine bestimmte IP (dh 10.0.3.1/32) beschränken.

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 Gibt ein IP / Subnetz an, von dem aus Verbindungen zugelassen werden sollen.

Legen Sie Standardkettenregeln fest.

Warnung: Bevor Sie fortfahren, stellen Sie sicher, dass Sie die richtigen SSH-Regeln angewendet haben, wenn Sie auf einem Remote-Server arbeiten .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP lehnt alle eingehenden Pakete ab (dh niemand kann eine Verbindung zu Ihren laufenden Servern wie Apache, SQL usw. herstellen).
  • -P FORWARD DROP lehnt alle weitergeleiteten Pakete ab (dh wenn Sie Ihr System als Router verwenden).
  • -P OUTPUT ACCEPTerlaubt alle ausgehenden Pakete (dh wenn Sie eine HTTPAnfrage ausführen ).

Lassen Sie den gesamten Datenverkehr auf der Loopback-Schnittstelle zu ( empfohlen ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Machen Sie Regeln dauerhaft

Speichern Sie die aktuellen iptablesRegeln.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Wenn Sie in einem Container ausgeführt netfilter-persistentwerden, funktioniert der Befehl höchstwahrscheinlich nicht. Daher müssen Sie das iptables-persistentPaket neu konfigurieren .

sudo dpkg-reconfigure iptables-persistent

4. Erlauben Sie ausgehende Verbindungen

DNS-Abfragen zulassen.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Verwenden Sie das stateModul zu erlauben , RELATEDund ESTABLISHEDausgehende Pakete.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Erlaube die gewünschten Ports; in diesem Fall HTTPPorts.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Weitere Ports, die Sie möglicherweise verwenden möchten.

  • FTP: TCP an Port 21
  • HTTPS: TCP an Port 443
  • DHCP: udp an Port 67
  • NTP: udp an Port 123

Hinweis: Wenn Sie zulassen möchten , apt-getkönnte es notwendig sein , um zu ermöglichen , FTPundHTTPS .

Lassen Sie den zurückgegebenen Datenverkehr nur für RELATEDund bereits ESTABLISHEDVerbindungen zu ( empfohlen, da manchmal bidirektionale Kommunikation erforderlich ist).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Andere nützliche Regeln

Ping-Anfragen von außen zulassen.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Leiten Sie den Datenverkehr am eth0Port 2200an weiter 10.0.3.21:22(nützlich, wenn Sie einen SSH-Server verfügbar machen möchten, der in einem Container ausgeführt wird).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Wenn Sie sich mit SSH erfolgreich bei Ihrem Server anmelden, wird eine dauerhafte Verbindung hergestellt (dh keine neuen Verbindungen, auch wenn Sie länger als 1 Stunde verbunden sind). Wenn Sie fehlschlagen und erneut versuchen, sich anzumelden, wird eine neue Verbindung erstellt. Dadurch werden kontinuierliche SSH-Anmeldeversuche blockiert, indem neue Verbindungen pro Stunde begrenzt werden.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Leiten Sie alle Anforderungen von Port 443zu Port um 4430(nützlich, wenn Sie 443ohne Port an Port binden möchten root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 die Netzwerkschnittstelle.
  • -m geoip Länderblockmodul (siehe Schritt 5).

Warnung: Nicht verwenden lo, das Betriebssystem verwirft alle Pakete, die an die Loopback-Schnittstelle umgeleitet werden .

5. Zulassen oder blockieren Sie ganze Länder

5.1 Installieren xtables-addons

Sie können das xtables-addonsModul mit verschiedenen Methoden installieren. Sie können auch die für Sie am besten geeignete Installationsmethode verwenden.

  • Installieren Sie mit apt-get.

    sudo apt-get install xtables-addons-common
    
  • Installieren Sie mit module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Von der Quelle installieren.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Erstellen Sie eine "Länder" -Datenbank.

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Starten Sie Ihr System neu.

sudo reboot

Nach xtables-addonserfolgreicher Installation nach dem ersten Neustart ausführen, da depmodsonst die Länderblockierung nicht ordnungsgemäß funktioniert (dies ist nur zum ersten Mal erforderlich).

sudo depmod 

Erstellen Sie ein Skript /etc/cron.monthly/geoip-updater, um die geoipDatenbank monatlich zu aktualisieren .

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Machen /etc/cron.monthly/geoip-updaterausführbar.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Beispielregeln

_Hinweis: Wenn iptables: No chain/target/match by that namebeim Versuch, eine geoipRegel anzuwenden , eine Fehlermeldung angezeigt wird , wurde diese möglicherweise xtables-addonsnicht korrekt installiert. Versuchen Sie es mit einer anderen Installationsmethode.

Blockieren Sie alle eingehenden Pakete aus China, Hongkong, Russland und Korea.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Erlaube eingehende Pakete auf dem Port 80von überall außer den oben genannten Ländern.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Zulassen, dass eingehende Pakete auf der ens3Schnittstelle am Port 22nur aus Peru stammen (wählen Sie den Ländercode, aus dem Sie Pakete akzeptieren möchten, z. B. USfür die USA).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Erlaube eingehende Pakete im Hafen 443nur aus Peru.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT

Einen Kommentar hinterlassen

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.