Passerelle

De ClissXXI.

Sommaire

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

dhcp-boot=pxelinux.0


Ajout d'une option de boot pour un systeme complet sur NFS

Exemple donné avec SystemRescue, distribution linux permettant de diagnostiquer/reparer ou simplement preparer une machine avant installation

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

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...)

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.

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).


Configurer fireHOL avec des ports fixes

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

enlever la ligne "server nfs accept" et ajouter les lignes

server sunrpc accept
server nfscallback accept
server nfsstatdbc accept
server nfsstatd accept
server nfsmountd accept
server nfslockd accept
server nfsnfs accept
Outils personnels