[LINUX] Paketfiltereinstellungen mit iptables unter Ubuntu 19.10 Eoan Ermine und deren Persistenz

Überblick

Speichern und reflektieren Sie die Einstellungen mit dem Befehl iptables-save / iptables-restore

Überprüfen Sie die Grundeinstellungen (IPv4)

Überprüfen Sie dies mit dem Befehl iptables und dem Befehl iptables-save.

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
$ sudo iptables-save
# Generated by iptables-save v1.8.3 on Sun Jan 12 23:15:35 2020
*filter
:INPUT ACCEPT [1796:190499]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1400:212762]
COMMIT
# Completed on Sun Jan 12 23:15:35 2020

Schreibregeln (IPv4)

Dieses Mal habe ich die Paketfilterregeln in einer Datei namens rules.v4 gespeichert.

*filter
:INPUT   DROP   [0:0]
:FORWARD DROP   [0:0]
:OUTPUT  ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP
-A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name t_icmp --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --syn --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT
-A INPUT -p tcp --dport 80   -j ACCEPT
-A INPUT -p tcp --dport 443  -j ACCEPT
COMMIT

Der Inhalt der Regel ist Einfache Erklärung von Firewall-Iptables - Auch Anfänger können gut verstehen! Auf den Webserver-Betriebskurs von VPS \ (4 ) \ | Sakura Knowledge wurde verwiesen.

Reflektieren Sie die Regeln (IPv4)

Wenden Sie die Regel mit dem Befehl iptables-restore an.

$ sudo iptables-restore < rules.v4

Stellen Sie sicher, dass die Einstellungen wiedergegeben werden.

$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP       tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request limit: up to 1/min burst 10 mode srcip htable-expire 120000
ACCEPT     tcp  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN limit: up to 1/min burst 10 mode srcip htable-expire 120000
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
$ sudo iptables-save
# Generated by iptables-save v1.8.3 on Sun Jan 12 23:16:24 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [50:6132]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name t_icmp --hashlimit-htable-expire 120000 -j ACCEPT
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name t_sshd --hashlimit-htable-expire 120000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT
# Completed on Sun Jan 12 23:16:24 2020

Überprüfen Sie die Grundeinstellungen (IPv6)

Überprüfen Sie dies mit dem Befehl ip6tables und dem Befehl ip6tables-save.

$ sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
$ sudo ip6tables-save
# Generated by ip6tables-save v1.8.3 on Sun Jan 12 20:37:47 2020
*filter
:INPUT ACCEPT [328:22552]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [448:31496]
COMMIT
# Completed on Sun Jan 12 20:37:47 2020

Schreibregeln (IPv6)

Dieses Mal habe ich die Paketfilterregeln in einer Datei namens rules.v6 gespeichert.

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

Reflektiere die Regeln (IPv6)

Wenden Sie die Regel mit dem Befehl ip6tables-restore an.

$ sudo ip6tables-restore < rules.v6

Stellen Sie sicher, dass die Einstellungen wiedergegeben werden.

$ sudo ip6tables -L
Chain INPUT (policy DROP)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
$ sudo ip6tables-save
# Generated by ip6tables-save v1.8.3 on Mon Jan 13 00:10:54 2020
*filter
:INPUT DROP [18:1296]
:FORWARD DROP [0:0]
:OUTPUT DROP [74:5328]
COMMIT
# Completed on Mon Jan 13 00:10:54 2020

Behalten Sie die Einstellungen mit dem Befehl netfilter-persistent bei

Das heißt, bestehen zu bleiben

Die iptables-Einstellungen kehren beim Neustart des Betriebssystems in den Ausgangszustand zurück. Wenn Sie die Einstellungen mit dem Befehl netfilter-persistent beibehalten, werden die Einstellungen beim Start des Betriebssystems wieder angezeigt.

Installieren Sie das Paket iptables-persistent

Installieren Sie das Paket iptables-persistent, ein Plug-In für iptables des Befehls netfilter-persistent.

$ sudo apt install iptables-persistent

Das Paket netfilter-persistent wird auch als Abhängigkeit installiert. Der Befehl netfilter-persistent für die Persistenz ist im Paket netfilter-persistent enthalten.

Behalten Sie die Einstellungen mit netfilter-persistentem Speichern bei

Behalten Sie die aktuellen Einstellungen mit netfilter-persistentes Speichern bei.

$ sudo netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save

Permanente Einstellungen werden in den Dateien rules.v4 und rules.v6 unter / etc / iptables / gespeichert.

$ tree /etc/iptables/
/etc/iptables/
├── rules.v4
└── rules.v6

0 directories, 2 files

Wenn Sie nach dem Neustart des Betriebssystems mit sudo-Neustart usw. die Einstellungen überprüfen, wird es ordnungsgemäß wiederhergestellt.

Dokumentation für iptables-persistent und netfilter-persistent

README-Dateien und Handbücher sind verfügbar.

$ cat /usr/share/doc/iptables-persistent/README
netfilter-persistent and its plugins
------------------------------------

netfilter-persistent does no work on its own. You need the accompanying
plugins (for example, iptables-persistent) to load and save filter rules.

However, commands are run from netfilter-persistent. For example, to save
all filter rules:

   netfilter-persistent save

or to load them:

   netfilter-persistent start

For more details, see `man netfilter-persistent`.

The system service will try to load rules at startup if enabled, but by
default it will not flush rules at shutdown. This behaviour can be changed
by editing /etc/default/netfilter-persistent.

Ubuntu Manpage: netfilter-persistent - load, flush and save netfilter rule sets

Port-Scan mit nmap

Scannen Sie den Port mit dem Befehl nmap von einem anderen Computer aus, um festzustellen, ob die Einstellungen für iptables funktionieren.

Port-Scan mit einigen Mustern.

XXX.XXX.XXX.XXX ist die Ziel-IP-Adresse (IPv4).

$ sudo nmap -Pn XXX.XXX.XXX.XXX
Starting Nmap 7.80 ( https://nmap.org ) at 2020-01-12 23:38 JST
Nmap scan report for www.example.com (XXX.XXX.XXX.XXX)
Host is up (0.020s latency).
Not shown: 997 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  closed http
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 4.59 seconds

Stealth-Scan.

$ sudo nmap -sS -sU -Pn XXX.XXX.XXX.XXX
Starting Nmap 7.80 ( https://nmap.org ) at 2020-01-12 23:38 JST
Nmap scan report for www.example.com (XXX.XXX.XXX.XXX)
Host is up (0.023s latency).
Not shown: 1000 open|filtered ports, 997 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  closed http
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 10.63 seconds

XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX ist die Ziel-IP-Adresse (IPv6).

$ nmap -6 -Pn XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
Starting Nmap 7.80 ( https://nmap.org ) at 2020-01-12 23:46 JST
Nmap scan report for wwww.v6.example.com (XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX)
Host is up.
All 1000 scanned ports on wwww.v6.example.com (XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX) are filtered

Nmap done: 1 IP address (1 host up) scanned in 201.70 seconds

Stealth-Scan.

$ sudo nmap -6 -sS -sU -Pn XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
Starting Nmap 7.80 ( https://nmap.org ) at 2020-01-12 23:52 JST
Nmap scan report for wwww.v6.example.com (XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX)
Host is up.
All 2000 scanned ports on wwww.v6.example.com (XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX) are filtered (1000) or open|filtered (1000)

Nmap done: 1 IP address (1 host up) scanned in 404.36 seconds

Referenzmaterial

Recommended Posts

Paketfiltereinstellungen mit iptables unter Ubuntu 19.10 Eoan Ermine und deren Persistenz
Installieren Sie Apache 2.4 unter Ubuntu 19.10 Eoan Ermine und führen Sie CGI aus
Ubuntu 19.10 Eoan Ermines japanische / japanische Gebietsschemaumgebung und Zeitzoneneinstellungen
So aktualisieren Sie die Sicherheit unter Ubuntu 19.10 Eoan Ermine
Reverse Proxy mit Apache 2.4 unter Ubuntu 19.10 Eoan Ermine
Grundeinstellungen für die Verwendung von Python3.8 und pip unter CentOS8
Installieren Sie Apache Tomcat 9 unter Ubuntu 19.10 Eoan Ermine Hello World