Iptables für Anfänger

Iptables für Anfänger
Iptables gelten als eine der wichtigsten defensiven Ressourcen für viele Systemadministratoren, obwohl sie durch Nftables ersetzt wurden. Top -Networking -Hersteller integrierte Iptables in Hardware noch in Produktionsumgebungen.

Iptables ist sehr vielseitig und akzeptiert direkte Befehle des Benutzer, der Regeln nach Bedarf laden und entladen kann.

Dieses Tutorial zeigt So schützen Sie einen Webserver, Leiten Sie Verbindungen an interne IP -Adressen von unserem LAN weiter und bieten Sie nur für weiße IP -Adressen spezifische Dienste an.

Notiz: Dieses Iptables -Tutorial wurde erstmals vor zwei Jahren veröffentlicht und am 23.05.2021 mit verbesserten Beispielen und Screenshots in besserer Qualität aktualisiert.

Wie installiert man

Iptables werden standardmäßig in Verteilungen weggelassen, die Nftables enthalten.

Führen Sie den folgenden Befehl aus, um Iptables auf Debian -basierten Linux -Verteilungen zu installieren:

sudo apt update && apt installieren iptables

Öffnen von HTTP- und HTTPS -Ports

Lassen Sie uns zunächst alle Akzeptieren von Richtlinien hinzufügen, die mit dem Webserver beginnen.

Notiz: Wenn Sie ein Skript mit Regeln erstellen, müssen Sie nicht verwenden sudo.

sudo iptables -a Eingabe -p tcp - -dort 80 -J Akzeptieren
sudo iptables -a Eingabe -p tcp - -dort 443 -J Akzeptieren

Um hinzugefügte Regeln zu sehen “iptables -l

Wo:

Iptables = Ruft das Programm auf

-A = fügt eine Regel hinzu

EINGANG = eingehender Verkehr

-P = Protokoll

-ddport = Zielport

-J = Geben Sie das „Ziel“ an; Das Ziel ist die Art der Richtlinie: Akzeptieren, fallen, abzulehnen (integriert)…

Iptables -l = listet alle iptables geladenen Regeln auf (Iptables -l -v = das gleiche mit Ausführlichkeit.)

Im obigen Beispiel wenden wir Iptables an, eine Regel für eingehenden Verkehr über TCP -Protokoll und Ports 80 (HTTP) und 443 (HTTPS) hinzuzufügen, um akzeptiert zu werden.

Wir können den Befehl ändern, um die Verbindung nur von einem bestimmten IP zu akzeptieren, indem der Parameter hinzugefügt wird-S”:

sudo iptables -a Eingabe -s 127.0.0.1 -p tcp - -dort 80 -j akzeptieren

Wo:

S = Quelle

Sie können Ihre Firewall auch mit NMAP testen:

Notiz: Im obigen Beispiel wird Port 443 nicht angezeigt, da der Server kein SSL -Zertifikat enthält.

Notiz: Weitere Informationen zu NMAP erhalten Sie durch.

Schutz Ihres Servers mit Iptables:

#Open HTTP- und HTTPS -Dienste.
iptables -a Eingabe -p tcp - -dort 80 -j Akzeptieren
iptables -a Eingabe -p tcp - -dort 443 -J Akzeptieren
#Opens SSH -Portdienst
iptables -a Eingabe -p tcp - -dort 22 -m connTrack -CTState New, etabliert -J Akzeptieren

Wo die neuen Parameter sind:

-M bedeutet "Match" und wird verwendet, um Iptables -Erweiterungen wie ConnTrack aufzurufen, was nicht Teil der Iptables -Kernfunktionen ist.

Conntrack = Ermöglicht die Nachverfolgung von Informationen zu Verbindungen wie bestimmte Adressen oder in diesem Fall den Status der Verbindung. Dies muss sorgfältig verwendet werden, da viele Regeln, um Server vor einigen Angriffen zu verteidigen.

-ctstate = bestimmt den zugänglichen Zustand der Regel; Die möglichen Zustände sind: NEU, GEGRÜNDET, VERWANDT Und UNGÜLTIG.

#Proten Sie Ihren SSH -Service gegen Brute Force -Angriffe, indem Sie nur eine bestimmte IP zuzulassen
Zu greifen auf Iptables -a Eingabe -p tcp -s x zuzugreifen.X.X.X - -dort 22 -m conntrack -CTState neu,
Etabliert -J Akzeptieren
#Proten Sie Ihren SSH -Dienst gegen Brute Force -Angriffe, indem Sie die Verbindungsversuche einschränken
Iptables -a Eingabe -p tcp -m tcp - -dort 22 -m connTrack -CTState New -j 22 -Test
Iptables -A 22 -Test -m -aktuelle --Name Verbindungen -set -mask 255.255.255.255 -RSource
Iptables -a 22 -Test -m -aktuelle --Name Verbindungen - -Rcheck -mask 255.255.255.255
--RSOURCE -Sekunden 30 -HitCount 3 -J 22 -Proteste
Iptables -a 22 -test -j akzeptieren
Iptables -a 22 -Proteste -j Drop

Wo:

In der ersten Zeile heißt es in unserer Regel "-M conntrack -ctstate new “,“ Was bedeutet, wenn die Verbindung neu ist, geben Sie an die Regel „22-Test“ weiter.

Die zweite Zeile besagt, dass Pakete NetMask 255.255.255.255 werden als als benannt Verbindungen.

Die dritte Zeile sagt, wenn a Verbindungen Innerhalb von 30 Sekunden ist die Firewall über dreimal über die Kette angewendet 22 Protest. Die vierte Zeile sagt, ob die Verbindungen Es wurden innerhalb von 30 Sekunden nicht über dreimal gesehen, sie konnten akzeptiert werden.

Die fünfte Zeile, die zum gehört 22 Protest Kette, sagt fallen Verbindungen Wenn sie innerhalb von 30 Sekunden über dreimal über 3 Mal liegen scheinen.

Lassen Sie uns nun alle nicht abgelegten eingehenden Verbindungen ablehnen und den gesamten ausgehenden Verkehr zulassen:

iptables -p Ausgabe akzeptieren
Iptables -P -Eingangsabfall

P bezieht sich auf die Kettenpolitik; Denken Sie daran, das Ziel ist die Richtlinie, akzeptieren, fallen, abzulehnen, abzulehnen. In diesem Fall sagen wir, dass die Ausfallrichtlinie für den ausgehenden Verkehr zu akzeptieren ist, und die Ausfallrichtlinie für eingehenden Verkehr besteht darin. Dies ist eine sehr grundlegende Firewall, die keine Regeln für viele Angriffe, für Lernzwecke und nicht für die Produktion enthält. Am Ende des Artikels füge ich eine Firewall bei, die ich für die Produktion auf einem Server verwendet habe. Es gibt Kommentare, die jede Regel erklären.

Weiterleiten einer Verbindung an einen bestimmten Port an eine bestimmte IP -Adresse

Dies ist auch sehr nützlich für Desktop -Benutzer, die eine Verbindung über ein bestimmtes Gerät unterschreiben möchten. Es kann auch für Spieler nützlich sein; Normalerweise tun wir dies aus den Routereinstellungen, nehmen wir jedoch an, dass das Routing -Gerät Iptables ausführt.

Iptables -a Voran -T -Nat -p TCP -d x.X.X.X - -dort 8080 -j dnat - -to -destination y.Y.Y.Y: 80
iptables -a postrouting -t nat -p tcp -j snat -to -source x.X.X.X

Die obigen Regeln rufen sich auf NAT (Netzwerkadressenübersetzung) ein, um Verbindungen über Protokoll TCP an die Adresse X anzugeben.X.X.X und Port 8080 werden um y umgeleitet.Y.Y.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 Zugriff auf eine IP -Kamera zu ermöglichen, Online -Spiele mit externen Netzwerken usw. zu aktivieren, usw.

Dieses Tutorial sollte Anfänger in Iptables vorstellen und nur eine begrenzte Anzahl von Grundlagen erklärt. Im Folgenden können Sie ein Beispiel einer gut geplanten Firewall sehen, die für einen Produktionsserver verwendet wird. Es enthält einige der Regeln, die wir bereits zu komplexeren Regeln gesehen haben, um DDOs zu verhindern, unter anderem Angriffsarten.

Bonus: Probe der Produktionsfeuerwall

iptables -f
#---- Aktivieren Sie einen schlechten Fehlermeldungsschutz
aktivieren/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#---- Schalten Sie die umgekehrte Pfadfilterung ein. Sicherer, bricht aber asymmetrisches Routing und/oder IPSec
aktivieren/proc/sys/net/ipv4/conf/*/rp_filter
#---- Akzeptieren Sie keine Routed-Pakete mit Quellen. Das Quellrouting wird selten für legitim verwendet
Zwecke deaktivieren/proc/sys/net/ipv4/conf/*/accept_source_route
#---- ICMP Deaktivieren Sie die Akzeptanz, mit der Ihre Routing-Tabellen geändert werden können
deaktivieren/proc/sys/net/ipv4/conf/*/accept_redirects
#---- Da wir keine Weiterleitungen akzeptieren, senden Sie auch keine Weiterleitungsnachrichten
Deaktivieren/proc/sys/net/ipv4/conf/*/send_redirects
#---- Ignorieren Sie Pakete mit unmöglichen Adressen
deaktivieren/proc/sys/net/ipv4/conf/*/log_martians
#
aktivieren/proc/sys/net/ipv4/tcp_timestamps
#---- Hilfe gegen Syn-Flood-DOS- oder DDOS
TCP -Sequenznummern aktivieren/proc/sys/net/ipv4/tcp_syncookies
#---- Verwenden Sie selektiv
deaktivieren/proc/sys/net/ipv4/tcp_sack
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
#Now können wir ausgewählten Diensten zu unserem Firewall -Filter hinzufügen. Das erste so etwas
ist eine localhost interface iptables -a input -i lo -j Akzeptieren
#Wir hat der Firewall gesagt.
iptables -a Eingabe -p TCP ! -M conntrack -Cctstate New -j Drop
#Wir geben Iptables an
Stattdessen 22.
iptables -a Eingabe -p tcp -m tcp - -dort 50683 -J Akzeptieren
iptables -a input -p tcp -m tcp -s spezifisches IP - -dort 50683 -J Akzeptieren
iptables -a input -p tcp -m tcp -s spezifisches IP - -dort 50683 -J Akzeptieren
iptables -a input -p tcp -m tcp -s spezifisches IP - -dort 50683 -J Akzeptieren
Iptables -a Eingabe -p tcp - -dort 50683 -m connTrack -CTTState Neu -M letztes -set
--Nennen Sie SSH -j Akzeptieren
Iptables -a Eingabe -p TCP - -dort 50683 -m neuer -update -Sekunden 60 -Hitcount 4
--RTTL --Name SSH -j log - -log -prefix "SSH_BRUTE_FORCE"
Iptables -a Eingabe -p TCP - -dort 50683 -m neuer -update -Sekunden 60 -Hitcount 4
--rttl -name ssh -j Drop
Iptables -a Eingabe -p tcp - -dort 50683 -m connTrack -CTTState Neu -M letztes -set
--Nennen Sie SSH
iptables -a Eingabe -p TCP - -dort 50683 -m conntrack -CTTState New -j Ssh_Whitelist
iptables -a Eingabe -p TCP - -dort 50683 -m conntrack -CTTState New -m letztes -update
--Sekunden 60 -HitCount 4 - -Rttl --Name SSH -j Ulog -Ulog -Prefix SSH_BRU
iptables -a Eingabe -p TCP - -dort 50683 -m conntrack -CTTState New -m letztes -update
--Sekunden 60 -HitCount 4 - -Rttl --Name SSH -j Drop
#Now ich erlaube IMAP und SMTP.
-Ein Eingang -p tcp - -dort 25 -J Akzeptieren
# Ermöglicht Pop- und Pop -Verbindungen
-Ein Eingang -p tcp - -dort 110 -J Akzeptieren
-Ein Eingang -p tcp - -dort 995 -J Akzeptieren
############ IMAP & IMAPS ###################ib
-Ein Eingang -p tcp - -dort 143 -J Akzeptieren
-Ein Eingang -p tcp - -dort 993 -J Akzeptieren
#################################
iptables -a Eingabe -i Eth0 -p tcp -m tcp - -dort 3306 -J Akzeptieren
########## R1soft CDP -System ##############
iptables -a Eingabe -p tcp -m tcp -S spezifisches IP - -dort 1167 -J Akzeptieren
############### Ausgang ###################
iptables -i Eingabe -m Conntrack -CTTState etabliert, verwandte -j Akzeptieren
### Ermöglichen Sie laufende Blockanträge nicht definiert ###
iptables -p Ausgabe akzeptieren
Iptables -P -Eingangsabfall
iptables -l -n
iptables-save | T -Shirt /etc /iptables.prüfen.Regeln
iptables-restore < /etc/iptables.test.rules
#Service iptables Neustart