Socket-Aktivierung
Anstelle auf die altbekannten Superserver (x)inetd zu setzen, soll hier eine Socket-Unitdatei für vsftpd auf Debian 11 verwendet werden.
Die erforderliche Software ist mit apt install vsftpd ftp
schnell installiert.
Weitere Voraussetzungen sind, dass weder solch ein Superserver läuft, noch tcpd
ausbremst und außerdem der vsftpd-Server nicht im standalone listening Modus arbeitet:
root@debra:~# pgrep -alfi inet
root@debra:~#
root@debra:~# grep -Ev '^#|^$' /etc/hosts.deny
root@debra:~#
root@debra:~# grep '^listen' /etc/vsftpd.conf
listen=NO
listen_ipv6=NO
root@debra:~#
root@debra:~# pkill -9 ftp
root@debra:~#
root@debra:~# pgrep -alfi ftp
Nun erstellen wir die beiden Dateien vsftpd.socket
sowie vsftpd@.service
und geben ihnen den im Folgenden dargestellten Inhalt.
Zuerst wollen wir die Datei /etc/systemd/system/vsftpd.socket
erzeugen:
[Unit]
Description=Open port 21 for FTP
PartOf=vsftpd.service
[Socket]
ListenStream=21
Accept=yes
[Install]
WantedBy=sockets.target
Als zweites ist die Datei /etc/systemd/system/vsftpd@.service
dran (auf das @-Zeichen achten, das ist signifikant):
[Unit]
Description=vsftpd FTP server
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty
StandardInput=socket
StandardOutput=socket
[Install]
WantedBy=default.target
Nun müssen wir uns nur noch um das Starten der Services kümmern:
root@debra:~# systemctl daemon-reload
root@debra:~# systemctl enable vsftpd.socket
root@debra:~# systemctl start vsftpd.socket
root@debra:~#
root@debra:~# systemctl --full --no-pager status vsftpd.socket
● vsftpd.socket - Open port 21 for FTP
Loaded: loaded (/etc/systemd/system/vsftpd.socket; enabled; vendor preset: enabled)
Active: active (listening) since Wed 2022-03-30 15:52:27 CEST; 2min 18s ago
Listen: [::]:21 (Stream)
Accepted: 19; Connected: 0;
Tasks: 0 (limit: 1841)
Memory: 4.0K
CPU: 706us
CGroup: /system.slice/vsftpd.socket
Mär 30 15:52:27 debra.dom1.test systemd[1]: Listening on Open port 21 for FTP.
root@debra:~#
Und schon kann es ans Testen gehen:
root@debra:~# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:tux): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 20 Mar 28 17:11 welcome.txt
226 Directory send OK.
ftp> get welcome.txt
local: welcome.txt remote: welcome.txt
200 EPRT command successful. Consider using EPSV.
150 Opening BINARY mode data connection for welcome.txt (20 bytes).
226 Transfer complete.
20 bytes received in 0.00 secs (14.7740 kB/s)
ftp> by
221 Goodbye.
root@debra:~#
Siehe dazu auch https://mgdm.net/weblog/systemd-socket-activation/
Have a lot of fun!