Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
tech:hypervisor-01 [04/03/2021 13:26] – LibertAdmin | tech:hypervisor-01 [20/12/2021 16:03] – [Paquets installés] LibertAdmin | ||
---|---|---|---|
Ligne 85: | Ligne 85: | ||
address 192.168.10.1 | address 192.168.10.1 | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Routage et filtrage avec iptables ==== | ||
+ | |||
+ | Nous avons dû ensuite router et rediriger tout ça avec iptables afin de communiquer depuis l' | ||
+ | |||
+ | L' | ||
+ | Le paquet '' | ||
+ | Le port SSH a été masqué. | ||
+ | |||
+ | Il est bien sûr extrêmement important de sécuriser SSH : interdire le login root avec mot de passe, utiliser de bons algorithmes de chiffrement, | ||
+ | |||
+ | Les règles concernant le réseau d' | ||
+ | |||
+ | <code bash> | ||
+ | root@hypervisor-01 ~ # cat / | ||
+ | # Router le Web vers le proxy Nginx : | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | # Router le mail envoi/ | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | # Router le 9000 vers le serveur peertube : | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | # Router le 4443 et les 10000-20000 | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | -A PREROUTING -d 159.69.59.13/ | ||
+ | # Ne pas appliquer le masquerading sur le broadcast/ | ||
+ | -A POSTROUTING -s 192.168.10.0/ | ||
+ | -A POSTROUTING -s 192.168.10.0/ | ||
+ | # Masquerading sur tous les ports dans le sens sortant (VM -> Internet) | ||
+ | -A POSTROUTING -s 192.168.10.0/ | ||
+ | -A POSTROUTING -s 192.168.10.0/ | ||
+ | -A POSTROUTING -s 192.168.10.0/ | ||
+ | |||
+ | # Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : | ||
+ | -A INPUT -m conntrack --ctstate RELATED, | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT | ||
+ | # Accepter le SSH : | ||
+ | -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport XXXX -j ACCEPT | ||
+ | # Accepter Spice et VNC (console virtuelle de virt-manager) : | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT | ||
+ | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT | ||
+ | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT | ||
+ | # Accepter les requêtes DNS (port 53) depuis les VM : | ||
+ | -A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -j ACCEPT | ||
+ | -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -j ACCEPT | ||
+ | # Bloquer les requêtes rpcbind/ | ||
+ | -A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | ||
+ | -A INPUT -i br2 -p tcp -m multiport --dport 111 -j ACCEPT | ||
+ | -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT | ||
+ | -A INPUT -p udp --dport 111 -j DROP | ||
+ | -A INPUT -p tcp --dport 111 -j DROP | ||
+ | |||
+ | # On refuse tout le reste : | ||
+ | -A INPUT -m conntrack --ctstate INVALID -j DROP | ||
+ | -A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset | ||
+ | -A INPUT -j REJECT --reject-with icmp-port-unreachable | ||
+ | |||
+ | # Accepter les connexions établies sur le LAN : | ||
+ | -A FORWARD -d 192.168.10.0/ | ||
+ | # Accepter le trafic sortant depuis le LAN : | ||
+ | -A FORWARD -s 192.168.10.0/ | ||
+ | # Accepter le trafic interne entre les VM : | ||
+ | -A FORWARD -i br2 -o br2 -j ACCEPT | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour le Web vers le proxy : | ||
+ | -A FORWARD -d 192.168.10.2/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : | ||
+ | -A FORWARD -d 192.168.10.7/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour peertube service 9000 vers le serveur video : | ||
+ | -A FORWARD -d 192.168.10.8/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour funkwhale service 5000 vers le serveur video : | ||
+ | -A FORWARD -d 192.168.10.9/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 10000-20000 vers le serveur visio : | ||
+ | -A FORWARD -d 192.168.10.10/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service udp 10000-20000 vers le serveur visio : | ||
+ | -A FORWARD -d 192.168.10.10/ | ||
+ | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 4443 vers le serveur visio : | ||
+ | -A FORWARD -d 192.168.10.10/ | ||
+ | |||
+ | # Rejeter tout le reste : | ||
+ | -A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable | ||
+ | -A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable | ||
</ | </ | ||
Ligne 114: | Ligne 219: | ||
binutils-x86-64-linux-gnu | binutils-x86-64-linux-gnu | ||
bolt | bolt | ||
+ | borgbackup | ||
bridge-utils | bridge-utils | ||
bsdmainutils | bsdmainutils | ||
Ligne 244: | Ligne 350: | ||
iotop | iotop | ||
iperf | iperf | ||
+ | iperf3 | ||
iproute2 | iproute2 | ||
ipset | ipset | ||
Ligne 308: | Ligne 415: | ||
libavformat58: | libavformat58: | ||
libavutil56: | libavutil56: | ||
+ | libb2-1 | ||
libbabeltrace1: | libbabeltrace1: | ||
libbdplus0: | libbdplus0: | ||
Ligne 492: | Ligne 600: | ||
libip4tc0: | libip4tc0: | ||
libip6tc0: | libip6tc0: | ||
+ | libiperf0: | ||
libipset11: | libipset11: | ||
libiptc0: | libiptc0: | ||
Ligne 650: | Ligne 759: | ||
libsasl2-2: | libsasl2-2: | ||
libsasl2-modules-db: | libsasl2-modules-db: | ||
+ | libsctp1: | ||
libseccomp2: | libseccomp2: | ||
libselinux1: | libselinux1: | ||
Ligne 823: | Ligne 933: | ||
linux-base | linux-base | ||
linux-compiler-gcc-8-x86 | linux-compiler-gcc-8-x86 | ||
- | linux-headers-4.19.0-13-amd64 | + | linux-headers-4.19.0-17-amd64 |
- | linux-headers-4.19.0-13-common | + | linux-headers-4.19.0-17-common |
- | linux-headers-4.19.0-14-amd64 | + | linux-headers-4.19.0-18-amd64 |
- | linux-headers-4.19.0-14-common | + | linux-headers-4.19.0-18-common |
linux-headers-amd64 | linux-headers-amd64 | ||
- | linux-image-4.19.0-13-amd64 | + | linux-image-4.19.0-17-amd64 |
- | linux-image-4.19.0-14-amd64 | + | linux-image-4.19.0-18-amd64 |
linux-image-amd64 | linux-image-amd64 | ||
linux-kbuild-4.19 | linux-kbuild-4.19 | ||
Ligne 906: | Ligne 1016: | ||
python3-libvirt | python3-libvirt | ||
python3-libxml2: | python3-libxml2: | ||
+ | python3-llfuse | ||
python3-minimal | python3-minimal | ||
+ | python3-msgpack | ||
python3-pkg-resources | python3-pkg-resources | ||
python3-prettytable | python3-prettytable | ||
Ligne 951: | Ligne 1063: | ||
rsyslog | rsyslog | ||
runit-helper | runit-helper | ||
+ | s3fs | ||
samba-common | samba-common | ||
samba-common-bin | samba-common-bin | ||
Ligne 967: | Ligne 1080: | ||
ssl-cert | ssl-cert | ||
strace | strace | ||
+ | sudo | ||
sysstat | sysstat | ||
systemd | systemd | ||
Ligne 986: | Ligne 1100: | ||
udev | udev | ||
ufw | ufw | ||
+ | unzip | ||
usb.ids | usb.ids | ||
usbutils | usbutils | ||
Ligne 1012: | Ligne 1127: | ||
zfsutils-linux | zfsutils-linux | ||
zfs-zed | zfs-zed | ||
+ | zip | ||
zlib1g: | zlib1g: | ||
zlib1g-dev: | zlib1g-dev: | ||
</ | </ | ||
- | ==== Routage et filtrage avec iptables | + | ==== Stockage ZFS ==== |
- | + | ||
- | Nous avons dû ensuite router et rediriger tout ça avec iptables afin de communiquer depuis l' | + | |
- | + | ||
- | L' | + | |
- | Le paquet '' | + | |
- | Le port SSH a été masqué. | + | |
- | + | ||
- | Il est bien sûr extrêmement important de sécuriser SSH : interdire le login root avec mot de passe, utiliser de bons algorithmes de chiffrement, | + | |
- | + | ||
- | Les règles concernant le réseau d' | + | |
- | + | ||
- | <code bash> | + | |
- | root@hypervisor-01 ~ # cat / | + | |
- | # Router le Web vers le proxy Nginx : | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | # Router le mail envoi/ | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | # Router le 9000 vers le serveur peertube : | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | # Router le 4443 et les 10000-20000 | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | -A PREROUTING -d 159.69.59.13/ | + | |
- | # Ne pas appliquer le masquerading sur le broadcast/ | + | |
- | -A POSTROUTING -s 192.168.10.0/ | + | |
- | -A POSTROUTING -s 192.168.10.0/ | + | |
- | # Masquerading sur tous les ports dans le sens sortant (VM -> Internet) | + | |
- | -A POSTROUTING -s 192.168.10.0/ | + | |
- | -A POSTROUTING -s 192.168.10.0/ | + | |
- | -A POSTROUTING -s 192.168.10.0/ | + | |
- | # Accepter le trafic basique : ICMP, boucle locale et connexions établies, en entrée : | ||
- | -A INPUT -m conntrack --ctstate RELATED, | ||
- | -A INPUT -i lo -j ACCEPT | ||
- | -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT | ||
- | # Accepter le SSH : | ||
- | -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport XXXX -j ACCEPT | ||
- | # Accepter Spice et VNC (console virtuelle de virt-manager) : | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5900 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5901 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5902 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5903 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5904 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5905 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5906 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5907 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5908 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5909 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5910 -j ACCEPT | ||
- | -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT | ||
- | -A INPUT -p udp -m udp -m conntrack --ctstate NEW --dport 5911 -j ACCEPT | ||
- | # Accepter les requêtes DNS (port 53) depuis les VM : | ||
- | -A INPUT -i br2 -p udp -m udp -m multiport --dports 53 -j ACCEPT | ||
- | -A INPUT -i br2 -p tcp -m tcp -m multiport --dports 53 -j ACCEPT | ||
- | # Bloquer les requêtes rpcbind/ | ||
- | -A INPUT -i br2 -p tcp -m multiport --dport 2049 -j ACCEPT | ||
- | -A INPUT -i br2 -p tcp -m multiport --dport 111 -j ACCEPT | ||
- | -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT | ||
- | -A INPUT -p udp --dport 111 -j DROP | ||
- | -A INPUT -p tcp --dport 111 -j DROP | ||
- | |||
- | # On refuse tout le reste : | ||
- | -A INPUT -m conntrack --ctstate INVALID -j DROP | ||
- | -A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset | ||
- | -A INPUT -j REJECT --reject-with icmp-port-unreachable | ||
- | |||
- | # Accepter les connexions établies sur le LAN : | ||
- | -A FORWARD -d 192.168.10.0/ | ||
- | # Accepter le trafic sortant depuis le LAN : | ||
- | -A FORWARD -s 192.168.10.0/ | ||
- | # Accepter le trafic interne entre les VM : | ||
- | -A FORWARD -i br2 -o br2 -j ACCEPT | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour le Web vers le proxy : | ||
- | -A FORWARD -d 192.168.10.2/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour le mail vers le serveur mail : | ||
- | -A FORWARD -d 192.168.10.7/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour peertube service 9000 vers le serveur video : | ||
- | -A FORWARD -d 192.168.10.8/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour funkwhale service 5000 vers le serveur video : | ||
- | -A FORWARD -d 192.168.10.9/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 10000-20000 vers le serveur visio : | ||
- | -A FORWARD -d 192.168.10.10/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service udp 10000-20000 vers le serveur visio : | ||
- | -A FORWARD -d 192.168.10.10/ | ||
- | # Accepter les paquets redirigés vers des ports particuliers pour jitsi meet service tcp 4443 vers le serveur visio : | ||
- | -A FORWARD -d 192.168.10.10/ | ||
- | |||
- | # Rejeter tout le reste : | ||
- | -A FORWARD -i br2 -j REJECT --reject-with icmp-port-unreachable | ||
- | -A FORWARD -o br2 -j REJECT --reject-with icmp-port-unreachable | ||
- | </ | ||
- | |||
- | ==== Stockage ZFS ==== | ||
Un « pool » sur les 2 gros disques mécaniques a été créé en miroir (RAID1). Si vous vous demandez pourquoi nous n' | Un « pool » sur les 2 gros disques mécaniques a été créé en miroir (RAID1). Si vous vous demandez pourquoi nous n' | ||
Ligne 1175: | Ligne 1188: | ||
==== Sauvegardes ==== | ==== Sauvegardes ==== | ||
- | Toujours sauvegarder ! Nous avons mis en place des snapshots ZFS que nous répliquons en France via SSH sur un autre pool ZFS en miroir. Les donnés sont donc techniquement répliquées 3 fois (4 disque | + | Toujours sauvegarder ! |
+ | |||
+ | Nous avons mis en place des snapshots ZFS que nous répliquons en France, dans le Tarn au domicile de l' | ||
+ | |||
+ | Une autre sauvegarde est en place vers une Storage Box Hetzner de 5 To dans le datacenter de Helsinki. Nous utilisons [[https:// | ||
Nous aimerions pouvoir chiffrer les données nativement, une fois que ZFS 2.0 aura atterri dans Debian stable. Pour le moment, seul Nextcloud permet de chiffrer le stockage nativement. | Nous aimerions pouvoir chiffrer les données nativement, une fois que ZFS 2.0 aura atterri dans Debian stable. Pour le moment, seul Nextcloud permet de chiffrer le stockage nativement. |