Table des matières
0 billet(s) pour février 2026
Limiter le nombre de console TTY SystemD
Sous Debian Jessie
systemctl mask getty@tty1.service
/etc/systemd/logind.conf
[Login] NAutoVTs=0
Ne pas oublier de restreindre : /etc/securetty
Libvirt iptables réseau changement d'interface Wifi à la place de eth0
Note : iptables est remplacé maintenant par nftables
Problématique
J'ai emporté un peu de boulot en vacances, j'ai l'habitude pour mes tests d'utiliser libvirt.
Tiens plus d'accès à internet depuis mes VM
Eurêka ! C'est parce que je suis en Wifi, alors que d'habitude je suis en filaire
A faire : Écrire un script du style : iptables-sed 's/eth0/wlan0/'
1ere approche
A vérifier
Table filter (table par défaut)
iptables -S > iptables-filter.txt cat iptables-filter.txt |grep eth0 |sed -e 's/^-A/-D/' > iptables-filter.sh cat iptables-filter.txt |grep eth0 |sed -e 's/^-A/-I/' -e 's/eth0/wlan0/g' >> iptables-filter.sh sed -i -e 's/^/iptables /' iptables-filter.sh
Table NAT
iptables -S -t nat > iptables-nat.txt cat iptables-nat.txt |grep eth0 |sed -e 's/^-A/-D/' > iptables-nat.sh cat iptables-nat.txt |grep eth0 |sed -e 's/^-A/-I/' -e 's/eth0/wlan0/g' >> iptables-nat.sh sed -i -e 's/^/iptables -t nat /' iptables-nat.sh
c'est partie
bash iptables-filter.sh bash iptables-nat.sh
2eme aproche
On remet à zero les compteurs de paquets
iptables -Z
On regarde
iptables -L -n -v
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- virbr1 virbr1 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr1 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr1 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
39 2460 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- wlan0 virbr0 0.0.0.0/0 192.168.100.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 wlan0 192.168.100.0/24 0.0.0.0/0
Ya pas de doute, c'est :
39 2460 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
On cherche la règle concernée
iptables -S |grep REJECT |grep virbr0
On trouve 2 règles REJECT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachabl
On les virent (on remplace -A par -D)
iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
Libvirt firewalld firewall-cmd iptables
Voir Firewalld Lockdown
Voir :
Voir aussi :
A la place de la ligne iptables commentée ci-dessus, j'essaye firewall-cmd
#iptables -t nat -I PREROUTING -p tcp -d 172.18.98.74 --dport 64001 -j DNAT --to-destination 192.168.122.95:22 firewall-cmd --zone=public --add-masquerade firewall-cmd --add-forward-port=port=64001:proto=tcp:toport=22:toaddr=192.168.122.95
Mais ça n'est pas suffisant.
Note : iptables est remplacé maintenant par nftables
Pour que ca marche, j'ai je choix entre :
iptables -I FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
ou
iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
ou mieux
#firewall-cmd --direct --passthrough ipv4 -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable firewall-cmd --direct --passthrough ipv4 -I FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
LibreSSL
Voir aussi :
- mbedtls
git clone https://github.com/libressl-portable/portable mv portable libressl cd libressl
Les dépendances suivantes sont nécessaires :
- automake
- autoconf
- bash
- git
- libtool
- perl
- pod2man
./autogen.sh ./configure make -j $(nproc) make check sudo make install
Message d'erreur
openssl: error while loading shared libraries: libssl.so.32: cannot open shared object file: No such file or directory
Solution
export LD_LIBRARY_PATH=/usr/local/lib
dnsutils # dig libtool # compil perl
sudo apt-get build-dep openssl sudo apt-get install automake autoconf libtool perl pod2pdf git clone https://github.com/libressl-portable/portable mv portable libressl cd libressl # Comme indiqué dans le fichier README : ./autogen.sh ./configure make check sudo make install export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
/etc/profile.d/var_export_lib.sh
export LD_LIBRARY_PATH=/usr/local/lib
sudo chmod +x /etc/profile.d/var_export_lib.sh
Lecteur réseau toujours monté grâce à SystemD et à un watchdog
Voir aussi
Tentative de création de montage CIFS avec chien de garde
/etc/systemd/system/mnt-plop.mount
[Unit] Description=Partage # PartOf=mnt-plop-watchdog.service # Requires=mnt-plop-watchdog.service # Requires demonte systematiquement le partage avant de le remonter à chaque frequence du watchdog. # Pour eviter ce pb nous utilisons Wants Wants=mnt-plop-watchdog.service [Mount] What=//127.0.0.1/shared Type=cifs Options=noexec,nosuid,nodev,rw,port=445,uid=66,gid=660,file_mode=0644,dir_mode=0755,noperm,credentials=/root/.cifs_plop Where=/mnt/plop # TimeoutSec semble ne pas avoir d effet # time ls -l /mnt/plop/ # ls: cannot access '/mnt/plop/': Host is down # real 0m10.183s TimeoutSec=10 ForceUnmount=yes DirectoryMode=755 [Install] WantedBy=remote-fs.target
/etc/systemd/system/mnt-plop-watchdog.service
[Unit] Description=Watch dog CIFS ConditionPathExists=/mnt/plop After=network.target # Wants=mnt-plop.mount # PartOf=mnt-plop.mount BindsTo=mnt-plop.mount # StartLimitIntervalSec=5s [Service] Type=simple Restart=always RestartSec=10 # Sleep est utilise car le mount depend du watchdog et le wathdog ne peut pas retourner OK si le montage n est pas actif # Pour contourner ce pb nous ajoutons un delai ExecStartPre=/usr/bin/sleep 5 ExecStart=mountpoint -q /mnt/plop [Install] WantedBy=remote-fs.target
chmod 644 /etc/systemd/system/mnt-plop.mount /etc/systemd/system/mnt-plop-watchdog.service
systemctl daemon-reload systemctl stop mnt-plop.mount mnt-plop-watchdog.service systemctl start mnt-plop.mount systemctl status mnt-plop.mount systemctl enable mnt-plop.mount systemctl status mnt-plop-watchdog.service journalctl -u mnt-plop.mount -u mnt-plop-watchdog.service -f
Le démarrage de l'Unit mnt-plop.mount démarrera automatiquement le chien de garde. L'arrêt de l'Unit mnt-plop.mount l'arrêtera automatiquement.
Cette solution fonctionne super bien, mais il y a bien plus simple
Solution (simple)
- Créer un Unit mount et un automount
- Dans automount
TimeoutIdleSec=0 - Activer et démarrer l'Unit mount et l'Unit automount
Exemple
/etc/systemd/system/mnt-plop.mount
[Unit] Description=Partage [Mount] What=//127.0.0.1/shared Type=cifs Options=noexec,nosuid,nodev,rw,port=445,uid=66,gid=660,file_mode=0644,dir_mode=0755,noperm,credentials=/root/.cifs_plop Where=/mnt/plop TimeoutSec=10 ForceUnmount=yes DirectoryMode=755 [Install] WantedBy=remote-fs.target
/etc/systemd/system/mnt-partage.automount
[Unit] Description=Automount Partage [Automount] Where=/mnt/plop TimeoutIdleSec=0 [Install] WantedBy=multi-user.target
chmod 644 /etc/systemd/system/mnt-plop.mount /etc/systemd/system/mnt-plop.automount systemctl daemon-reload systemctl enable --now mnt-plop.mount mnt-plop.automount
