Vsftpd je jedním z nejbezpečnějších a nejrychlejších FTP serverů pro Linux. Vsftpd je obvykle nakonfigurován pro práci s uživateli systému. Tento dokument popisuje, jak nainstalovat server vsftpd, který místo skutečných systémových uživatelů používá virtuální uživatele z databáze MySQL. To je mnohem výkonnější a umožňuje mít tisíce uživatelů ftp na jednom počítači.
Pro správu databáze MySQL můžete použít webové nástroje jako phpMyAdmin, který bude také nainstalován v tomto návodu. phpMyAdmin je pohodlné grafické rozhraní, které znamená, že se nemusíte potýkat s příkazovým řádkem.
Tento tutoriál je založen na Ubuntu 12.10. Měli byste již mít nastaven základní systém Ubuntu 12.10.
Tento návod je myšlen jako praktický průvodce; nepokrývá teoretická východiska. Jsou zpracovány v mnoha dalších dokumentech na webu.
Tento dokument je dodáván bez jakékoli záruky! Chci říci, že to není jediný způsob, jak takový systém nastavit. Existuje mnoho způsobů, jak tohoto cíle dosáhnout, ale já volím tento způsob. Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 předběžná poznámka
V tomto tutoriálu používám název hostitele server1.example.com s IP adresou 192.168.0.100. Tato nastavení se pro vás mohou lišit, takže je musíte v případě potřeby nahradit.
Protože musíme všechny kroky z tohoto tutoriálu spustit s právy root, můžeme buď před všechny příkazy v tomto tutoriálu přidat řetězec sudo, nebo se staneme rootem hned teď zadáním
sudo su
2 Instalace vsftpd, MySQL a phpMyAdmin
Vsftpd nemá vestavěnou podporu MySQL, proto musíme k ověření proti databázi MySQL použít PAM. Nainstalujeme tedy libpam-mysql kromě vsftpd, MySQL a phpMyAdmin:
apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin libpam-ldap
Budou vám položeny následující otázky:
Nové heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Opakujte heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Webový server pro automatické překonfigurování:<-- apache2
Konfigurovat databázi pro phpmyadmin pomocí dbconfig-common? <-- Ne
Uniformní identifikátor zdroje serveru LDAP: <-- ENTER
Rozlišující název základny vyhledávání: <-- ENTER
Verze LDAP k použití: <-- 3
Nastavit místního kořenového správce databáze: <-- Ano
Vyžaduje databáze LDAP přihlášení? <-- Ne
Účet LDAP pro root: <-- ENTER
Heslo kořenového účtu LDAP: <-- ldaprootpw
3 Vytvoření databáze MySQL pro vsftpd
Nyní vytvoříme databázi s názvem vsftpd a uživatele MySQL s názvem vsftpd, kterého démon vsftpd později použije pro připojení k databázi vsftpd:
mysql -u root -p
VYTVOŘIT DATABÁZI vsftpd;
UDĚLIT VÝBĚR, VLOŽIT, AKTUALIZOVAT, ODSTRANIT, VYTVOŘIT, ZAPNOUT vsftpd.* NA 'vsftpd'@'localhost' IDENTIFIKOVANÉ PODLE 'ftpdpass';
UDĚLIT VÝBĚR, INSERT, AKTUALIZOVAT, DELETE , VYTVOŘIT, ZAPNOUT vsftpd.* NA 'vsftpd'@'localhost.localdomain' IDENTIFIKOVANÉ PODLE 'ftpdpass';
FLUSH PRIVILEGES;
Nahraďte řetězec ftpdpass jakýmkoli heslem, které chcete použít pro uživatele MySQL vsftpd. Stále v prostředí MySQL vytváříme databázovou tabulku, kterou potřebujeme (ano, existuje pouze jedna tabulka!):
USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE =MYISAM;
ukončit;
Jak jste si možná všimli, s ukončením; příkaz opustili jsme prostředí MySQL a jsme zpět v prostředí Linux.
BTW, (předpokládám, že název hostitele vašeho systému ftp serveru je server1.example.com) můžete přistupovat k phpMyAdmin pod http://server1.example.com/phpmyadmin/ (můžete také použít IP adresu místo server1 .example.com) v prohlížeči a přihlaste se jako uživatel vsftpd. Pak se můžete podívat do databáze. Později můžete použít phpMyAdmin ke správě vašeho serveru vsftpd.
4 Konfigurace vsftpd
Nejprve vytvoříme neprivilegovaného uživatele s názvem vsftpd (s homedir /home/vsftpd) patřícího do skupiny nogroup. Pod tímto uživatelem spustíme vsftpd a FTP adresáře našich virtuálních uživatelů budou v adresáři /home/vsftpd (např. /home/vsftpd/user1, /home/vsftpd/user2 atd.).
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Poté vytvoříme zálohu původního souboru /etc/vsftpd.conf a vytvoříme vlastní:
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null> /etc/vsftpd.conf
vi /etc/vsftpd.conf
Soubor by měl mít následující obsah:
poslouchat =YESanonymous_enable =NOlocal_enable =YESwrite_enable =YESlocal_umask =022dirmessage_enable =YESxferlog_enable =YESconnect_from_port_20 =YESnopriv_user =vsftpdchroot_local_user =YESsecure_chroot_dir =/ var / run / vsftpdpam_service_name =vsftpdrsa_cert_file =/etc/ssl/certs/vsftpd.pemguest_enable=YESguest_username=vsftpdlocal_root=/home/vsftpd/$USERuser_sub_token=$USERvirtual_use_local_privs=YESuser_config_dir=/etc/vserfp> |
Možnosti konfigurace jsou vysvětleny na http://vsftpd.beasts.org/vsftpd_conf.html. Důležité možnosti pro naše virtuální nastavení jsou chroot_local_user, guest_enable, guest_username, user_sub_token, local_root a virtual_use_local_privs.
Pomocí volby user_config_dir můžete určit adresář pro konfigurační soubory pro jednotlivé uživatele, které potlačí části globálních nastavení. To je zcela volitelné a je na vás, zda chcete tuto funkci používat. Nyní bychom však měli vytvořit tento adresář:
mkdir /etc/vsftpd_user_conf
Nyní musíme nakonfigurovat PAM tak, aby používal databázi MySQL k ověřování našich virtuálních uživatelů FTP namísto /etc/passwd a /etc/shadow. Konfigurace PAM pro vsftpd je v /etc/pam.d/vsftpd. Vytvoříme zálohu původního souboru a vytvoříme nový takto:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null> /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd
požadováno auth pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2account required pam_mysql .so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |
Ujistěte se prosím, že jste heslo MySQL nahradili svým vlastním!
Poté restartujeme vsftpd:
/etc/init.d/vsftpd restart
5 Vytvoření prvního virtuálního uživatele
K naplnění databáze můžete použít shell MySQL:
mysql -u root -p
USE vsftpd;
Nyní vytvoříme virtuálního uživatele testuser s tajným heslem (které bude uloženo zašifrované pomocí funkce PASSWORD MySQL):
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
quit;
homedir testuser je /home/vsftpd/testuser; bohužel vsftpd nevytvoří tento adresář automaticky, pokud neexistuje. Proto jej nyní vytvoříme ručně a uděláme jej vlastněným uživatelem vsftpd a skupinou nogroup:
mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser
Nyní otevřete svůj FTP klientský program na vaší pracovní stanici (něco jako FileZilla nebo FireFTP) a zkuste se připojit. Jako název hostitele používáte server1.example.com (nebo IP adresu systému), uživatelské jméno je testuser a heslo je tajné.
Pokud jste schopni se připojit - gratulujeme! Pokud ne, něco se pokazilo.
6 Správa databáze
Pro většinu lidí je jednodušší, když mají grafický front-end k MySQL; proto můžete také použít phpMyAdmin (v tomto příkladu pod http://server1.example.com/phpmyadmin/) ke správě databáze vsftpd.
Kdykoli vytváříte nebo upravujete uživatele, ujistěte se, že používáte funkci PASSWORD MySQL k zašifrování hesla tohoto uživatele. Také, když vytváříte nového virtuálního uživatele, nezapomeňte prosím vytvořit homedir tohoto uživatele v shellu, jak je ukázáno na konci předchozí kapitoly.
7 odkazů
- vsftpd:http://vsftpd.beasts.org/
- Ubuntu:http://www.ubuntu.com/