Paramètres de filtrage de paquets utilisant iptables sur Ubuntu 19.10 Eoan Ermine et leur persistance

Aperçu

--Enregistrer et refléter les paramètres avec la commande iptables-save / iptables-restore --Configurez IPv4 et IPv6 --Persistez les paramètres avec la commande netfilter-persistent (afin que les paramètres ne disparaissent pas même si le système d'exploitation est redémarré)

Enregistrer et refléter les paramètres avec la commande iptables-save / iptables-restore

Vérifiez les paramètres initiaux (IPv4)

Vérifiez avec la commande iptables et la commande 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

Règles d'écriture (IPv4)

Cette fois, j'ai enregistré les règles de filtrage des paquets dans un fichier appelé rules.v4.

*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

Le contenu de la règle est Explication simple du pare-feu iptables-Même les débutants peuvent bien comprendre! Le cours sur l'utilisation du serveur Web par VPS \ (4 ) \ | Sakura Knowledge a été mentionné.

Refléter les règles (IPv4)

Appliquez la règle avec la commande iptables-restore.

$ sudo iptables-restore < rules.v4

Confirmez que les paramètres sont reflétés.

$ 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

Vérifiez les paramètres initiaux (IPv6)

Vérifiez avec la commande ip6tables et la commande 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

Règles d'écriture (IPv6)

Cette fois, j'ai enregistré les règles de filtrage des paquets dans un fichier appelé rules.v6.

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

Refléter les règles (IPv6)

Appliquez la règle avec la commande ip6tables-restore.

$ sudo ip6tables-restore < rules.v6

Confirmez que les paramètres sont reflétés.

$ 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

Conserver les paramètres avec la commande netfilter-persistent

Signification de persister

Les paramètres iptables reviendront à leur état initial au redémarrage du système d'exploitation. Si vous rendez les paramètres persistants avec la commande netfilter-persistent, les paramètres seront à nouveau reflétés au démarrage du système d'exploitation.

Installez le package iptables-persistent

Installez le package iptables-persistent, qui est un plug-in pour iptables de la commande netfilter-persistent.

$ sudo apt install iptables-persistent

Le package netfilter-persistent est également installé en tant que dépendance. La commande netfilter-persistent pour la persistance est incluse dans le package netfilter-persistent.

Paramètres de persistance avec sauvegarde persistante netfilter

Conserver les paramètres actuels avec une sauvegarde persistante netfilter.

$ 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

Les paramètres persistants sont stockés dans les fichiers rules.v4 et rules.v6 sous / etc / iptables /.

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

0 directories, 2 files

Après avoir redémarré le système d'exploitation avec sudo reboot, etc., si vous vérifiez les paramètres, il est restauré correctement.

Documentation pour iptables-persistent et netfilter-persistent

Les fichiers et manuels README sont disponibles.

$ 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

Scan de port avec nmap

Scannez le port avec la commande nmap depuis une autre machine pour voir si les paramètres iptables fonctionnent.

Balayage des ports avec certains modèles.

XXX.XXX.XXX.XXX est l'adresse IP cible (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

Analyse furtive.

$ 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 est l'adresse IP cible (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

Analyse furtive.

$ 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

Matériel de référence

Recommended Posts

Paramètres de filtrage de paquets utilisant iptables sur Ubuntu 19.10 Eoan Ermine et leur persistance
Installez Apache 2.4 sur Ubuntu 19.10 Eoan Ermine et exécutez CGI
Environnement local japonais / japonais d'Ubuntu 19.10 et paramètres de fuseau horaire d'Eoan Ermine
Comment mettre à jour la sécurité sur Ubuntu 19.10 Eoan Ermine
Proxy inverse avec Apache 2.4 sur Ubuntu 19.10 Eoan Ermine
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
Installez Apache Tomcat 9 sur Ubuntu 19.10 Eoan Ermine Hello World