iptables

Iptables für Anfänger

Iptables für Anfänger
Iptables ist im Grunde die wichtigste Firewall für Linux-Systeme. Es gibt Alternativen wie nftables, aber Iptables bleibt die wichtigste. Es ist sehr flexibel, indem es direkte Befehle vom Benutzer akzeptiert Richtigkeit.

Eigentlich müssen Sie nicht einmal die Syntax von Iptable kennen, um es zu verwenden, Sie haben grafische Tools wie Firewall Builder, die den Lernprozess überflüssig machen können, aber wenn Sie das Linux-Administrationswissen erweitern möchten, ist Iptables der erste Schritt, um praktisch zu lernen Verwalten Sie die Sicherheit unter Linux und vereinfachen Sie sogar die Verwaltung von CISCO- oder Fortigate-Sicherheitsgeräten und ähnlichem.

Iptables ermöglicht es Ihnen grundsätzlich, Ihr System anzuweisen, eine Verbindung abhängig von ausgewählten Parametern anzunehmen, abzulehnen oder weiterzuleiten, zum Beispiel alle Verbindungen zum X-Port auf eine andere IP-Adresse umzuleiten, alle Verbindungen zu blockieren, die von einer bestimmten IP, einem IP-Bereich oder zu Akzeptieren Sie neben vielen anderen Funktionen alle Verbindungen, die von IP-Adressen auf der Whitelist kommen.

In diesem Tutorial lernen wir, wie man einen Webserver schützt, wie man Verbindungen aus unserem LAN an interne IP-Adressen weiterleitet und wie man bestimmte Dienste nur für Whitelist-IP-Adressen anbietet.

Installieren von Iptables

Um iptables auf Debian/Ubuntu-Systemen zu installieren, führen Sie einfach „apt update && apt install iptables“ als root oder mit „sudo“ als Präfix wie im folgenden Bild aus.

Öffnen von HTTP- und HTTPS-Ports

Lassen Sie uns zunächst alle ACCEPT-Richtlinien hinzufügen, die vom Webserver beginnen.

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Um unsere hinzugefügten Regeln zu sehen, führen Sie „iptables -L“ aus

Wo:

Iptables = ruft das Programm auf
-EIN = fügt eine Regel hinzu
EINGANG = eingehender Verkehr
-p = Protokoll
-ddport = Zielhafen
-j = Geben Sie das „Ziel“ an, das Ziel ist die Art der Richtlinie: ACCEPT, DROP, QUEUE oder RETURN.

Dann weisen wir Iptables im Beispiel des obigen Bildes an, eine Regel für eingehenden Datenverkehr über das TCP-Protokoll und die zu akzeptierenden Ports 80 und 443 hinzuzufügen.

Wir können den Befehl ändern, um die Verbindung nur von einer bestimmten IP zu akzeptieren, indem wir den Parameter "-so“:

iptables -A EINGANG -s 127.0.0.1 -p tcp --dport 80 -j AKZEPTIEREN

Wo:

so = Quelle
Iptables -L = listet alle von iptables geladenen Regeln auf
Iptables -L -v = dasselbe mit Ausführlichkeit.

Wir können unsere Firewall auch mit nmap testen:

Wie wir sehen, ist der Port 80 sowohl nach „iptables -L“ als auch nach Nmap . geöffnet.

Hinweis: Weitere Informationen zur Nmap-Nutzung finden Sie in unserem Tutorial dazu read

Schutz Ihres Servers

#HTTP- und HTTPS-Dienste öffnen.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#SSH-Port-Dienst öffnen
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Wo die neuen Parameter sind:

-ich = bedeutet „übereinstimmen“ und wird verwendet, um die Erweiterungen von Iptable wie conntrack aufzurufen, die nicht Teil der Kernfunktionen von iptable sind.

conntrack = Ermöglicht das Nachverfolgen von Informationen über Verbindungen wie bestimmte Adressen oder in diesem Fall den Status der Verbindung. Dies muss mit Bedacht verwendet werden, da viele Regeln zum Schutz von Servern vor einigen Angriffen Conntrack verwenden, während seine Verwendung durch die Hardware eingeschränkt ist und eine solche Einschränkung verwendet werden kann, um die Ressourcen des Servers zu überlasten.

-ctstate = bestimmt den Status der zu erfüllenden Regel, die möglichen Status sind: NEU, ESTABLISHED, RELATED und INVALID.

#Schützen Sie Ihren SSH-Dienst vor Brute-Force-Angriffen, indem Sie nur eine bestimmte IP zulassen
um auf iptables zuzugreifen -A INPUT -p tcp -s X.X.X.X --dport 22 -m conntrack --ctstate NEU,
Etabliert -j AKZEPTIEREN
#Schützen Sie Ihren SSH-Dienst vor Brute-Force-Angriffen, indem Sie Verbindungsversuche begrenzen
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEU -j 22-test
Iptables -A 22-test -m aktuell --name VERBINDUNGEN --set --mask 255.255.255.255 --rsource
Iptables -A 22-test -m aktuell --name VERBINDUNGEN --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitcount 3 -j 22-protection
Iptables -A 22-test -j AKZEPTIEREN
Iptables -A 22-Schutz -j DROP

Wo:
In der ersten Zeile lautet unsere Regel „-m conntrack -ctstate NEU” das heißt, wenn die Verbindung neu ist, gehen Sie zur Regel "22-Test" über.

Die zweite Zeile sagt Pakete Netzmaske 255.255.255.255 sind benannt als ANSCHLÜSSE .

Die dritte Zeile sagt, wenn a ANSCHLÜSSE Es erscheint mehr als dreimal innerhalb von 30 Sekunden, die Firewall wendet die Kette weiter an 22-Schutz. Die vierte Zeile sagt, wenn die ANSCHLÜSSE schien nicht mehr als 3 mal innerhalb von 30 Sekunden es kann akzeptiert werden.
Fünfte Zeile, die zum . gehört 22-Schutz Kette sagt zu fallen ANSCHLÜSSE wenn es innerhalb von 30 Sekunden mehr als 3 Mal erscheint.

Lassen Sie uns zum Schluss alle nicht akzeptierten Verbindungen ablehnen und den gesamten ausgehenden Verkehr zulassen:

iptables -P AUSGABE AKZEPTIEREN
iptables -P INPUT DROP

Wobei -P die Kette des Ziels bedeutet, denken Sie daran, dass das Ziel die Richtlinie ist, ACCEPT, DROP, QUEUE oder RETURN. In diesem Fall sagen wir, dass die Standardrichtlinie für ausgehenden Datenverkehr akzeptieren und die Standardrichtlinie für eingehenden Datenverkehr ablehnen ist, es sei denn, wir haben in den vorherigen Regeln etwas anderes festgelegt. something. Dies ist eine sehr einfache Firewall, die keine Regeln für viele Angriffe enthält, für Lernzwecke und nicht für die Produktion. Am Ende des Artikels füge ich eine Firewall hinzu, die ich für die Produktion auf einem Server verwendet habe.

WEITERLEITUNG EINER VERBINDUNG AN EINEN SPEZIFISCHEN PORT AN EINE SPEZIFISCHE IP-ADRESSE

Dies ist auch für Desktop-Benutzer sehr nützlich, die eine Verbindung über ein bestimmtes Gerät herstellen möchten. Es kann sogar für Spieler nützlich sein. Normalerweise tun wir dies über die Einstellungen des Routers, aber nehmen wir an, das Routing-Gerät läuft mit Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT --to-destination
Ja.Ja.Ja.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.X.X.X

Die obigen Regeln rufen NAT (Network Address Translation) auf, um Verbindungen über das Protokoll TCP zur Adresse X . anzugeben.X.X.X und Port 8080 werden auf die Adresse Y umgeleitet.Ja.Ja.Y, Port 80. Die zweite Regel gibt an, dass Antworten an die Quelladresse gesendet werden müssen (X.X.X.X). Wir können diese Regeln verwenden, um den Zugriff auf eine IP-Kamera zu ermöglichen, um Online-Spiele mit externen Netzwerken zu ermöglichen usw.

Dieses Tutorial sollte Einsteiger in Iptables einführen und erklärt nur eine begrenzte Anzahl von Grundfunktionen. Unten sehen Sie ein Beispiel einer gut geplanten Firewall, die für einen Produktionsserver verwendet wurde. Sie umfasst einige der Regeln, die wir bereits gesehen haben, bis hin zu komplexeren Regeln, um unter anderem DDoS-Angriffe zu verhindern.
Das nächste Tutorial befasst sich mit dem Sniffing in lokalen Netzwerken, aber in einem nächsten Tutorial werde ich einige der Regeln erklären, die auf die Firewall angewendet werden.  Vielen Dank, dass Sie LinuxHint folgen.com, folgen Sie uns weiterhin für zukünftige Updates zu Iptables und Linux im Allgemeinen.

Bonus: Beispiel einer Produktions-Firewall

iptables -F
#---- Schutz vor schlechten Fehlermeldungen aktivieren
/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses aktivieren
#---- Reverse-Pfad-Filterung aktivieren. Sicherer, aber unterbricht asymmetrisches Routing und/oder IPSEC
/proc/sys/net/ipv4/conf/*/rp_filter aktivieren
#---- Keine gerouteten Quellpakete akzeptieren. Source-Routing wird selten für legitime
Zwecke deaktivieren /proc/sys/net/ipv4/conf/*/accept_source_route
#---- Deaktivieren Sie die ICMP-Weiterleitungsakzeptanz, mit der Sie Ihre Routing-Tabellen ändern können
/proc/sys/net/ipv4/conf/*/accept_redirects deaktivieren
#---- Da wir keine Weiterleitungen akzeptieren, senden Sie auch keine Weiterleitungsnachrichten
/proc/sys/net/ipv4/conf/*/send_redirects deaktivieren
#---- Pakete mit unmöglichen Adressen ignorieren
/proc/sys/net/ipv4/conf/*/log_martians deaktivieren
#---- Schützen Sie sich vor dem Umhüllen von Sequenznummern und unterstützen Sie die Rundreisezeitmessung
aktivieren /proc/sys/net/ipv4/tcp_timestamps
#---- Hilfe gegen Syn-Flood-DoS- oder DDoS-Angriffe mit bestimmten Initialwahlen
TCP-Sequenznummern aktivieren /proc/sys/net/ipv4/tcp_syncookies
#---- Verwenden Sie Selective ACK, um anzuzeigen, dass bestimmte Pakete fehlen
/proc/sys/net/ipv4/tcp_sack deaktivieren
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
#Jetzt können wir damit beginnen, ausgewählte Dienste zu unserem Firewall-Filter hinzuzufügen. Das erste sowas
ist eine Localhost-Schnittstelle iptables -A INPUT -i lo -j ACCEPT
#Wir haben die Firewall angewiesen, alle eingehenden Pakete mit den TCP-Flags NONE zu nehmen und sie einfach DROP zu lassen.
iptables -A INPUT -p tcp ! -m conntrack --ctstate NEU -j DROP
#Wir weisen iptables an, dem eingehenden (INPUT) eine Regel hinzuzufügen (-A) - SSH funktioniert auf Port 50683
statt 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s spezifische IP --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s spezifische IP --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s spezifische IP --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEU -m kürzlich --set
--Name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m aktuell --update --seconds 60 --hitcount 4
--rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 50683 -m aktuell --update --seconds 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEU -m kürzlich --set
--Name SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEU -m aktuell --update
--Sekunden 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEU -m aktuell --update
--Sekunden 60 --hitcount 4 --rttl --name SSH -j DROP
#Jetzt erlaube ich imap und smtp.
-A EINGANG -p tcp --dport 25 -j AKZEPTIEREN
# Ermöglicht Pop- und Pop-Verbindungen
-A EINGANG -p tcp --dport 110 -j AKZEPTIEREN
-A EINGANG -p tcp --dport 995 -j AKZEPTIEREN
############ IMAP & IMAPS ############
-A EINGANG -p tcp --dport 143 -j AKZEPTIEREN
-A EINGANG -p tcp --dport 993 -j AKZEPTIEREN
########### MYSQL ###################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## R1soft CDP-System ###############
iptables -A INPUT -p tcp -m tcp -s spezifische IP --dport 1167 -j ACCEPT
############### ausgehende ###################
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
### Laufen zulassen, eingehend sperren nicht definiert ###
iptables -P AUSGABE AKZEPTIEREN
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee /etc/iptables.Prüfung.Regeln
iptables-wiederherstellung < /etc/iptables.test.rules
#service iptables neu starten
So verwenden Sie Xdotool zum Stimulieren von Mausklicks und Tastenanschlägen in Linux
Xdotool ist ein kostenloses Open-Source-Befehlszeilentool zum Simulieren von Mausklicks und Tastenanschlägen. Dieser Artikel enthält eine kurze Anleit...
Top 5 ergonomische Computermaus-Produkte für Linux
Verursacht längere Computernutzung Schmerzen im Handgelenk oder in den Fingern?? Leiden Sie unter steifen Gelenken und müssen ständig die Hände schütt...
So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...