Shorewall pour les paresseux !

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 347
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Shorewall pour les paresseux !

Message par le Manchot Masqué » sam. 24 mars 2018, 17:51

Et si on transformait notre ordinateur en passerelle internet de base, à placer juste après la box internet, histoire de protéger les utilisateur de notre réseau local des affreux jojos du net, dont nos chers FAI qui se permettent tous de scanner notre réseau local sans notre permission ?

Dans un premier temps, on installera le paquet isc-dhcp-server qui va fournir le service DHCP (attribution des adresses IP aux clients),
en rajoutant simplement les lignes suivantes dans le fichier /etc/dhcp/dhcpd.conf :

Code : Tout sélectionner

subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.2 192.168.100.8;
        option domain-name "lug68.lan";
        option domain-name-servers 192.168.100.1;
        option routers 192.168.100.1;
        option broadcast-address 192.168.100.255;
}
On installera ensuite le paquet shorewall, qui va s'occuper de filtrer le trafic IP, avec une configuration basique mais
suffisante à la plupart des usagers.

Comme pour toute passerelle, il faudra fournir l'interface réseau WAN (vers l'extérieur/internet) et l'interface LAN (réseau interne) manuellement.

Mais comme nous sommes de gros "feignasses" au LUG68, nous avons ici écrit un petit script BASH, qui s'occupe de trouver les interfaces réseaux présentes sur votre machine, et de vous les afficher sous la forme d'une liste avec un numéro distinct en début de ligne.

Ainsi vous n'aurez plus qu'à rentrer les deux numéros correspondants respectivement aux interfaces WAN et LAN de votre réseau pour créer votre passerelle !

Contenu du script shorewall.sh, à exécuter avec les droits root :

Code : Tout sélectionner

#!/bin/bash

HAS_SHOREWALL=$(dpkg -l|grep " shorewall "|cut -d " " -f1)
HAS_DHCPD=$(dpkg -l|grep " isc-dhcp-server "|cut -d " " -f1)

if [ ! "$HAS_SHOREWALL" == "ii" ]; then
	apt-get install shorewall
fi
if [ ! "$HAS_DHCPD" == "ii" ]; then
	apt-get install isc-dhcp-server
fi

service shorewall stop
service isc-dhcp-server stop

echo -e "\nInterfaces disponibles :"
i=1
INTERFACES=$(ifconfig|cut -d' ' -f1|sed '/^$/d')
for interface in $INTERFACES; do
	echo -e "$i / $interface";
	i=$((i+1))
done

ARR=($INTERFACES)

echo -e ""
read -r -n 1 -p "Numéro interface WAN ? " NUMWAN
echo -e ""
read -r -n 1 -p "Numéro interface LAN ? " NUMLAN
echo -e "\n"

NUMWAN=$((NUMWAN-1))
NUMLAN=$((NUMLAN-1))

#echo -e "\nNUMWAN=$NUMWAN"
#echo -e "\nNUMLAN=$NUMLAN"

WAN=${ARR[$NUMWAN]};
LAN=${ARR[$NUMLAN]};

# pour le serveur local DHCPD
ifconfig $LAN 192.168.100.1/24

echo -e "WAN=$WAN"
echo -e "LAN=$LAN"

echo "
?FORMAT 2
net     $WAN            dhcp,tcpflags,nosmurfs,logmartians,sourceroute=0,routeback
loc     $LAN            nosmurfs,logmartians,sourceroute=0
" > /etc/shorewall/interfaces

echo "
fw	firewall
net	ipv4
loc	ipv4
" > /etc/shorewall/zones

echo "
$WAN $LAN
" > /etc/shorewall/masq

echo "
\$FW        all         ACCEPT
loc        \$FW         ACCEPT
loc        net         ACCEPT
net        all         DROP	info

# THE FOLLOWING POLICY MUST BE LAST
all        all         REJECT      info
" > /etc/shorewall/policy

ifconfig $LAN 192.168.100.1/24

service shorewall restart
service isc-dhcp-server restart

echo -e ""
sysctl -w net.ipv4.ip_forward=1
:1

Répondre