Outils pour utilisateurs

Outils du site


blog

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

2025/03/24 15:06

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
2025/03/24 15:06

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
2025/03/24 15:06

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
2025/03/24 15:06

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)

  1. Créer un Unit mount et un automount
  2. Dans automount TimeoutIdleSec=0
  3. 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
2025/03/24 15:06
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki