ProFTPD Quota’s

Binnen Skyz gebruik ik ProFTPD zodat enkele gebruikers hun weerstationsgegevens als bestand kunnen uploaden. Het gaat nog altijd om een zeer beperkt aantal gebruikers die via SFTP gegevens doorsturen, maar om toch een beetje limieten te zetten zodat de opslag niet vol geraakt, heb ik onlangs quota’s ingesteld. Aangezien een databestand van een weerstation meestal klein is, is een limiet van 5MB/gebruiker in mijn geval zeker ruim voldoende.

Plaats het volgende in /etc/proftpd/conf.d/quota.conf:

QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
QuotaOptions ScanOnLogin

vervolgens moeten we de quotafiles maken:

ftpquota --create-table --type=limit
ftpquota --create-table --type=tally

Nu kunnen we een gebruiker een quota geven, gebruik de tool hieronder om het quota commando te genereren:






Een volgende stap is om het SFTP-gebruikersbeheer & quota te automatiseren, zodat elk weerstation automatisch een SFTP gebruiker krijgt, en vervolgens de uitleesfunctie te integreren in skyz zodat een gebruiker via SFTP gegevens kan sturen zonder tussenkomst van mij.

ProFTPD configureren met SFTP en virtuele accounts

Dit is een “update” voor mijn post uit 2023 waar ik proftpd installeerde met FTPS (FTP+TLS).

We kunnen proftpd installeren met:

sudo apt install proftpd proftpd-mod-crypto

vervolgens moeten we /etc/proftpd/proftpd.conf bewerken en de regel waar port 21 staat in commentaar zetten

vervolgens kunnen we het volgende in /etc/proftpd/conf.d/sftp.conf plaatsen:

LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c

SFTPEngine on
Port 2222
SFTPLog /var/log/proftpd/sftp.log

# Configure both the RSA and DSA host keys, using the same host key
# files that OpenSSH uses.
SFTPHostKey /etc/ssh/ssh_host_rsa_key

SFTPAuthMethods password publickey

SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u

# Enable compression
SFTPCompression delayed

Dit schakeld SFTP in op poort 2222. We gebruiker hier niet poort 22 omdat deze al gebruikt is door OpenSSH.

Vervolgens kunnen we de virtuele gebruikers configureren. Deze laten ons toe om aparte SFTP gebruikers te maken per project, die achterliggend dezelfde systeemgebruiker hebben.

Maak het bestand “/etc/proftpd/conf.d/virtual-users.conf” aan en plaats er het volgende in:

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
AuthOrder mod_auth_file.c
WtmpLog off

vervolgens moeten we de bestanden maken die de gebruikersconfiguraties bevatten:

touch ftpd.passwd ftpd.group
chmod 600 ftpd.passwd ftpd.group

nu kunnen we een gebruiker aanmaken. Ik gebruik hier het UID/GID van de www-data gebruiker: 33.

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=weerstation --uid=33 --gid=33 --home=/var/www/weerstation --shell=/bin/false

Als we nu proftpd herstarten (systemctl restart proftpd) kunnen we inloggen met onze nieuwe virtuele gebruiker.

hier zijn nog wat handige links naar de ProFTPD documentatie

Dynamische login banners in Linux

Ik was een aantal servers aan het herinstalleren met Debian Trixie, en ik dacht dat het wel leuk was als ik een dynamische login banner maakte die wat nuttige informatie toont na het inloggen.

Zet het volgende in /etc/update-motd.d/20-sysinfo

#!/bin/bash

echo "----------------------------------------"
echo "System Information as of: $(date)"
echo "Hostname: $(hostname)"
echo "Uptime  : $(uptime -p)"
echo "Load    : $(cat /proc/loadavg)"
echo "Memory  : $(free -h | awk '/Mem:/ { print $3 " / " $2 }')"
echo "Disk    : $(df -h / | awk '/\// { print $3 " / " $2 }')"
echo "IP Addr : $(hostname -I | awk '{ print $1 }')"
echo "Users   : $(who | wc -l) logged in"
echo "----------------------------------------"

En maak het vervolgens uitvoerbaar (chmod +x /etc/update-motd.d/20-sysinfo)

Als je nu inlogt, zou je systeeminformatie moeten zien.

Cachen met Apache en mod_cache

Een van de eenvoudigste manieren om de performantie van een drukke website te verbeteren is om caching toe te voegen. Er zijn verschillende manieren waarmee dit kan gebeuren: Je kan objecten cachen in code (met Memcached en Redis), of je kan de responses cachen met Varnish, Nginx of in dit geval met Apache’s mod_cache. Ik raad dit op zich niet aan in productie, maar omdat ik Apache gebruik als webserver leek het me een leuk experiment, zonder veel extra configuratie te moeten toevoegen.

Lees verder

Automatische HTTPS met Apache

HTTPS is de dag van vandaag een must voor een website. Er zijn tools om certificaten automatisch aan te vragen (certbot etc), en webservers die gekend zijn om dit automatisch te doen (zoals Caddy), maar wist je dat je met Apache ook geen nood hebt voor Certbot? Met mod_md kan je apache automatisch HTTPS certificaten laten aanvragen via ACME (hetzelfde systeem dat Certbot en de caddy server gebruiken).

Lees verder

Debian herinstalleren over SSH

Ik wou onlangs mijn nuc herinstalleren, maar omdat er geen scherm is waar mijn nuc staat (hij draait momenteel als headless server), besloot ik om te experimenteren met de Debian installer over SSH. Tijdens het installeren moest ik wel even mijn Nuc gaan halen en aan een scherm hangen (omdat ik een typo gemaakt had), maar ik ben er wel in geslaagd om Debian volledig over SSH te installeren. In deze post ga ik over het proces dat ik gebruikt heb om dit te doen.

Lees verder