{"id":7770,"date":"2012-05-29T17:22:37","date_gmt":"2012-05-29T15:22:37","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=7770"},"modified":"2019-10-06T01:28:28","modified_gmt":"2019-10-05T23:28:28","slug":"vsftpd-und-openarena-konfiguration-eines-sicheren-ftp-servers-mit-ausschlieslich-anonymen-zugang","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/05\/29\/vsftpd-und-openarena-konfiguration-eines-sicheren-ftp-servers-mit-ausschlieslich-anonymen-zugang\/","title":{"rendered":"vsftpd und OpenArena: Konfiguration eines sicheren FTP-Servers mit ausschlie\u00dflich anonymen Zugang"},"content":{"rendered":"<p>Vor kurzem ergab sich die Gelegenheit einen FTP-Server aufzusetzen. F\u00fcr ein anderes Vorhaben abseits von <a href=\"http:\/\/linuxiuvat.de\">linuxiuvat.de<\/a> brauchte ich zuerst nur einen OpenVPN-Server, da aber noch ausreichend Leistung zur Verf\u00fcgung stand, installierte ich zus\u00e4tzlich noch <a href=\"https:\/\/security.appspot.com\/vsftpd.html\">vsftpd<\/a>.<\/p>\n<p>Der FTP-Server eignet sich ideal, um PAK3-Dateien von meinem OpenArena-Server herunterladen zu k\u00f6nnen. Falls der Spiel-Client nicht kompatibel sein sollte, wird der Client automatisch beim Verbinden zum FTP-Server umgeleitet und l\u00e4dt von dort Patches, Karten, Texturen und neue Sounds herunter.<\/p>\n<h2>Installation und Konfiguration<\/h2>\n<p>Vsftpd ist stark konfigurierbar und beherrscht noch viele weitere Optionen, die mit <strong>man vsftpd.conf<\/strong> einsehbar sind. Ein sicherer anonymer Zugang zum Herunterladen ohne Berechtigungen zum Dateiupload, l\u00e4sst sich mit wenigen Handgriffen so verwirklichen.<\/p>\n<p><code>aptitude install vsftpd<\/code><br \/>\n<code>dpkg-reconfigure vsftpd<\/code><\/p>\n<p><code><\/code><br \/>\nMit Hilfe von DebConf wird der FTP-Benutzer und das FTP-Wurzelverzeichnis festgelegt.<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Den Systembenutzer \"ftp\" f\u00fcr vsftpd einrichten.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_11-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-7774 size-medium\" title=\"120528_vsftpd_debconf_1\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_11-1-300x170.png\" alt=\"\" width=\"300\" height=\"170\" srcset=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_11-1-300x170.png 300w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_11-1-768x435.png 768w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_11-1.png 960w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Das FTP-Wurzelverzeichnis definieren, aus dem der anonyme Benutzer nicht wechseln kann.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_21-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-7775 size-medium\" title=\"120528_vsftpd_debconf_2\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_21-1-300x170.png\" alt=\"\" width=\"300\" height=\"170\" srcset=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_21-1-300x170.png 300w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_21-1-768x435.png 768w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/05\/120528_vsftpd_debconf_21-1.png 960w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Die Standardeinstellungen kann man hier problemlos beibehalten.<br \/>\nDie weitere Konfiguration befindet sich in <em>\/etc\/vsftpd.conf<\/em>. Im Prinzip halten sich auch hier die Ver\u00e4nderungen in Grenzen. An dieser Stelle dokumentiere ich nur die Ver\u00e4nderungen zur Standardinstallation mit Debian Squeeze.<\/p>\n<h3>nopriv_user=ftpsecure<\/h3>\n<p>Vsftpd verwendet einen weiteren unpriviliegerten und vollkommen isolierten Systembenutzer. In der Standardeinstellung ist das \"nobody\". Da dieser auch f\u00fcr andere Dienste oft verwendet wird, empfiehlt es sich aus Sicherheitsgr\u00fcnden noch einen weiteren, einzigartigen Systembenutzer anzulegen, z.B. ftpsecure.<\/p>\n<p><code>adduser --system --no-create-home --disabled-login ftpsecure<\/code><\/p>\n<p><code><\/code><br \/>\nDer FTP-Server wird zwar mit Root-Rechten gestartet, sobald aber eine Verbindung mit dem Client hergestellt wird, startet der Kindprozess mit den unpriviliegerten Rechten von ftpsecure und ftp.<\/p>\n<blockquote><p># Die Dateiberechtigungen sollen f\u00fcr den anonymen Benutzer immer mit ftp:ftp angezeigt werden<br \/>\nhide_ids=YES<br \/>\n# Das FTP-Wurzelverzeichnis l\u00e4sst sich mit dieser Variable \u00e4ndern, wenn man<br \/>\n# nicht auf die DebConf-Methode zur\u00fcckgreifen m\u00f6chte.<br \/>\n# anon_root=\/home\/ftpsecure<br \/>\n# Maximale Anzahl an erlaubten gleichzeitigen Verbindungen. Entspricht bei<br \/>\n# mir der maximal m\u00f6glichen Anzahl von Spielern auf dem OpenArena-Server.<br \/>\nmax_clients=16<br \/>\n# Wieviele Verbindungen pro IP sind erlaubt<br \/>\nmax_per_ip=4<\/p><\/blockquote>\n<p>Die gesamte vsftpd.conf sieht in meinem Fall so aus.<\/p>\n<blockquote><p>listen=YES<br \/>\nanonymous_enable=YES<br \/>\ndirmessage_enable=YES<br \/>\nuse_localtime=YES<br \/>\nxferlog_enable=YES<br \/>\nconnect_from_port_20=YES<br \/>\nnopriv_user=ftpsecure<br \/>\nftpd_banner=Welcome to another FTP service.<br \/>\nsecure_chroot_dir=\/var\/run\/vsftpd\/empty<br \/>\npam_service_name=vsftpd<br \/>\nrsa_cert_file=\/etc\/ssl\/private\/vsftpd.pem<br \/>\nhide_ids=YES<br \/>\nmax_clients=16<br \/>\nmax_per_ip=4<\/p><\/blockquote>\n<p>Abschlie\u00dfend l\u00e4sst sich mit <code>mount --bind<\/code> das Datenverzeichnis von OpenArena noch einmal im FTP-Wurzelverzeichnis im Unterordner <em>\/oa\/baseoa<\/em> nur lesbar einh\u00e4ngen. Um die Ver\u00e4nderung dauerhaft zu behalten, kann der Vorgang auch in <em>\/etc\/fstab<\/em> festgeschrieben werden.<\/p>\n<pre>\/usr\/share\/games\/openarena\/baseoa       \/srv\/ftp\/oa\/baseoa      none     ro,bind        0       0<\/pre>\n<p>Nach diesem Schema lassen sich weitere Verzeichnisse nur lesbar im FTP-Wurzelverzeichnis einh\u00e4ngen.<\/p>\n<h2>Einstellungen f\u00fcr OpenArena<\/h2>\n<p>In der server.cfg von OpenArena kann man festlegen, ob der Download von Dateien erlaubt ist oder nicht.<\/p>\n<blockquote><p>sets sv_allowdownload 1<\/p><\/blockquote>\n<p>Ist das Herunterladen wie in diesem Fall mit 1 gestattet, wird mit <em>sv_dlURL<\/em> bestimmt, von welchem Web- oder FTP-Server der Client die Dateien beziehen soll, sofern sich seine Version von der des Servers unterscheidet. Der Vorgang ist auch als Fast Download bekannt und ein Feature, dass nach der Ver\u00f6ffentlichung des Quellcodes von Quake3 hinzugef\u00fcgt worden ist.<\/p>\n<blockquote><p>sv_dlURL \"ftp:\/\/123.123.123.123\/oa\"<\/p><\/blockquote>\n<p>Dabei kann man den letzten Schr\u00e4gstrich nach dem Verzeichnis \"oa\" weglassen, da er automatisch durch den OpenArena-Server gesetzt wird. Im Verzeichnis \"oa\" auf dem FTP-Server muss das Unterverzeichnis baseoa erstellt werden, welches wiederum die PAK3-Dateien zum Spielen enth\u00e4lt.<br \/>\nGibt man keine URL zum Herunterladen an, liefert der OpenArena-Server die Dateien nach der alten Quake3-Methode selbst aus, was sehr lange dauern kann. In neueren Versionen der ioquake3-Engine gibt es die M\u00f6glichkeit eine neue Variable zu definieren, welche die Download-Geschwindigkeit erh\u00f6ht. Folgender Wert setzt diese auf 100 Kb\/s pro Client fest.<\/p>\n<blockquote><p>sv_dlRate \"100\"<\/p><\/blockquote>\n<p><strong>Wichtig<\/strong><br \/>\nWer bei Debian und Ubuntu einzelne Custom Maps zum Download anbieten m\u00f6chte, muss diese bei OpenArena 0.8.8 im versteckten Verzeichnis <em>\/var\/games\/openarena\/.openarena\/baseoa<\/em> ablegen, wo sich auch die server.cfg befinden kann, wenn man sich nicht f\u00fcr <em>\/etc\/openarena-server\/<\/em> entschieden hat. Auf dem FTP-Server hingegen ver\u00e4ndert sich nichts und alle PAK3-Dateien liegen weiterhin im Verzeichnis baseoa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vor kurzem ergab sich die Gelegenheit einen FTP-Server aufzusetzen. F\u00fcr ein anderes Vorhaben abseits von linuxiuvat.de brauchte ich zuerst nur einen OpenVPN-Server, da aber noch ausreichend Leistung zur Verf\u00fcgung stand, installierte ich zus\u00e4tzlich noch vsftpd. Der FTP-Server eignet sich ideal, um PAK3-Dateien von meinem OpenArena-Server herunterladen zu k\u00f6nnen. Falls der Spiel-Client nicht kompatibel sein sollte, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/05\/29\/vsftpd-und-openarena-konfiguration-eines-sicheren-ftp-servers-mit-ausschlieslich-anonymen-zugang\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201evsftpd und OpenArena: Konfiguration eines sicheren FTP-Servers mit ausschlie\u00dflich anonymen Zugang\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,108,144,218],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7770"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=7770"}],"version-history":[{"count":2,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7770\/revisions"}],"predecessor-version":[{"id":10686,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7770\/revisions\/10686"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=7770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=7770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=7770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}