machines:grifon:lg
Différences
Ci-dessous, les différences entre deux révisions de la page.
| machines:grifon:lg [2019/03/18 19:51] – créée - modification externe 127.0.0.1 | machines:grifon:lg [2026/07/30 09:07] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== lg - looking glass ====== | ||
| - | |||
| - | lg est une machine virtuelle sous OpenBSD et met à disposition des administrateurs réseau et curieux un looking-glass bgp qui permet de consulter la table de routage internet vue par le réseau de grifon. | ||
| - | |||
| - | Le looking-glass est disponible en web sur https:// | ||
| - | |||
| - | ===== Administrateurs ===== | ||
| - | |||
| - | * alarig | ||
| - | * gizmo | ||
| - | * nemo | ||
| - | * petrus | ||
| - | |||
| - | ===== Services ===== | ||
| - | |||
| - | * bgpd : 2x full view IPv4 + IPv6 de chacun des asbr | ||
| - | * httpd : pour l' | ||
| - | * sshd : interne + public | ||
| - | |||
| - | ===== Setup ===== | ||
| - | |||
| - | lg doit récupérer une full view bgp des deux ASBR grifon, et les fournir à [[https:// | ||
| - | |||
| - | bgplg peut ensuite être utilisé en tant que cgi sur [[https:// | ||
| - | |||
| - | Les pages de man de [[https:// | ||
| - | |||
| - | ==== config réseau ==== | ||
| - | |||
| - | em0 est l' | ||
| - | |||
| - | <file | / | ||
| - | rdomain 1 | ||
| - | inet 172.17.0.35/ | ||
| - | inet6 fd00: | ||
| - | </ | ||
| - | |||
| - | <file | / | ||
| - | inet 89.234.186.9/ | ||
| - | inet6 2a00: | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | lg$ ifconfig | ||
| - | em0: flags=8843< | ||
| - | lladdr 8e: | ||
| - | index 1 priority 0 llprio 3 | ||
| - | media: Ethernet autoselect (1000baseT full-duplex) | ||
| - | status: active | ||
| - | inet 172.17.0.35 netmask 0xffffff00 broadcast 172.17.0.255 | ||
| - | inet6 fe80:: | ||
| - | inet6 fd00: | ||
| - | em1: flags=8843< | ||
| - | lladdr d6: | ||
| - | index 2 priority 0 llprio 3 | ||
| - | groups: egress | ||
| - | media: Ethernet autoselect (1000baseT full-duplex) | ||
| - | status: active | ||
| - | inet 89.234.186.9 netmask 0xffffffe0 broadcast 89.234.186.31 | ||
| - | inet6 fe80:: | ||
| - | inet6 2a00: | ||
| - | </ | ||
| - | |||
| - | ==== sshd ==== | ||
| - | |||
| - | Deux daemons ssh tournent sur la machine : un sur em0 dans le rdomain/ | ||
| - | |||
| - | * sshd coté privé (em0) : | ||
| - | < | ||
| - | lg$ doas cp / | ||
| - | lg$ doas cp / | ||
| - | lg$ doas rcctl enable sshd_private | ||
| - | lg$ doas rcctl set sshd_private flags -f / | ||
| - | lg$ doas rcctl set sshd_private rtable 1 | ||
| - | |||
| - | lg$ diff -u / | ||
| - | --- / | ||
| - | +++ / | ||
| - | @@ -10,8 +10,8 @@ | ||
| - | |||
| - | #Port 22 | ||
| - | # | ||
| - | -# | ||
| - | -# | ||
| - | +ListenAddress 172.17.0.35 | ||
| - | +ListenAddress fd00: | ||
| - | |||
| - | # | ||
| - | # | ||
| - | @@ -91,3 +91,6 @@ | ||
| - | # | ||
| - | # | ||
| - | # | ||
| - | + | ||
| - | +# config pour verrouillage | ||
| - | +AllowGroups wheel | ||
| - | |||
| - | lg$ doas rcctl start sshd_private | ||
| - | </ | ||
| - | |||
| - | * sshd coté public (em1) : | ||
| - | < | ||
| - | lg$ doas mv / | ||
| - | lg$ doas rcctl enable sshd_public | ||
| - | lg$ doas rcctl disable sshd | ||
| - | |||
| - | lg$ diff -u / | ||
| - | --- / | ||
| - | +++ / | ||
| - | @@ -10,8 +10,8 @@ | ||
| - | |||
| - | #Port 22 | ||
| - | # | ||
| - | -# | ||
| - | -# | ||
| - | +ListenAddress 89.234.186.9 | ||
| - | +ListenAddress 2a00: | ||
| - | |||
| - | # | ||
| - | # | ||
| - | @@ -27,7 +27,7 @@ | ||
| - | # Authentication: | ||
| - | |||
| - | # | ||
| - | -PermitRootLogin prohibit-password | ||
| - | +PermitRootLogin no | ||
| - | # | ||
| - | # | ||
| - | # | ||
| - | @@ -52,7 +52,7 @@ | ||
| - | # | ||
| - | |||
| - | # To disable tunneled clear text passwords, change to no here! | ||
| - | -PasswordAuthentication no | ||
| - | +PasswordAuthentication yes | ||
| - | # | ||
| - | |||
| - | # Change to no to disable s/key passwords | ||
| - | @@ -91,3 +91,5 @@ | ||
| - | # | ||
| - | # | ||
| - | # | ||
| - | + | ||
| - | +AllowUsers rviews | ||
| - | |||
| - | lg$ doas rcctl start sshd_public | ||
| - | </ | ||
| - | |||
| - | Si l'on se trouve dans le shell lancé depuis le sshd qui tourne dans le rdomain 1 il faut spécifier le rdomain 0 pour le sshd public : | ||
| - | < | ||
| - | lg$ doas route -T0 exec rcctl restart sshd_public | ||
| - | </ | ||
| - | |||
| - | Ainsi deux daemons tournent en parallèle sur la machine : | ||
| - | < | ||
| - | lg$ ps aux | grep /sbin/sshd | ||
| - | root | ||
| - | root | ||
| - | </ | ||
| - | |||
| - | Dans la table de routage par défaut, rdomain 0 : | ||
| - | < | ||
| - | lg$ netstat -nat | grep *.22 | ||
| - | tcp 0 0 *.22 | ||
| - | tcp6 | ||
| - | </ | ||
| - | |||
| - | Et dans le rdomain 1 : | ||
| - | < | ||
| - | lg$ netstat -T1 -nat | grep .22 | ||
| - | tcp 0 0 172.17.0.35.22 | ||
| - | tcp6 | ||
| - | |||
| - | lg$ route -T1 exec netstat -nat | grep .22 | ||
| - | tcp 0 0 172.17.0.35.22 | ||
| - | tcp6 | ||
| - | </ | ||
| - | |||
| - | On voit ici qu'il y a deux méthodes pour spécifier la table de routage dans laquelle on se trouve. Soit l' | ||
| - | |||
| - | ==== bgpd ==== | ||
| - | |||
| - | bgpd doit donc recevoir les full view. Pas de filtrage en in, tout interdit en out. Pas d' | ||
| - | |||
| - | <file | / | ||
| - | router-id 89.234.186.9 | ||
| - | AS 204092 | ||
| - | fib-update no # permet de ne pas installer en table de routage | ||
| - | # (inutile pou un lg) | ||
| - | |||
| - | socket "/ | ||
| - | # le socket est dans le chroot de httpd pour bgplg cgi | ||
| - | # restricted pour interdire les modifs (cf bgplg(8)) | ||
| - | |||
| - | group grifon { | ||
| - | remote-as | ||
| - | |||
| - | neighbor 89.234.186.7 { | ||
| - | descr " | ||
| - | } | ||
| - | |||
| - | neighbor 2a00: | ||
| - | descr " | ||
| - | } | ||
| - | |||
| - | neighbor 89.234.186.6 { | ||
| - | descr " | ||
| - | } | ||
| - | |||
| - | neighbor 2a00: | ||
| - | descr " | ||
| - | } | ||
| - | } | ||
| - | |||
| - | deny to any | ||
| - | allow from group grifon inet | ||
| - | allow from group grifon inet6 | ||
| - | </ | ||
| - | |||
| - | Démarrer ensuite bgpd | ||
| - | |||
| - | ==== httpd ==== | ||
| - | |||
| - | Cf principalement [[https:// | ||
| - | |||
| - | < | ||
| - | lg$ doas chmod 0555 / | ||
| - | lg$ doas chmod 0555 / | ||
| - | |||
| - | lg$ doas mkdir / | ||
| - | lg$ doas cp / | ||
| - | </ | ||
| - | |||
| - | <file | / | ||
| - | logdir "/ | ||
| - | |||
| - | server " | ||
| - | listen on * port 80 | ||
| - | |||
| - | location "/" | ||
| - | block return 301 " | ||
| - | } | ||
| - | |||
| - | location "/ | ||
| - | block return 301 " | ||
| - | root "" | ||
| - | } | ||
| - | |||
| - | location "/ | ||
| - | root "/ | ||
| - | request strip 2 | ||
| - | } | ||
| - | } | ||
| - | |||
| - | server " | ||
| - | listen on * tls port 443 | ||
| - | |||
| - | tls certificate "/ | ||
| - | tls key "/ | ||
| - | |||
| - | location "/" | ||
| - | block return 301 " | ||
| - | } | ||
| - | |||
| - | location "/ | ||
| - | fastcgi | ||
| - | root "" | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |||
| - | ==== let's encrypt - acme-client ==== | ||
| - | |||
| - | Pour l' | ||
| - | |||
| - | <file | / | ||
| - | lg$ cat / | ||
| - | authority letsencrypt { | ||
| - | api url " | ||
| - | account key "/ | ||
| - | } | ||
| - | authority letsencrypt-staging { | ||
| - | api url " | ||
| - | account key "/ | ||
| - | } | ||
| - | domain lg.grifon.fr { | ||
| - | domain key "/ | ||
| - | domain certificate "/ | ||
| - | domain full chain certificate "/ | ||
| - | sign with letsencrypt | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Lors de la première utilisation il faut générer une clé de compte : | ||
| - | |||
| - | < | ||
| - | lg$ doas acme-client -ADv lg.grifon.fr | ||
| - | </ | ||
| - | |||
| - | Ensuite pour le renouvellement automatique, | ||
| - | |||
| - | <file | / | ||
| - | for domain in $(awk '/ | ||
| - | acme-client -D $domain && \ | ||
| - | rcctl reload httpd; \ | ||
| - | done | ||
| - | </ | ||
| - | |||
| - | Un peu de customisation pour que ça soit plus joli : | ||
| - | <file | / | ||
| - | </ | ||
| - | <body style=" | ||
| - | <div style=" | ||
| - | <a href=" | ||
| - | <img style=" | ||
| - | </a> | ||
| - | </ | ||
| - | |||
| - | ==== bgplg ==== | ||
| - | |||
| - | Une fois le looking-glass fonctionnel en web, on passer à la partie purement route-server / cli. | ||
| - | |||
| - | Ici c'est [[https:// | ||
| - | |||
| - | < | ||
