# Choses à faire après l'installation d'OpenBSD Notes personnelles pour profiter d'OpenBSD dans un usage "desktop". ## Installation chiffrée Voir la FAQ: => https://www.openbsd.org/faq/faq14.html#softraidFDE S'il y a un bug à la fin de l'installation en cas d'UEFI, installer le chargeur de démarrage à la main avec ''installboot''. ## /tmp en ram Je monte ''/tmp'' en ram, et j'attribue 1/10 de la RAM disponible pour ça. On commente avant tout la ligne contenant déjà une entrée pour ''/tmp'' dans ''/etc/fstab''. ``` # sed -i '/\/tmp /s/^/\#/' /etc/fstab # printf "swap /tmp mfs rw,nodev,nosuid,-s=%sB 0 0\n" \ $(dmesg |awk '/avail mem/ { print int($4 / 10)}') \ >> /etc/fstab # echo "chmod 1777 /tmp" >> /etc/rc.local ``` Ça revient à : ``` swap /tmp mfs rw,nodev,nosuid,-s=0.8G 0 0 ``` ## /home en 700 ``` $ chmod 0700 $HOME ``` ## user dans + de groupes Pour éteindre sans avoir besoin de ''doas'', il faut appartenir au groupe ''_shutdown'': ``` # usermod -G _shutdown prx ``` Afin d'utiliser ''cu'' : ``` # usermod -G dialer prx ``` Et pour travailler avec les sources : ``` # usermod -G wsrc prx ``` Enfin, pour être moins limité en terme de ressources, c'est mieux d'appartenir à la class de login "staff" (voir login.conf(5)) ``` # usermod -L staff prx ``` À la fin: ``` > userinfo prx login prx passwd * uid 1000 groups prx wheel operator wsrc staff dialer _shutdown change NEVER class staff gecos prx dir /home/prx shell /bin/ksh expire NEVER ``` On peut augmenter les limites dans /etc/login.conf : ``` staff:\ :datasize-cur=6144M:\ ``` ## Autologin Si on est le seul utilisateur de la machine et que l'ensemble est chiffré et qu'on éteint son ordi lorsqu'on ne l'utilise pas, alors on peut activer l'autologin pour xenodm : ``` echo 'DisplayManager._0.autoLogin: user' >> /etc/X11/xenodm/xenodm-config ``` Dans ce cas, je vous conseille de désactiver la possibilité de fermer la session graphique avec Ctrl-Shift-backspace. Sinon, n'importe qui peut prendre le contrôle de votre session même si vous l'avez verrouillée avec xlock (ou autre). On en profite aussi pour retirer la possiblité d'accéder à un tty avec Ctrl-Alt-F*. ``` cat << EOF >> /etc/X11/xorg.conf Section "ServerFlags" Option "DontZap" "True" Option "DontVTSwitch" "True" EndSection EOF ``` ## Boot plus rapide ``` echo "set timeout 1" > /etc/boot.conf ``` ## Parefeu + sévère ``` # cat << EOF > /etc/pf.conf set skip on lo antispoof quick for { egress } block pass in proto icmp pass in proto icmp6 pass on wg0 pass out EOF ``` ## doas Commandes que je veux pouvoir lancer sans entrer de mots de passe. Surtout pour les scripts. ``` cat << EOF > /etc/doas.conf permit persist :wheel permit nopass :wheel cmd /sbin/disklabel permit nopass :wheel cmd /sbin/umount permit nopass :wheel cmd /sbin/mount EOF ``` ## wsconsctl Pas de bip clavier et luminosité réduite : 80% me permet de bien voir et réduit la consommation d'énergie. ``` cat << EOF > /etc/wsconsctl.conf keyboard.bell.volume=0 display.brightness=80 EOF ``` ## Bruit dans le casque Dans mon casque audio, il y a parfois du bruit blanc. Pour le retirer: ``` cat << EOF > /etc/mixerctl.conf inputs.mix2_source=dac-0:1 EOF ``` => https://www.mail-archive.com/misc@openbsd.org/msg182180.html ## Installation de quelques programmes ### dwm J'utilise une version de dwm avec quelques patches directement intégrés dans mon config.h : => https://dwm.suckless.org dwm * bstack * grid * deck * resetnmaster * focusurgent * focusmaster * nametag * movestack À vrai dire, ces patches ne me sont que très rarement utiles... => https://dwm.suckless.org/patches/alpha/ J'y ajoute parfois le patche alpha ``` --- a/drw.c +++ b/drw.c @@ -202,6 +202,8 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) DefaultColormap(drw->dpy, drw->screen), clrname, dest)) die("error, cannot allocate color '%s'", clrname); + + dest->pixel |= 0xff << 24; } VER=6.5 cd /tmp ftp https://dl.suckless.org/dwm/dwm-$VER.tar.gz tar xvzf dwm*.tar.gz cd dwm-$VER ftp -o config.h https://si3t.ch/pub/dwm-config.h vi config.mk # sed -i /^#FREETYPEIN/s/^#// config.mk make make install PREFIX=$HOME ``` ### st Un terminal tout simple, donc rapide. ``` VER=0.9.1 cd /tmp ftp https://dl.suckless.org/st/st-$VER.tar.gz tar xvzf st-*.tar.gz cd st-$VER ftp -o config.h https://si3t.ch/pub/st-config.h vi config.mk # edit OpenBSD config make make install PREFIX=$HOME ``` ## Résolveur DNS indépendant (unwind) + adblock /etc/unwind.conf: ``` fdn1=80.67.169.12 fdn2=80.67.169.40 fdn61=2001:910:800::12 fdn62=2001:910:800::40 wikimedia=185.71.138.138 wikimedia6=2001:67c:930::1 bortzmeyer=193.70.85.11 block list "/var/db/unwind-block.txt" log forwarder { $fdn61 DoT $fdn62 DoT $fdn1 DoT $fdn2 DoT $wikimedia6 DoT $wikimedia DoT $bortzmeyer } preference { recursor DoT oDoT-forwarder oDoT-autoconf stub } ``` /usr/local/sbin/unwindblock ``` #!/bin/sh db=/var/db/unwind-block.txt if [ -n "$(find $db -mtime +7)" ]; then # wait for internet access while true; do nc -zw1 si3t.ch 443 && break || sleep 60 done ftp -o- https://si3t.ch/pub/evils/unwind-block.txt.gz |gzcat > $db fi ``` ``` ftp -o- https://si3t.ch/pub/evils/unwind-block.txt.gz |gzcat > /var/db/unwind-block.txt rcctl enable unwind rcctl start unwind chmod +x /usr/local/sbin/unwindblock # crontab -e @reboot /usr/local/sbin/unwindblock ``` Voir la liste des ip blacklistées => /evils/ ## VPN J'utilise un VPN wireguard via openbsd.amsterdam sur le rdomain 2 pour l'utiliser seulement au besoin. J'ai donc un fichier /etc/hostname.wg0 ``` wgkey ... wgpeer ... \ wgendpoint 46.23.90.144 4545 \ wgaip 0.0.0.0/0 \ wgaip ::0/0 inet 10.0.0.2/24 inet6 fd54:49bc:c233:fde:cafe::2/64 rdomain 2 !route -T2 add -inet default 10.0.0.1 !route -T2 add -inet6 default fd54:49bc:c233:fde:cafe::1 up ``` Cependant, la résolution de noms de domaines n'est pas au top... unwind n'est pas accessible sur la table de routage 2. Il faut donc lancer un second unwind: ``` cat << EOF > /etc/hostname.lo1 rdomain 2 127.0.0.1 up" EOF sh /etc/netstart lo1 ln -s /etc/rc.d/unwind /etc/rc.d/unwind2 rcctl enable unwind2 echo "unwind2_rtable=2" >> /etc/rc.conf.local rcctl start unwind2 ``` Pour utiliser le VPN, je lance le programme souhaité avec : ``` route -T2 exec le_nom_de-l_outil -flag1 -flag2... ``` ## rc.local ``` cat << EOF >> /etc/rc.local sleep 30 && syspatch & sleep 60 && find /home -name "*.core" -delete & EOF ``` ## Gestion de l'énergie Le système sera suspendu si la batterie descend en-dessous de 5%. Ça permet de brancher la machine sans perdre son travail. ``` rcctl enable apmd rcctl set apmd flags -A -z 5 ``` À la place, j'aime autant utiliser le port obsdfreqd qui limite la température en réduisant la fréquence du processeur si besoin ``` pkg_add obsdfreqd rcctl enable obsdfreqd apmd rcctl set obsdfreqd flags -T 75,55 rcctl set apmd flags -L -z8 rcctl start apmd obsdfreqd ``` Et pour que l'écran soit verrouillé après avoir suspendu la machine: ``` # cat /etc/apm/suspend #!/bin/sh pkill -USR1 xidle ``` Le script ''checkbatt'' permet d'avoir une alerte si la batterie a un niveau trop faible. Il s'appelle via un cron. : ``` */5 * * * * /home/prx/bin/checkbatt >/dev/null 2>&1 ``` ## ntpd ``` sed -i 's/www\.google\.com/www.openbsd.org/' /etc/ntpd.conf ``` ## firmwares Si aucun accès à internet n'est disponible, récupérer les firmwares en ligne, les copier sur une clé USB, monter la clé puis lancer ''fw_update'' ainsi : ``` fw_update -p /chemin/vers/cle/usb/ ``` => http://firmware.openbsd.org/firmware/ ## sysctl Pour éviter d'abîmer la batterie en lui imposant une tension de charge lorsque le secteur est branché : ``` /etc/sysctl.conf hw.battery.chargemode=1 hw.battery.chargestart=0 hw.battery.chargestop=85 ``` pour xorg, si c'est demandé dans /var/log/Xorg.0.log ``` /etc/sysctl.conf machdep.allowaperture=1 ``` Pour améliorer les performances et utiliser micro et webcam. Attention, cela allège les précautions de sécurité par défaut: ```/etc/sysctl.conf hw.smt=1 kern.audio.record=1 kern.video.record=1 ``` Pour utiliser la webcam, il faudra lancer: ``` chown $USER /dev/video* ``` ## réseau et WiFi Sur un portable, on peut activer le WiFi et le filaire avec de préférence le filaire. En cas de déconnexion, l'autre carte réseau prend le relais. Dans mon cas, sur un x250 : ``` # cat /etc/hostname.iwn0 join wifi1 wpakey blabla join wifi2 wpakey pouet join "" up # cat /etc/hostname.em0 up # cat /etc/hostname.trunk0 trunkproto failover trunkport em0 trunkport iwm0 inet autoconf inet6 autoconf ``` ## Montage de cdrom/DVD ``` $ doas mkdir /cdrom $ cat /etc/fstab /dev/cd0a /cdrom cd9660 ro,noauto 0 0 ``` ## Disque dur externe de musique /etc/fstab: ``` b2a7ab562311a08f.a /home/prx/mpd ffs rw,nodev,nosuid,noatime 1 2 ``` ## Outils audio USB prioritaires ``` # rcctl set sndiod flags -f rsnd/0 -F rsnd/1 # rcctl restart sndiod ``` ## crontab ``` */5 * * * * /home/prx/bin/checkbatt >/dev/null 2>&1 ~ * * * * /home/prx/bin/prxsync push >/dev/null 2>&1 ``` ## Imprimante USB ``` # echo 'disable ulpt' >>/etc/bsd.re-config ``` ## ports Liste générée avec ''pkg_info -zm > obsdpkglist.lst''. ``` ftp https://si3t.ch/misc/logiciel-libre/openbsd/obsdpkglist.lst pkg_add -vmzl obsdpkglist.lst ```