Passerelle
Configuration de base
Le reseau pris pour exemple est en 10.21.0.0/24, la passerelle a l'IP 10.21.0.254 du cote "lan" et est client DHCP du cote "WAN"
Option IPv6
- desactiver IPv6 (il est sans doute préférable de ne pas supporter IPv6 plutôt que de le faire mais d'avoir une passoire).
echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/local-no-ipv6.conf sysctl --system
Option routage
- activer le forward
echo net.ipv4.ip_forward=1 > /etc/sysctl.d/local-forward.conf sysctl --system
NAT
iptables / NAT
- faire un simple masquerading d'IP
iptables -t nat -A POSTROUTING -o <outbound_interface> -j MASQUERADE
Configuration FireHOL
FireHOL permet de facilement mettre en place un firewall efficace. Dans le cas de machine GNU/Linux qui ont souvent une configuration par défaut robuste le problème se pose peu. Par contre s'il faut proteger des machines non linux ou faire de la protection de reseau (les invités sur le réseau wifi ne doivent pas voir le réseau interne ou on permet des connexions d'internet vers l'application mais on protège contre les syn-floods).
- apres un apt-get install firehol, faire un
firehol helpme > /etc/firehol/test-conf
- editer le fichier /etc/firehol/test-conf, il devrait ressembler a ca:
interface eth0 dhcp policy return server dhcp accept interface eth0 lan src "10.21.0.0/24" dst 10.21.0.254 policy reject # Here are the services listening on eth0. server dhcp accept server dns accept server ICMP accept server ssh accept client all accept interface eth1 wan policy reject server ICMP accept server ssh accept client all accept router lan2wan inface eth0 outface eth1 src "10.21.0.0/24" masquerade server all accept
serveur DHCP
- on ajoute un DHCP/DNS avec dnsmasq, ex de fichier de conf (/etc/dnsmasq.d/passerelle.conf):
user=dnsmasq group=nogroup interface=eth0 # On évite de faire sortir les requêtes de domaines locaux domain-needed bogus-priv dhcp-authoritative
# Le domaine local qui sera ajouté aux noms DNS des machines assignées par le # DHCP, et fourni en nom de domaine local aux clients DHCP. domain=lan dhcp-option=15,lan dhcp-option=119,lan # Ajouter le domaine aux noms simples définis dans /etc/hosts expand-hosts # Les noms du domaine local ne sont résolus que par /etc/host et le DHCP local=/lan/ # La passerelle du réseau à fournir aux clients DHCP dhcp-option=option:router,10.21.0.254 ## Entree IP fixee par DHCP: read-ethers ## plage dynamique: 101 - 150 # La plage d'adresses dynamiques fournies par le serveur DHCP dhcp-range=eth0,10.21.0.1,10.21.0.200,255.255.255.0,12h
Ajout d'une option de boot PXE netboot
- on installe un serveur tftp (tftpd-hpa par exemple)
- on place les "bon" fichiers a la racine (/srv/tftp) - suivre le tuto https://www.debian-administration.org/article/478/Setting_up_a_server_for_PXE_network_booting
- on ajoute la ligne suivante a la configuration dnsmasq:
dhcp-boot=pxelinux.0
Ajout d'une option de boot pour un systeme complet sur NFS
installation NFS
apt-get install nfs-server
Configurer le fichier /etc/exports
/srv/tftp/ 10.21.0.0/24(ro,async,no_root_squash,no_subtree_check)
Verifiez que le nfs est visible sur le reseau, depuis une autre machine, tapez
showmount -e 10.21.0.254
Configuration fireHOL
NFS utilise par défaut des ports dynamiques, ce qui est embetant dès lors qu'il y a un firewall. fireHOL est assez malin pour énumérer les port utilisé par NFS, à condition que celui ci soit lancé avant que fireHOL démarre. Il faut en plus relancer fireHOL à chaque redémarrage de NFS. Le fait de fixer les ports utilisés par NFS permet de garder la même configuration sans avoir besoin de relancer fireHOL.
= Fixer les ports utilisés par NFS
En reprenant l'exemple donné par debian: https://wiki.debian.org/SecuringNFS
- Fichier /etc/modprobe.d/local-nfs-lockd.conf
options lockd nlm_udpport=32768 nlm_tcpport=32768 options nfs callback_tcpport=32764
- Fichier /etc/default/nfs-common, ajouter/modifier la ligne:
STATDOPTS="--port 32765 --outgoing-port 32766"
- Fichier /etc/default/nfs-kernel-server, ajouter/modifier la ligne:
RPCMOUNTDOPTS="--manage-gids --port 32767"
Maintenant les ports nécessaires à une connexion NFS sont les suivants:
- 111 (tcp/udp) sunrcp
- 2049 (tcp/udp) nfs
- 32764 - 32768 (tcp/udp) (mountd, statd, etc...)
Configurer fireHOL
ajouter un fichier contenant ces services dans /etc/firehol/services/fixed-nfs-port.conf (c'est le .conf et la premiere ligne du fichier avec FHVER qui sont important)
#FHVER: 1:213 # NFS callback port server_nfscallback_ports="tcp/32764 udp/32764" client_nfscallback_ports="default"
# RPC statd port (broadcast) server_nfsstatdbc_ports="tcp/32765 udp/32765" client_nfsstatdbc_ports="default"
# RPC statd outgoing port server_nfsstatd_ports="tcp/32766 udp/32766" client_nfsstatd_ports="default"
# RPC mountd server_nfsmountd_ports="tcp/32767 udp/32767" client_nfsmountd_ports="default"
# RPC lockd server_nfslockd_ports="tcp/32768 udp/32768" client_nfslockd_ports="default"
# NFS base server_nfsnfs="tcp/2049 udp/2049" client_nfsnfs="default"
maintenant les services nfscallback, nfsstatdbc, nfsstatd, nfsmountd et nfslockd sont utilisables dans la configuration fireHOL
Configuration de fireHOL /etc/firehol/firehol.conf
dans la rubrique
interface eth0 lan
ajouter les lignes
server sunrpc accept server nfs accept
C'est la ligne "server nfs accept" qui fait toute la magie (enumerer les ports utilisés par NFS à la volée). Si ca ne fonctionne pas, ou qu'on prefere une definition purement statique des ports, on replace la ligne "server nfs accept" par
server nfscallback accept server nfsstatdbc accept server nfsstatd accept server nfsmountd accept server nfslockd accept server nfsnfs accept