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


Leave a Comment

So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS

So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS

Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i

Installieren von McMyAdmin unter Ubuntu 14.10

Installieren von McMyAdmin unter Ubuntu 14.10

McMyAdmin ist ein Minecraft-Server-Kontrollfeld, mit dem Sie Ihren Server verwalten können. Obwohl McMyAdmin kostenlos ist, gibt es mehrere Editionen, von denen einige pai sind

Richten Sie einen TeamTalk-Server unter Linux ein

Richten Sie einen TeamTalk-Server unter Linux ein

TeamTalk ist ein Konferenzsystem, mit dem Benutzer hochwertige Audio- / Videogespräche führen, Text chatten, Dateien übertragen und Bildschirme freigeben können. Es i

So installieren und konfigurieren Sie CyberPanel auf Ihrem CentOS 7-Server

So installieren und konfigurieren Sie CyberPanel auf Ihrem CentOS 7-Server

Verwenden Sie ein anderes System? Einführung CyberPanel ist eines der ersten Control Panels auf dem Markt, das sowohl Open Source als auch OpenLiteSpeed ​​verwendet. Was ist das?

Installieren Sie phpBB With Apache unter Ubuntu 16.04

Installieren Sie phpBB With Apache unter Ubuntu 16.04

PhpBB ist ein Open Source Bulletin Board Programm. Dieser Artikel zeigt Ihnen, wie Sie phpBB auf einem Apache-Webserver unter Ubuntu 16.04 installieren. Es wurde geschrieben

Richten Sie einen Benutzer ohne Rootberechtigung mit Sudo Access unter Ubuntu ein

Richten Sie einen Benutzer ohne Rootberechtigung mit Sudo Access unter Ubuntu ein

Es kann gefährlich sein, nur einen Benutzer zu haben, nämlich root. Lassen Sie uns das beheben. Vultr bietet uns die Freiheit, mit unseren Benutzern und unseren Servern zu tun, was wir wollen

Installieren Sie eSpeak unter CentOS 7

Installieren Sie eSpeak unter CentOS 7

Verwenden Sie ein anderes System? ESpeak kann TTS-Audiodateien (Text-to-Speech) generieren. Diese können aus vielen Gründen nützlich sein, z. B. um Ihr eigenes Turin zu erstellen

So installieren Sie Thelia 2.3 unter CentOS 7

So installieren Sie Thelia 2.3 unter CentOS 7

Verwenden Sie ein anderes System? Thelia ist ein Open-Source-Tool zum Erstellen von E-Business-Websites und zum Verwalten von Online-Inhalten, die in PHP geschrieben wurden. Thelia Quellcode i

Installieren von Fuel CMS unter Ubuntu 16.04 LTS

Installieren von Fuel CMS unter Ubuntu 16.04 LTS

Verwenden Sie ein anderes System? Fuel CMS ist ein CodeIgniter-basiertes Content-Management-System. Der Quellcode wird auf GitHub gehostet. Diese Anleitung zeigt Ihnen, wie t

Installieren und Verwenden von Yunohost unter Debian 7 x64

Installieren und Verwenden von Yunohost unter Debian 7 x64

Dieses Tutorial führt Sie durch die Installation des Yunohost Complete Server-Kontrollfelds unter Debian. Folgen Sie einfach dem Tutorial und Ihr Server wird in Betrieb sein

So installieren Sie Cockpit unter CentOS 7

So installieren Sie Cockpit unter CentOS 7

Cockpit ist ein kostenloses Open Source-Programm für die Linux-Serververwaltung. Es ist sehr leicht und hat eine schöne, einfach zu bedienende Weboberfläche. Es erlaubt System

So richten Sie ein GitHub Style Wiki mit Gollum unter CentOS 7 ein

So richten Sie ein GitHub Style Wiki mit Gollum unter CentOS 7 ein

Gollum ist die Git-basierte Wiki-Software, die als Backend des GitHub-Wikis verwendet wird. Durch die Bereitstellung von Gollum können Sie ein GitHub-ähnliches Wiki-System auf Ihnen hosten

So richten Sie die TCP-Optimierung unter Linux ein

So richten Sie die TCP-Optimierung unter Linux ein

Einführung Haben Sie Probleme mit der Konnektivität, wenn Besucher aus anderen Ländern auf Ihre Website zugreifen? Ich frage mich, warum die Download-Geschwindigkeit von Ihrem Foreig

So installieren Sie Gitea unter Fedora 29

So installieren Sie Gitea unter Fedora 29

Verwenden Sie ein anderes System? Gitea ist ein alternatives Open-Source-Versionskontrollsystem, das von Git unterstützt wird. Gitea ist in Golang geschrieben und ist

So stellen Sie Ghost v0.11 LTS unter Ubuntu 16.04 bereit

So stellen Sie Ghost v0.11 LTS unter Ubuntu 16.04 bereit

Verwenden Sie ein anderes System? Ghost ist eine Open-Source-Blogging-Plattform, die seit 201 bei Entwicklern und normalen Benutzern immer beliebter wird

So installieren Sie Paste 2.1 auf einem Fedora 26 LAMP VPS

So installieren Sie Paste 2.1 auf einem Fedora 26 LAMP VPS

Verwenden Sie ein anderes System? Paste 2.1 ist eine einfache und flexible, kostenlose und Open-Source-Pastebin-Anwendung zum Speichern von Code, Text und mehr. Es war ursprünglich

So installieren Sie Pip unter Linux

So installieren Sie Pip unter Linux

Pip ist ein Tool zum Verwalten von Python-Paketen. Die Verwendung eines Paketmanagers ermöglicht eine effiziente Verwaltung Ihres Servers. In diesem Tutorial erkläre ich, wie t

So stellen Sie Google BBR unter CentOS 7 bereit

So stellen Sie Google BBR unter CentOS 7 bereit

BBR (Bottleneck Bandwidth and RTT) ist ein neuer Algorithmus zur Überlastungskontrolle, der von Google zum Linux-Kernel-TCP-Stack hinzugefügt wird. Mit BBR an Ort und Stelle,

So installieren Sie YOURLS unter CentOS 7

So installieren Sie YOURLS unter CentOS 7

YOURLS (Your Own URL Shortener) ist eine Open-Source-Anwendung zur URL-Verkürzung und Datenanalyse. In diesem Artikel werden wir den Installationsprozess behandeln

So aktivieren Sie TLS 1.3 in Apache unter Fedora 30

So aktivieren Sie TLS 1.3 in Apache unter Fedora 30

Verwenden Sie ein anderes System? TLS 1.3 ist eine Version des TLS-Protokolls (Transport Layer Security), das 2018 als vorgeschlagener Standard in RFC 8446 veröffentlicht wurde

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.