Etape 3 – Le firewall IPv6 : Shorewall6
- Introduction
- Etape 1 (V1) – Installation – Boot EFI & ZFS on Debian Bullseye avec Proxmox (sans cryptage / serveur local)
- Prochainement: Etape 1 (V2) – Installation – Disque crypté LUKS RAID & Debian Bullseye avec Proxmox
- Etape 1 (V1) – Installation – ZFS Native Encryption & Debian Bullseye avec Proxmox
- Etape 2 – Le firewall IPv4 : Shorewall
- Etape 3 – Le firewall IPv6 : Shorewall6
- Etape 4 – Le serveur DHCP : isc-dhcp-server
- Etape 5 – Le serveur DNS : Bind9
- Etape 6 – La base de données : MariaDB
- Etape 7 – Le serveur WEB : Nginx & SSL (Let’s Encrypt)
- Etape 8 – Le partage de fichier : SAMBA (Compatible Time Machine Monterey)
- Etape 9 – Le serveur de MAIL : Postfix / Dovecot / Rspamd
1. Configuration du système
1.1 Configuration de l’IPv6 (chez Online.net)
Voici comment mettre en place une adresse IP chez Online.net. Bien sûr à vous de configuration en fonction de votre provider).
Après avoir suivi la documentation du site, ça ne fonctionnait pas (ce n’est pas de leur faute dibbler est buggué, ifupdown également bref pas évident à mettre en place dans ces conditions)
1.1.1 – Fichier /etc/dhcp/dhclient6.conf
interface "eno1" {
send dhcp6.client-id DUID;
}
Il faut adapter l’interface avec votre propre configuration et mettre le DUID qui est dans l’interface du site online.net.
Je vous conseille de créer un bloc /64 par machine et d’utiliser une seule IP de ce bloc (sauf si vous voulez utiliser plusieurs IP sur LA MEME MACHINE. Ce qui fera un DUID par machine (VM ou autre). De plus ça facilitera le routage entre les machines.
1.1.2 – Fichier /etc/network/interfaces
Tout d’abord on vérifie que ça marche :
dhclient -cf /etc/dhcp/dhclient6.conf -6 -P -v eno1
Puis on édite le fichier /etc/network/interfaces
:
# Interface eno1 en IPv4 (pour l'exemple)
auto eno1
iface eno1 inet dhcp
# Interface eno1 en IPv6
iface eno1 inet6 static
address xxxx:aaaa:bbbb:cccc::1/64
privext 0
accept_ra 1
autoconf 0
dad-attempts 0
pre-up sleep 10
pre-up echo 0 > /proc/sys/net/ipv6/conf/eno1/accept_dad
pre-up dhclient -cf /etc/dhcp/dhclient6.conf -pf /run/dhclient6.eno1.pid -6 -P eno1
pre-down dhclient -x -pf /run/dhclient6.eno1.pid
Le mieux est de rebooter par la suite.
1.2 Installation
apt update
apt upgrade
apt install --yes shorewall6
systemctl enable shorewall6
pour s’assurer que shorewall se lance bien au démarrage de la machine. 2 Fichiers de configuration
2.1 Fichier /etc/logrotate.d/shorewall6
/var/log/shorewall6-init.log {
weekly
rotate 4
compress
missingok
create 0640 root adm
}
/var/log/shorewall6.log {
weekly
rotate 4
compress
missingok
create 0640 root adm
}
touch /var/log/shorewall6.log
chown root:adm /var/log/shorewall6.log
chmod 0640 /var/log/shorewall6.log
2.2 Fichier /etc/rsyslog.d/40-shorewall6.conf
# Log Shorewall6 messages to /var/log/shorewall6.log.
:msg, contains, "Shorwall6:" /var/log/shorewall6.log
& stop
systemctl restart rsyslog.service
2.3 Fichier /etc/default/shorewall6
# prevent startup with default configuration
# set the following varible to 1 in order to allow Shorewall6 to start
startup=1
# if your Shorewall6 configuration requires detection of the ip address of a
# ppp interface, you must list such interfaces in "wait_interface" to get
# Shorewall6 to wait until the interface is configured. Otherwise the script
# will fail because it won't be able to detect the IP address.
#
# Example:
# wait_interface="ppp0"
# or
# wait_interface="ppp0 ppp1"
# or, if you have defined in /etc/shorewall6/params
# wait_interface=
#
# Startup options
#
OPTIONS=""
#
# Start options
#
STARTOPTIONS=""
#
# Restart options
#
RESTARTOPTIONS=""
#
# Init Log -- if /dev/null, use the STARTUP_LOG defined in shorewall.conf
#
INITLOG=/dev/null
#
# Set this to 1 to cause '/etc/init.d/shorewall6 stop' to place the firewall in
# a safe state rather than to open it
#
SAFESTOP=1
# EOF
2.4 Fichier /etc/shorewall6/shorewall6.conf
###############################################################################
#
# Shorewall Version 5 -- /etc/shorewall6/shorewall6.conf
#
# For information about the settings in this file, type "man shorewall6.conf"
#
# Manpage also online at
# http://www.shorewall.net/manpages6/shorewall6.conf.html
###############################################################################
# S T A R T U P E N A B L E D
###############################################################################
STARTUP_ENABLED=Yes
###############################################################################
# V E R B O S I T Y
###############################################################################
VERBOSITY=1
###############################################################################
# P A G E R
###############################################################################
PAGER=
###############################################################################
# F I R E W A L L
###############################################################################
FIREWALL=
###############################################################################
# L O G G I N G
###############################################################################
BLACKLIST_LOG_LEVEL=
INVALID_LOG_LEVEL=
LOG_BACKEND=
LOG_VERBOSITY=2
LOGALLNEW=
LOGFILE=/var/log/shorewall6.log
LOGFORMAT="Shorwall6:%s:%s:"
LOGLIMIT=
LOGTAGONLY=No
MACLIST_LOG_LEVEL=info
RELATED_LOG_LEVEL=
RPFILTER_LOG_LEVEL=info
SFILTER_LOG_LEVEL=info
SMURF_LOG_LEVEL=info
STARTUP_LOG=/var/log/shorewall6-init.log
TCP_FLAGS_LOG_LEVEL=info
UNTRACKED_LOG_LEVEL=
###############################################################################
# L O C A T I O N O F F I L E S A N D D I R E C T O R I E S
###############################################################################
CONFIG_PATH="${CONFDIR}/shorewall6:/usr/share/shorewall6:${SHAREDIR}/shorewall"
GEOIPDIR=/usr/share/xt_geoip/LE
IP6TABLES=
IP=
IPSET=
LOCKFILE=
MODULESDIR=
NFACCT=
PERL=/usr/bin/perl
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin"
RESTOREFILE=restore
SHOREWALL_SHELL=/bin/sh
SUBSYSLOCK=""
TC=
###############################################################################
# D E F A U L T A C T I O N S / M A C R O S
###############################################################################
ACCEPT_DEFAULT=none
DROP_DEFAULT=Drop
NFQUEUE_DEFAULT=none
QUEUE_DEFAULT=none
REJECT_DEFAULT=Reject
###############################################################################
# R S H / R C P C O M M A N D S
###############################################################################
RCP_COMMAND='scp ${files} ${root}@${system}:${destination}'
RSH_COMMAND='ssh ${root}@${system} ${command}'
###############################################################################
# F I R E W A L L O P T I O N S
###############################################################################
ACCOUNTING=Yes
ACCOUNTING_TABLE=filter
ADMINISABSENTMINDED=Yes
AUTOCOMMENT=Yes
AUTOHELPERS=Yes
AUTOMAKE=No
BASIC_FILTERS=No
BLACKLIST="NEW,INVALID,UNTRACKED"
CHAIN_SCRIPTS=Yes
CLAMPMSS=No
CLEAR_TC=No
COMPLETE=No
DEFER_DNS_RESOLUTION=Yes
DELETE_THEN_ADD=Yes
DONT_LOAD=
DYNAMIC_BLACKLIST=Yes
EXPAND_POLICIES=Yes
EXPORTMODULES=Yes
FASTACCEPT=No
FORWARD_CLEAR_MARK=Yes
HELPERS=
IGNOREUNKNOWNVARIABLES=No
IMPLICIT_CONTINUE=No
INLINE_MATCHES=No
IPSET_WARNINGS=Yes
IP_FORWARDING=keep
KEEP_RT_TABLES=Yes
LOAD_HELPERS_ONLY=Yes
MACLIST_TABLE=filter
MACLIST_TTL=
MANGLE_ENABLED=Yes
MARK_IN_FORWARD_CHAIN=No
MODULE_SUFFIX=ko
MUTEX_TIMEOUT=60
OPTIMIZE=1
OPTIMIZE_ACCOUNTING=No
REJECT_ACTION=
REQUIRE_INTERFACE=No
RESTART=restart
RESTORE_ROUTEMARKS=Yes
SAVE_IPSETS=No
TC_ENABLED=No
TC_EXPERT=No
TC_PRIOMAP="2 3 3 3 2 3 1 1 2 2 2 2 2 2 2 2"
TRACK_PROVIDERS=No
TRACK_RULES=No
USE_DEFAULT_RT=Yes
USE_PHYSICAL_NAMES=No
USE_RT_NAMES=No
VERBOSE_MESSAGES=Yes
WARNOLDCAPVERSION=Yes
WORKAROUNDS=No
ZERO_MARKS=No
ZONE2ZONE=-
###############################################################################
# P A C K E T D I S P O S I T I O N
###############################################################################
BLACKLIST_DISPOSITION=DROP
INVALID_DISPOSITION=CONTINUE
MACLIST_DISPOSITION=REJECT
RELATED_DISPOSITION=ACCEPT
SFILTER_DISPOSITION=DROP
RPFILTER_DISPOSITION=DROP
SMURF_DISPOSITION=DROP
TCP_FLAGS_DISPOSITION=DROP
UNTRACKED_DISPOSITION=CONTINUE
################################################################################
# P A C K E T M A R K L A Y O U T
################################################################################
TC_BITS=
PROVIDER_BITS=
PROVIDER_OFFSET=
MASK_BITS=
ZONE_BITS=0
#LAST LINE -- DO NOT REMOVE
2.5 Fichier /etc/shorewall6/interfaces
###############################################################################
?FORMAT 2
###############################################################################
#ZONE INTERFACE OPTIONS
net6 eno1 dhcp,tcpflags,nosmurfs,sourceroute=0
w
2.5 Fichier /etc/shorewall6/zones
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net6 ipv6
2.6 Fichier /etc/shorewall6/policy
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
net6 all DROP info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
2.7 – Fichier /etc/shorewall6/rules
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT PORT(S) DEST LIMIT GROUP
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
# DNS
ACCEPT $FW net6 tcp,udp 53
ACCEPT net6 $FW tcp,udp 53
# Accepter les connections SSH depuis partout
ACCEPT all $FW tcp 22
3. Configuration additionnelle
3.1 – Fichier blrules
(facultatif)
###############################################################################
?FORMAT 2
###############################################################################
#ZONE INTERFACE OPTIONS
net6 eno1 dhcp,tcpflags,nosmurfs,sourceroute=0
w
/etc/shorewall6/zones
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net6 ipv6
2.6 Fichier /etc/shorewall6/policy
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
net6 all DROP info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
2.7 – Fichier /etc/shorewall6/rules
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT PORT(S) DEST LIMIT GROUP
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
# DNS
ACCEPT $FW net6 tcp,udp 53
ACCEPT net6 $FW tcp,udp 53
# Accepter les connections SSH depuis partout
ACCEPT all $FW tcp 22
3. Configuration additionnelle
3.1 – Fichier blrules
(facultatif)
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
net6 all DROP info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
/etc/shorewall6/rules
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT PORT(S) DEST LIMIT GROUP
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
# DNS
ACCEPT $FW net6 tcp,udp 53
ACCEPT net6 $FW tcp,udp 53
# Accepter les connections SSH depuis partout
ACCEPT all $FW tcp 22
blrules
(facultatif)Si vous le souhaitez vous pouvez filtrer selon l’adresse MAC les machines autorisées à se connecter à l’interface.
Il suffit de créer le fichier /etc/shorewall6/blrules
:
#
# Shorewall -- /etc/shorewall/blrules
#
# For information about entries in this file, type "man shorewall-blrules"
#
# Please see http://shorewall.net/blacklisting_support.htm for additional
# information.
#
##############################################################################################################################################################
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER MARK CONNLIMIT TIME HEADERS SWITCH HELPER
BLACKLIST net6:AAAA::BBBB all