{"id":14,"date":"2006-03-16T08:00:57","date_gmt":"2006-03-16T07:00:57","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=14"},"modified":"2007-06-19T15:45:31","modified_gmt":"2007-06-19T13:45:31","slug":"howto-pureftpd-puredb","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2006\/03\/16\/howto-pureftpd-puredb\/","title":{"rendered":"PureFTPd und PureDB Authentifikation"},"content":{"rendered":"<p>FTP Server, welche \u00f6ffentlich gen\u00fctzt werden sollten nicht mit Systemusern laufen. Auf einem Linux-Host ist meist ein SSHd vorhanden, dessen Benutzung nicht immer erw\u00fcnscht ist. Aus diesem Grund legt man virtuelle User an, die nicht am System vorhanden sind. So ist es u.a. auch m\u00f6glich verschiedene Passw\u00f6rter am System zu verwenden &#8211; was auch die Sicherheit erh\u00f6ht.<\/p>\n<p>Man mag einwerfen, dass man MySQL oder LDAP als Backend f\u00fcr die Benutzerverwaltung verwenden k\u00f6nne, nur sollte man dabei im Hinterkopf behalten, dass man damit von diesen Diensten abh\u00e4ngig ist.<\/p>\n<p><strong>Ziele dieser Anleitung:<\/strong><\/p>\n<ul>\n<li>Virtuelle User, keine Systemuser<\/li>\n<li>Chroots<\/li>\n<li>Anonymer Zugriff mit Upload-M&ouml;glichkeit<\/li>\n<li>Warez-Trader aussperren<\/li>\n<\/ul>\n<p><strong>Installation der n\u00f6tigen Pakete<\/strong><!--more--><br \/>\nDa ich Gentoo-Linux benutze ist dieser Schritt sehr einfach:<\/p>\n<h5>\u00dcberpr\u00fcfung der entsprechenden USE-Flags:<\/h5>\n<blockquote><p><code>ssl - Secure Socket Layer Unterst\u00fctzung<br \/>\ncaps - Linux capabilities library verwenden (Berechtigungen)<br \/>\nldap - LDAP Unterst\u00fctzung<br \/>\nmysql - mySQL Unterst\u00fctzung<br \/>\npam - PAM verwenden (Pluggable Authentication Modules)<br \/>\npostgres - postgresql Unterst\u00fctzung<br \/>\nvchroot - Virtual chroots (security risc?)<\/code><\/p><\/blockquote>\n<p>Die entsprechenden USE-Flags sollten &#8211; sofern sie globale Flags sind in der <em>make.conf<\/em> gesetzt werden. Paketspezifische Flags setzen wir in <em>\/etc\/portage\/package.use<\/em><\/p>\n<p>Ich verwende f\u00fcr meine Installation &#8222;ssl caps -ldap -mysql -pam -postgres&#8220;. Durch das Entfernen der unn\u00f6tigen Flags bekommen wir eine schlankere Binary, was sich positiv auf die Performance des Systems auswirkt.<\/p>\n<blockquote><p><code>emerge -av pure-ftpd<\/code><\/p><\/blockquote>\n<p>Damit w\u00e4re der Teil der Installation f\u00fcr uns so weit abgeschlossen und wir k\u00f6nnen zur Konfiguration schreiten.<\/p>\n<h4>Konfiguration des Services<\/h4>\n<p>Die eigentliche Konfiguration des Systems findet (unter Gentoo Linux) in <em> \/etc\/conf.d\/pure-ftpd<\/em> statt.<\/p>\n<blockquote><p><code><br \/>\n##Config file for \/etc\/init.d\/pure-ftpd<br \/>\n##Comment variables out to disable its features, or change the values in it... ##<\/p>\n<p>IS_CONFIGURED=\"no\"<\/p>\n<p>## FTP Server,Port (separated by comma) ##<br \/>\n## If you prefer host names over IP addresses, it's your choice :<br \/>\n## SERVER=\"-S ftp.rtchat.com,21\"<br \/>\n## IPv6 addresses are supported.<br \/>\n## !!! WARNING !!!<br \/>\n## Using an invalid IP will result in server not starting and reporting<br \/>\n## a good start. Work is being done to solve that in:<br \/>\n## http:\/\/bugs.gentoo.org\/show_bug.cgi?id=75861<br \/>\n#SERVER=\"-S 192.168.0.1,21\"<br \/>\nSERVER=\"-S 21\"<\/p>\n<p>## Number of simultaneous connections in total, and per ip ##<br \/>\nMAX_CONN=\"-c 30\"<br \/>\nMAX_CONN_IP=\"-C 3\"<\/p>\n<p>## Start daemonized in background ##<br \/>\nDAEMON=\"-B\"<\/p>\n<p>## Don't allow uploads if the partition is more full then this var ##<br \/>\nDISK_FULL=\"-k 75%\"<\/p>\n<p>## If your FTP server is behind a NAT box, uncomment this ##<br \/>\n#USE_NAT=\"-N\"<\/p>\n<p>## Authentication (others are 'pam', ...)##<br \/>\n## Further infos in the README file.<br \/>\nAUTH=\"-l puredb:\/etc\/pureftpd.pdb\"<\/p>\n<p>## Change the maximum idle time. (in minutes. default 15)<br \/>\n#TIMEOUT=\"-I 15\"<\/p>\n<p>## Use that facility for syslog logging. It defaults to 'ftp'<br \/>\n## Logging can be disabled with '-f none' .<br \/>\n#LOG=\"-f facility\"<\/p>\n<p>## Misc. Others ##<br \/>\nMISC_OTHER=\"-A -x -j -R -r -s -Z\"<\/p>\n<p>#<br \/>\n# Use these inside $MISC_OTHER<br \/>\n# More can be found on \"http:\/\/pureftpd.sourceforge.net\/README\"<br \/>\n#<br \/>\n# -A [ chroot() everyone, but root ]<br \/>\n# -e [ Only allow anonymous users ]<br \/>\n# -E [ Only allow authenticated users. Anonymous logins are prohibited. ]<br \/>\n# -i [ Disallow upload for anonymous users, whatever directory perms are ]<br \/>\n# -j [ If the home directory of a user doesn't exist, auto-create it ]<br \/>\n# -M [ Allow anonymous users to create directories. ]<br \/>\n# -R [ Disallow users (even non-anonymous ones) usage of the CHMOD command ]<br \/>\n# -x [ In  normal  operation mode, authenticated users can read\/write<br \/>\n#       files beginning with a dot ('.'). Anonymous users can't, for security reasons<br \/>\n#       (like changing banners or a forgotten .rhosts). When '-x' is used, authenticated<br \/>\n#       users can download dot-files, but not overwrite\/create  them,  even  if they own<br \/>\n#       them. ]<br \/>\n# -X [ This  flag  is  identical  to  the  previous one (writing dot-files is prohibited), but in addition, users can't even *read* files and<br \/>\n#       directories beginning with a dot (like \"cd .ssh\"). ]<br \/>\n# -D [ List files beginning with a dot ('.') even when the client doesn't<br \/>\n#      append the '-a' option to the list command. A workaround for badly<br \/>\n#      configured FTP clients. ]<br \/>\n# -G [ Disallow renaming. ]<br \/>\n# -d [ Send various debugging messages to the syslog. ONLY for DEBUG ]<br \/>\n# -H [ By default, fully-qualified host names are logged. The '-H' flag avoids host names resolution. ]<br \/>\n<\/code><\/p><\/blockquote>\n<p>Jetzt wo du die Config gelesen hast kannst du IS_CONFIGURED auf &#8222;yes&#8220; setzen, damit der Server startet. Diese Option sollte verhindern dass man einen unkonfigurierten Server online nimmt, was einem oftmals ungeahnte Probleme bereiten kann.<\/p>\n<h4>Anlegen der Benutzer<\/h4>\n<p>Zu allererst ben&ouml;tigen wir eine Datenbank in welche die Benutzerdaten eingetragen werden. Diese generieren wir mit dem pure-pw Tool:<\/p>\n<blockquote><p><code>pure-pw mkdb<\/code><\/p><\/blockquote>\n<p>Durch diesen Befehl werden die Dateien \/etc\/pureftpd.pdb und \/etc\/pureftpd.passwd angelegt. Erstere ist davon unsere Datenbank mit den Passw&ouml;rtern. Um einen User anzulegen muss man dieser Datenbank einen Eintrag hinzuf&uuml;gen:<\/p>\n<blockquote><p><code>pure-pw useradd $USER \/etc\/pureftpd.pdb -u 100 -g 100 -d \/path\/to\/homedir<\/code><\/p><\/blockquote>\n<p>Die angelegten User anzeigen geht mit folgendem Command:<\/p>\n<blockquote><p><code>pure-pw list -f \/etc\/pureftpd.pdb<\/code><\/p><\/blockquote>\n<p>Nun steht dem Serverstart nichts mehr im Wege, welchen wir mit <em>\/etc\/init.d\/pure-ftpd start<\/em> durchf&uuml;hren um die Installation testen zu k&ouml;nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FTP Server, welche \u00f6ffentlich gen\u00fctzt werden sollten nicht mit Systemusern laufen. Auf einem Linux-Host ist meist ein SSHd vorhanden, dessen Benutzung nicht immer erw\u00fcnscht ist. Aus diesem Grund legt man virtuelle User an, die nicht am System vorhanden sind. So ist es u.a. auch m\u00f6glich verschiedene Passw\u00f6rter am System zu verwenden &#8211; was auch die Sicherheit erh\u00f6ht. Man [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[196],"class_list":["post-14","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-pureftpd"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}