Juin en anglais

SysAdmin

Environnement utilisé

Un CPX21 de l’offre Cloud de Hetzner. Je pense que les modifications restent intéressantes pour toute autre configuration équivalente ou moins puissante que celle-ci. Le serveur tourne sous Debian 10.

Pré-requis

Avoir déjà configuré son serveur SSH pour se connecter avec un utilisateur ayant accès aux droits d’administration.

Installer et configurer zRAM

zRAM est un outil permettant de compresser la RAM, pour gagner en mémoire vive disponible. Pour plus de détails, je vous recommande de lire l’introduction de cette page de documentation.

On installe le paquet.

sudo apt install zram-tools

Une fois installé, zRAM se lance tout seule avec une configuration par défaut. Pour configurer zRAM, on édite le fichier /etc/default/zramswap. On modifie la valeur PERCENTAGE pour augmenter la capacité que peut gérer zRAM, la valeur par défaut devrait être 10, on la passe à 100. On relance le service. pour que la modification fasse effet.

sudo systemctl restart zramswap.service

Installer GitLab

Suivre cette documentation

Limiter le nombre de processus

Par défaut, GitLab fait tourner un nombre important de processus, ce qui fait fortement ralentir les serveurs peu puissants. Pour résoudre ce problème, on va éditer /etc/gitlab/gitlab.rb et réduire le nombre de processus simultanés utilisés par les services de GitLab.

[…]
puma['worker_processes']=1
[…]
sidekiq['max_concurrency']=5

On relance GitLab pour que les modifications soient prises en compte.

sudo gitlab-ctl reconfigure

Une fois GitLab relancé, tout devrait fonctionner correctement et l’utilisation de la RAM du serveur ne devrait pas exceder 90%.

Sources

#IT #SysAdmin #GitLab


Si vous appréciez mon travail sur DNS Witch, Grimoire ou ce billet et que vous souhaitez m’aider financièrement, vous pouvez me faire un don sur Liberapay.

Pré-requis

Avoir déjà configuré son serveur SSH pour se connecter avec un utilisateur ayant accès aux droits d’administration.

Mettre en place l’environnement

Tout ce qui est indiqué dans cette partie a lieu sur le serveur

Pour notre exemple, nous allons assumer que vous souhaitez créer un utilisateur qui va publier du contenu web. Les répertoires indiqués le sont à titre d’exemples, adaptez les chemins en conséquence de vos besoins.

Créer l’utilisateur et son groupe

On créé l’utilisateur, puis son groupe, on rajoute l’utilisateur au groupe et enfin, on s’assure qu’il ne puisse accéder qu’au client SFTP.

sudo useradd <username>
sudo groupadd <groupname>
sudo gpasswd -a <username> <groupname>
sudo usermod -s  /usr/lib/openssh/sftp-server <username>

Créer le répertoire de l’utilisateur

On créé le répertoire, on s’assure qu’il appartiennent bien à l’utilisateur root, de le protégér d’écriture de la part d’autres utilisateurs, puis on le définit comme répertoire d’accueil de l’utilisateur.

sudo mkdir /srv/www/domain.tld/
sudo chown root /srv/www/domain.tld
sudo chmod go-w /srv/www/domain.tld
sudo usermod -d /srv/www/domain.tld/ <username>

Créer le répertoire web

C’est dans ce répertoire que l’utilisateur aura les droits pour créer, supprimer et éditer des fichiers et dossiers. On créé le répertoire, on nomme l’utilisateur et son groupe propriétaires puis on leur donne les droits nécessaires.

sudo mkdir /srv/www/domain.tld/public_html
sudo chown <username>:<groupname> /srv/www/domain.tld/public_html
sudo chmod ug+rwX /srv/www/domain.tld/public_html

Finaliser l’environnement

N’oubliez pas de rajouter la clef publique SSH de votre utilisateur dans le dossier nécessaire.

On créé le répertoire .ssh nécessaire et le fichier authorized_keys dans lequel on va mettre la clef publique, enfin, on rend l’utilisateur propriétaire et on s’assure qu’il puisse lire le fichier.

sudo mkdir /srv/www/domain.tld/.ssh
sudo touch /srv/www/domain.tld/.ssh/authorized_keys
sudo chown -R <username>:<groupname> /srv/www/domain.tld/.ssh
sudo chmod u+rX /srv/www/domain.tld/.ssh

Il n’y a plus qu’à copier-coller la clef publique SSH dans le fichier authorized_keys.

Bloquer l’utilisateur dans l’environnement

Tout ce qui est indiqué dans cette partie a lieu sur le serveur

On édite le fichier /etc/ssh/sshd_config on vérifie si la directive Subsystem est bien comme indiquée ci-dessous, sinon, on la corrige ou la créé.

[…]
Subsystem sftp internal-sftp
[…]

On cherche le bloc AllowUsers, s’il est commenté (avec un en début de ligne #), on le décommente (on efface le #) et puis on y ajoute notre utilisateur.

[…]
AllowUsers <username>
[…]

On se rend à la fin du fichier de configuration, et on rajoute la partie suivante.

[…]
Match User <username> # On indique que notre partie concerne l’utilisateur
	ChrootDirectory /srv/www/domain.tld # Là où on veut enfermer l’utilisateur
	AllowTCPForwarding no
	X11Forwarding no
	ForceCommand internal-sftp # On force l’utilisateur à utiliser seulement le terminal SFTP

On redémarre SSH pour que la nouvelle configuration soit prise en compte.

sudo systemctl restart sshd.service

Côté client

Sur le PC de l’utilisateur·trice, on génère simplement la clef, et on utilisera SFTP pour se connecter de manière sécurisée.

Tester la connexion à l’environnement

En essayant de se connecter via SSH avec l’utilisateur SFTP, on devrait obtenir le message suivant : This service allows sftp connections only.. SFTP devrait se connecter sans soucis, la commande pwd affichant /. Toute tentative d’ajouter du contenu dans le dossier racine devrait échouée mais une fois dans le dossier /public_html, l’utilisateur devrait pouvoir ajouter, éditer et supprimer des fichiers et dossiers.

Sources

Pour aller plus loin…

Créer un seul groupe pour les utilisateurs SFTP

Si on doit créer plusieurs utilisateurs, avoir un seul groupe à gérer peut être plus pratique. On peut par exemple l’appeler sftp. À la création de nouveaux utilisateurs, on n’aura qu’à directement ajouter ces derniers au groupe comme indiqué au début de ce billet.

Un lien pour approfondir

#IT #SysAdmin #SFTP #Linux


Si vous appréciez mon travail sur DNS Witch, Grimoire ou ce billet et que vous souhaitez m’aider financièrement, vous pouvez me faire un don sur Liberapay.