Etape 3 – Le firewall IPv6 : Shorewall6

Etape 3 – Le firewall IPv6 : Shorewall6

Vous êtes ici :
Article 5/11 de la série suivante :

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
Suite à un bug dans la version actuelle il faut également taper 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)

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.