logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


une box avec debian

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

L’objectif de ce tutoriel est de combler un vide qui est le suivant :
Les tutoriels pour

  • unbound,
  • isc-dhcp-server,
  • isc-dhcp-client,
  • iptables,
  • hostapd

sont souvent là, mais isolés, pour un débutant c'est difficile de savoir par quoi commencer.

l'idée de ce tuto c'est d'avoir quelque chose de fonctionnel pour démarrer et donc de savoir par quoi commencer.
Les conseils [conseil] sous cette clause sont facultatifs mais peuvent faire gagner du temps.

Installation

  1. isc-dhcp-client et iptable sont en principe installés par défaut.
  2. kernel: :quand vous voulez mai sans cela sa ne marchera pas ;)
  3. iptables :en premier
  4. isc-dhcp-server :en second
  5. unbound :en troisième
  6. hostapd :en quatrième
  7. net-tools :quand vous voulez
  8. ulogd2 :je l'utilise, mais ce n'est pas indispensable
  9. matériel possédant aux moins 2 prises rj45 et du wifi.

kernel

nano /etc/sysctl.conf

net.ipv4.ip_forward=1

mettre a jour avec un sysctl -p

Iptables

Note, ce tutoriel est en cours de rédaction donc ne pas s'en servir pour le moment.

J'ai tenu à ce que ce soit fait avec debian , plutôt que d'autres distributions, les raisons sont multiples, mais en voici quelques-unes. Une distribution que je connais bien et donc les outils. Un deuxième pc qui peut dépanner. Apprendre, et pouvoir contrôler son réseau chez soi. etc etc.

Le schéma est le suivant:

[la box du FAI] ↔ [la box maison] ↔ vos machines on ne s'ocuppe pas de l'ipv6, j'ai malheureusement un FAI qui ne fournit pas ce type de prestation :( la configuration ipv6 n'est pas abordée, je vous recommande de fermer ipv6 si comme moi rien ne peux passer, l'ipv6 est en principe une norme qui devrait être acceptée.

iptables en premier pourquoi ? Parce que c'est aussi la sécurité, ensuite parce que cela peut loguer,

les lignes suivantes sont à adapter, car le nom de l'interface peut changer. la cible MASQUERADE indique de faire du nat, ce qui sera utilisé dans ce tutoriel, il est possible de faire autrement avec un pont/bridge

Requis :

iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
 
iptables -A FORWARD -i enp1s0 -o wlanwifi -j ACCEPT
iptables -A FORWARD -i wlanwifi -o enp1s0 -j ACCEPT

Facultatif :

nom.sh
Limit=30
Burst=10
iptables -t nat -A POSTROUTING  -m limit --limit $Limit/h --limit-burst $Burst -j NFLOG --nflog-group 0 --nflog-prefix  NAT_POSTROUTING
iptables -t nat -A PREROUTING  -m limit --limit $Limit/h --limit-burst $Burst -j NFLOG --nflog-group 0 --nflog-prefix  NAT_PREROUTING
iptables -t nat -A INPUT  -m limit --limit $Limit/h --limit-burst $Burst -j NFLOG --nflog-group 0 --nflog-prefix NAT_INPUT
iptables -t nat -A OUTPUT -m limit --limit $Limit/h --limit-burst $Burst -j NFLOG --nflog-group 0 --nflog-prefix  "NAT_OUTPUT

Note : Il faut savoir que ces règles disparaissent au reboot. Comme il y beaucoup de tutoriels sur iptables. je vais plutôt vous donner les liens sur la documentation (ça chargerait trop le tutoriel). Sur Debian-Facilehttps://debian-facile.org/doc:reseau:iptables-pare-feu-pour-une-passerelle Lien externe plus complet: https://www.inetdoc.net/guides/iptables-tutorial/

isc-dhcp-server

isc-dhcp-server. Important.!

Ne démarre pas si le fichier /etc/network/interfaces n'est pas en relation parfaite, j'explique:

Il faut que l'interface soit opérationnelle/active et donc bien paramétrée , sinon isc-dhcp-server ne démarrera pas . si ce dernier ne démarre pas unbound en fera de même.

Si vous utilisez un client windows pour tester, je vous recommande de le redémarrer, Windows à du mal avec le réseau à se mettre à jour correctement avec une reconnexion >–> reconnexion, de même pour la box, certains paramètres peuvent changer, /etc/resolv.conf est un classique. Parfois c'est certaines interfaces qui ne s'activent pas.

L'ordre de démarrage peut jouer un rôle, je vous conseille de faire votre propre service ou de modifier la configuration de Debian pour que cela démarre comme cité plus haut.

Petite parenthèse pour les débutants et aussi facultative :

Je conseille d'utiliser les alias pour éditer les fichiers cela va grandement vous faciliter la tâche, comme cela se passe sous root. Soiyez vigilants à ne pas faire n'importe quoi sous Debian. Si vous voulez que cela soit pour tous les utilisateurs ça ce passe dans ce fichier :

/etc/bash.bashrc
Editeur="nano"
alias ndhcp=$Editeur' /etc/dhcp/dhcpd.conf'
alias ndhcps=$Editeur' /etc/default/isc-dhcp-server'
alias ndhcp=$Editeur' /etc/dhcp/dhcpd.conf'

Ce fichier est en root mais vous pouvez aussi placer cela au niveau utilisateur. Cela va vous éviter de taper chaque fois le chemin et en plus de devoir savoir où il se trouve: un oubli ? : alias vous le montrera.

isc-dhcp-server choisir les interfaces

Ces fichiers sont sous root Donc penser à faire une sauvegarde avant toute chose ! éditer le fichier /etc/default/isc-dhcp-server

nom.sh
#ipv4
INTERFACESv4="enp2s0 enp3s0 enp4s0 wlx64f06d883452"
#ipv6 si vide pas d'interface donc pas d'ipv6
INTERFACESv6=""

Vous remarquez qu'il manque l'interface enp1s0, car c'est celle qui a un câble relié à la box du FAI , donc en dhcp ou en static, regardez dans la doc de votre box du fournisseur pour y mettre une ip fixe c'est quand même plus pratique.

isc-dhcp-server configuration dhcp

éditer le fichier : /etc/dhcp/dhcpd.conf

authoritative;
 
option domain-name "domroxlan.dom";
 
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
log-facility local7;
option subnet-mask 255.255.255.0;
 
subnet 192.168.2.0 netmask 255.255.255.0 {
        range  192.168.2.20  192.168.2.29;
        option routers 192.168.2.21;
        option broadcast-address 192.168.2.255;
        option domain-name-servers 192.168.2.21;
}
 
subnet 192.168.3.0 netmask 255.255.255.0 {
        range  192.168.3.20  192.168.3.29;
        option routers 192.168.3.21;
        option broadcast-address 192.168.3.255;
        option domain-name-servers 192.168.3.21;
}
 
subnet 192.168.4.0 netmask 255.255.255.0 {
        range  192.168.4.20  192.168.4.29;
        option routers 192.168.4.21;
        option broadcast-address 192.168.4.255;
        option domain-name-servers 192.168.4.21;
}
 
 
subnet 192.168.50.0 netmask 255.255.255.0
{
        range  192.168.50.50  192.168.50.60;
        option routers 192.168.50.51;
        option broadcast-address 192.168.50.255;
        option domain-name-servers 192.168.50.51;
}

Ici soyez précis dans la syntaxe car si vous trompez d'un chiffre cela ne vous donne la moindre info.

IMPORTANT: une fois que tout fonctionne changer ces valeurs pour des raison de sécurité évidentes, Pour les raisons qui m'ont poussé à faire cette documentation c'est le manque de wiki à fournir une ip complète… en gros une configuration qui fonctionne .

Configuration des interfaces

sujet : Le fichier /etc/network/interfaces

Conseil:

J'ai rencontré un bug à un moment donné en changeant la configuration de ce fichier. Je recommande donc d’arrêter le service AVANT de le modifier! Profitez de faire de même, et donc ce qui l'utilise.

Pas la peine de dire que la connection est coupée si vous faites cela :)

source /etc/network/interfaces.d/*
 
auto lo
iface lo inet loopback
#============== wifi =============
allow-hotplug wlx234f0432556912
iface wlx234f0432556912inet static
        address 192.168.50.51
        netmask 255.255.255.0
        network 192.168.50.0
        wireless-power off
#============= rj45 ==============
allow-hotplug enp1s0
iface enp1s0 inet static
        address 192.168.0.11/24
        gateway 192.168.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        #dpkg -l |grep  resolvconf = null
        #dns-nameservers 192.168.0.1
#       dns-search domroxlan.dom
 
allow-hotplug enp2s0
iface enp2s0 inet static
        address 192.168.2.21
        netmask 255.255.255.0
        network 192.168.2.0
 
allow-hotplug enp3s0
iface enp3s0 inet static
        address 192.168.3.21
        netmask 255.255.255.0
        network 192.168.3.0
 
allow-hotplug enp4s0
iface enp4s0 inet static
        address 192.168.4.21
        netmask 255.255.255.0
        network 192.168.4.0

A ce stade les connexions filaires ne marcheront pas car unbound n'est pas présent donc il faut faire la suite si vous voulez que cela marche ainsi utilisez le dns de la box à ce moment là :)

Je remercie Mikl et raleur dans cette démarche qui sans leur aide j'aurais bien plus galéré

Serveur Unbound pour un dns local

Soiyer particulièrement prudent car ce service est sensible aux vulnérabilité.

Note. Je ne suis pas parvenu a trouver une traduction en français des paramètres, les valeurs sont à adapter selon vos besoins. j'ai donc juste indiquer les valeurs que j'utilise.

nano  /etc/unbound/unbound.conf
cat /etc/unbound/unbound.conf
# Unbound configuration file for Debian.
#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
#
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
include: "/etc/unbound/unbound.conf.d/*.conf"
 
#server:
port:                   53                              #port d'écoute
do-ip4:                 yes                             #
do-ip6:                 yes                             #
do-udp:                 yes                             #protocole autorisé
do-tcp:                 yes                             #indique de communiquer sur le protocole TCP
#interface: 0.0.0.0
access-control:         192.168.50.0/24 allow
interface:              192.168.50.51                   #requi wifi
interface:              192.168.4.21                    #requi rj45
interface:              192.168.3.21                    #requi rj45
interface:              192.168.2.21                    #requi rj45
interface:              127.0.0.1                       #?
access-control:         127.0.0.1       allow           #?
access-control:         192.168.0.0/24  allow           #requis rj45
access-control:         192.168.2.0/24  allow           #requis rj45
access-control:         192.168.3.0/24  allow           #requis rj45
access-control:         192.168.4.0/24  allow           #requis rj45
access-control:         192.168.50.0/24 allow           #requis wifi (pas en service)
private-address:        192.168.0.0/24                  #renforce le coter priver et  protège de la technique des "Relais DNS"
unwanted-reply-threshold: 10000000                      #eviter l'empoisonnement DNS
aggressive-nsec: yes
harden-algo-downgrade:  no                              #l algorithme le plus faible est exclut no
hide-identity:          yes                             #
hide-version:           yes
harden-glue:            yes
#ssl-upstream:          yes                             # oblige à communiquer sur le protocole TLS.                    :yes:erreur :debug: tcp error for address 8.8.8.8 port 53
#ssl-port:              853
prefetch:               yes                             # garde en cache les bons résultats
prefetch-key:           yes                             #
cache-min-ttl:          100000                          #durée minimal
cache-max-ttl:          200000                          #durée max
key-cache-size:         50m
infra-cache-numhosts:   1000000                         #nombre de host qui peuve etre mis en cache
do-ip6:                 no                              #desactive les requetes ipv6
tcp-idle-timeout:       15000                           #delai avant de signialer un timout sur la connextion
 
harden-below-nxdomain:  yes
harden-dnssec-stripped: yes                             #DNSSEC pour les zones de confiance
val-clean-additional:   no                              #toutes les données DNS non sécurisées son effacee
do-not-query-localhost: yes                             #permet d'interoger localhost
so-reuseport:           yes                             #linux seulment ameliore les performance udp
#serve-expired: <yes or no>                             # tester
num-threads: 4
key-cache-slabs: 8
infra-cache-slabs: 8
msg-cache-slabs: 8
rrset-cache-slabs: 8
key-cache-size:         100m
key-cache-slabs:        2m
harden-short-bufsize:   yes                             #contre les très petites tailles de mémoire tampon EDNS.
harden-large-queries:   yes                             #contre les requêtes volumineuses
num-queries-per-thread: 100
 
val-log-level:          2                               #log
verbosity:              5                               #plage de 1 a 5 , 5 permet le plus parlant
log-time-ascii:         yes                             #valable sur un autre fichier que syslog
log-queries:            yes                             #affiche une ligne par requete
log-replies:            yes                             #affiche une ligne par requete,(réponse)
log-local-actions:      yes                             #affiche les info de la zone local
log-servfail:           yes                             #afficher pourquoi les requêtes renvoient SERVFAIL Ref doc
 
logfile:                /var/log/unbound.log            #chemin d'accès
 
#private-domain:                "domroxlan.dom"                 #domaine local
 
forward-zone:
        name: "."
#forward-addr: 192.168.0.1@53
forward-addr: 1.1.1.1@53
forward-addr: 1.0.0.1@53
forward-addr: 65.2.17.60@53
forward-addr: 65.2.17.61@53
forward-addr: 66.2.24.158@53
forward-addr: 67.2.24.162@53
forward-addr: 8.8.8.8@53

Bug connu : Si dans fichier /var/log/syslog vous avez ceci

Jan 16 14:10:11 box kernel: [ 1352.364742] audit: type=1400 audit(1579180211.005:13): apparmor="DENIED" operation="open" profile="/usr/sbin/unbound" name="/var/log/unbound/unbound.log" pid=1000 comm="unbound" requested_mask="ac" denied_mask="ac" fsuid=106 ouid=0
Jan 16 14:10:11 box unbound[1000]: Jan 16 14:10:11 unbound[1000:0] debug: switching log to /var/log/unbound/unbound.log
Jan 16 14:10:11 box unbound[1000]: Jan 16 14:10:11 unbound[1000:0] error: Could not open logfile /var/log/unbound/unbound.log: Permission denied

unbound ne peux pas ecrire dans le log que vou lui avez fourni,ceci est lier à apparmor il y a peut de documentation en français:

la solution est celle-ci

Mettre ceci
/{,var/}run/systemd/notify w, 
Dans le fichier
/etc/apparmor.d/usr.sbin.unbound

Ensuite ceci ne devrai rien renvoiyer (donc tout va bien)

apparmor_parser -r /etc/apparmor.d/usr.sbin.unbound

Verifier les droit sur le fichier aux besoin pour tester 0777 mai en principe un 0770 devrai suffire. Relancer le service unbound et regarder si le log est pris en compte

il peux être nécessaire de changer le fichier

/etc/resolv.conf

de façons a ce qu'il contienne :

nameserver 127.0.0.1

Rappelle: Ce fichier a la fâcheuse tendance a ce modifier. Vous pouvez donc le verrouiller avec la commande chattr, Attention c'est pas anodin car le système ne peux plus mettre a jour le fichier. Par exemple, si vous supprimer le paquet unbound l'ip ne pourra plus ce mettre à jours. (c'est un exemple parmi les nombreuse autres mauvaise surprise qui en découle.)

Attention l'utilisation peux empêcher le système d'écrire du coup le répertoire /etc est utiliser a la place. vous aurez alors quelque chose de semblable

ls /etc |grep resolv.conf.dhclient
-rw-r--r-- 1 root root      47 mai 25 03:31 resolv.conf.dhclient-new.12784
-rw-r--r-- 1 root root      47 mai 25 12:06 resolv.conf.dhclient-new.13099
-rw-r--r-- 1 root root      47 mai 25 20:57 resolv.conf.dhclient-new.13271

il est peut etre possible de passer par le fichier /etc/dhcp/dhclient.conf en modifiant ou en l'ajoutant avec

supersede domain-name-servers 127.0.0.1;

En redémarrant (le service ou la machine) cela devrai aux moins vous garder la ligne concernée, mai comme ça boxe a fond dans ce fichier il est possible qu'autre chose vienne le modifier après… bref c'est bien relou pour pas grand chose et impossible d'être certain de ne pas avoir une modification suite a une installation d'un autre logiciel etc etc.

je n’apprécie pas ce type de comportement de la part des développeur, pour la simple et bonne raison est que si un fichier est modifier par l'utilisateur on a plus le droit de le modifier sans son accords, particulièrement quand il s'agis de la configuration du système. car en cas de problème qui est responsable, la dernière valeur ou l'utilisateur,surtout que ça peux en plus venir, aux moment du renouvellement du bail de la box du FAI !

Pour tester utiliser la commande: dig

Si vous êtes sur un O.S propriétaire il peux s'avérer utile d'y effacer le cache dns sur un client windows on utilisera:

ipconfig /flushdns 

A partir la cela devrai suffire pour une connexion filaire et être fonctionnel,

Le point d'accès wifi

l'installation est assez simple.

<code root> aptitude install hostapd <\code>

fichier de configuration: /etc/hostapd/hostapd.conf

<code root> interface=wlx

#interface=wlan0 driver=nl80211 # Nom du spot Wi-Fi ssid=Rox country_code=Ch #hw_mode=g channel=7 macaddr_acl=0 #wifi fermer = 1 ouver 0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=15carracteconseillier:D wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP wpa_group_rekey=86400 ieee80211n=1 # Beacon interval in kus (1.024 ms) beacon_int=100 # mode Wi-Fi (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g) hw_mode=g wme_enabled=1 # DTIM (delivery trafic information message) dtim_period=2 # Maximum number of stations allowed in station table max_num_sta=10 # Fragmentation threshold; 2346 = disabled (default) fragm_threshold=2346 <\code>

j'ai pas trouver de documentation en français mai, il faut chercher a savoir 2 chose Si la carte/clé wifi est bien reconnu par le kernel.

Le nom qui est retenu ou plutôt attribuer a cette carte ici : wlx

Note avec iptables je vous conseil de filtrer les adresse mac, c' est pas infaillible mai sa va laisser des trace dans les log et prime de complique de compliquer la la tache du pirate. Dans le cas ou la clef serai craquée.

Pour ceux qui rencontre des difficulté. il peux s’avérer nécessaire d'avoir un kernel rescent et les driver qui vont avec votre système particulièrement si vous êtes en debian/stable.

Si quelqu'un veux me proposer une configuration ipv6 cela serai sympa car je ne peux malheureusement pas faire cela a cause de cette m… de box du fai:(

vous devriez a ce stade avoir une machine qui ser donc “pc/box” transportable n'importe ou, avec votre distribution ,un serveur dns,un point d'accès wifi.

Je remercie à tout ceux qui m'on apporter l'aide grâce aux forum.:-O

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
atelier/chantier/une-box-maison.1579188295.txt.gz · Dernière modification: 16/01/2020 16:24 par LaFouine

Pied de page des forums

Propulsé par FluxBB