# Les premières choses à faire sur un serveur OpenBSD
2024-09-12T09:23:06Z

J'ai récemment loué une machine virtuelle chez vultr pour quelques heures afin de tester des trucs, et je me suis aperçu qu'il y avait tout de même des petites étapes importantes que je serai amené à reproduire si je dois repartir de zéro.

Voici donc ma "check list" minimale après l'installation d'OpenBSD.

## user et doas

Je crée un utilisateur "normal" et j'édite doas.conf

```
#/etc/doas.conf
permit persist user
```

Ensuite, je change le mot de passe root avec un truc que j'oublierai vite:

``` 
# su -
# jot -rcs '' $l 32 126
# passwd
```

## aliases

J'ajoute mon mail dans /etc/mail/aliases

```
root: me@stuff.tld
# newaliases
```

## SSH et root

Vultr donne par défaut un accès root via ssh. C'est pas très malin, alors on édite /etc/ssh/sshd.conf:

```
PermitRootLogin no
```

Pour protéger l'accès à ssh, on installe sshguard:

```
# pkg_add sshguard
# rcctl enable sshguard
# rcctl start sshguard
```

## pf.conf

On modifie la configuration du parefeu pour:

* utiliser sshguard
* limiter le bruteforce sur le port ssh
* pouvoir utiliser des listes noires d'IP (https://si3t.ch/evils/)

On bloque tout par défaut, on bloque les listes noires, on autorise le ping et on prévoit l'ouvertur d'autres ports plus tard en décommentant les lignes avec "tcp_pass" et "udp_pass".

```
touch /var/prx-brutes.txt
touch /var/pf-badhost.txt
```

```
#/etc/pf.conf
ifaces = "{ egress }"

# maybe useful later
#tcp_pass = "{ www https }" # change me
#udp_pass = "{ domain }" # change me

table <bruteforce> persist
table <sshguard> persist
table <prx> persist file "/var/prx-brutes.txt"
table <pf-badhost> persist file "/var/pf-badhost.txt"

set skip on { lo }
set limit table-entries 409600

antispoof for $ifaces

block

block quick from <bruteforce> label "BRUTES"
block quick from <sshguard> label "SSHGUARD"
block quick from <prx> label "PRX"
block quick from <pf-badhost> label "PFBADHOST"

# allow ping
pass on $ifaces inet6 proto ipv6-icmp all #icmp6-type echoreq
pass on $ifaces inet proto icmp all # icmp-type echoreq

pass in on $ifaces proto tcp to port ssh modulate state \
        (source-track rule, \
        max-src-conn 8, max-src-conn-rate 15/5, \
        overload <bruteforce> flush global)

#pass in on $ifaces proto tcp to port $tcp_pass modulate state
#pass in on $ifaces proto udp to port $udp_pass

pass out on $ifaces proto { tcp udp }
```

Bien sûr, on recharge pf:

```
# pfctl -f /etc/pf.conf
```


Maintenant, on prévoit la mise à jour des listes noires chaque jour:


```
# /etc/daily.local
ftp -o- https://si3t.ch/pub/evils/prx-brutes.txt.gz | \
	gzcat > /var/prx-brutes.txt && \
	pfctl -t prx -T replace -f /var/prx-brutes.txt
ftp -o- https://si3t.ch/pub/evils/pf-badhost.txt.gz | \
	gzcat > /var/pf-badhost.txt && \
	pfctl -t pf-badhost -T replace -f /var/pf-badhost.txt
```

Pour aller plus loin avec le parefeu, j'installe aussi iblock avec une version modifiée pour ne pas avoir besoin d'inetd :

=> https://tildegit.org/prx/iblock/src/branch/icanserve




---
Une réaction?

Envoyez votre commentaire par mail (votre adresse mail sera retirée des entêtes) :
=> mailto:bla@bla.si3t.ch?subject=premieres-choses-a-faire-serveur-openbsd

Voici quelques instructions pour utiliser la liste de diffusion et recevoir les réponses à vos messages:
=> /log/_commentaires_.txt