Difference between revisions of "Very Secure FTP Daemon (Česky)"

From ArchWiki
Jump to: navigation, search
(update templates)
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Networking (English)]]
+
[[Category:Networking (Česky)]]
[[Category:HOWTOs (English)]]
+
[[en:Very Secure FTP Daemon]]
{{i18n|Very Secure FTP Daemon}}
+
[[es:Very Secure FTP Daemon]]
 
+
[[it:Very Secure FTP Daemon]]
 +
[[ru:Very Secure FTP Daemon]]
 +
[[zh-CN:Very Secure FTP Daemon]]
 +
{{out of date}}
 
'''vsftpd''' (Very Secure FTP Daemon) je lehký, stabilní a bezpečný FTP server pro UNIX-like systémy.
 
'''vsftpd''' (Very Secure FTP Daemon) je lehký, stabilní a bezpečný FTP server pro UNIX-like systémy.
  
Line 9: Line 12:
 
  # pacman -S vsftpd
 
  # pacman -S vsftpd
  
Připojení povolíte modifikací souboru {{Filename|/etc/hosts.allow}}:
+
Připojení povolíte modifikací souboru {{ic|/etc/hosts.allow}}:
 
  # Povolit všechna připojení
 
  # Povolit všechna připojení
 
  vsftpd: ALL
 
  vsftpd: ALL
Line 18: Line 21:
 
  # /etc/rc.d/vsftpd start
 
  # /etc/rc.d/vsftpd start
  
Pokud chcete spustit vsftpd při startu počítače, přidejte ho do pole DAEMONS v souboru {{Filename|/etc/rc.conf}}.
+
Pokud chcete spustit vsftpd při startu počítače, přidejte ho do pole DAEMONS v souboru {{ic|/etc/rc.conf}}.
  
 
Pokud chcete použít vsftpd s xinetd následujte postup napsaný níže.
 
Pokud chcete použít vsftpd s xinetd následujte postup napsaný níže.
  
 
== Konfigurace ==
 
== Konfigurace ==
Většiny nastavení docílíte editací souboru {{Filename|/etc/vsftpd.conf}}. Soubor je dobře zdokumentovaný, a proto tato sekce poukazuje pouze na některé důležité změny. Pro všechny možnosti a dokumentaci můžete použít man vsftpd.conf (5).
+
Většiny nastavení docílíte editací souboru {{ic|/etc/vsftpd.conf}}. Soubor je dobře zdokumentovaný, a proto tato sekce poukazuje pouze na některé důležité změny. Pro všechny možnosti a dokumentaci můžete použít man vsftpd.conf (5).
  
 
=== Povolení uploadu ===
 
=== Povolení uploadu ===
Pokud chcete povolit změny na souborovém systému, jako například při uploadu, {{Codeline|WRITE_ENABLE}} musíte nastavit na YES v souboru {{Filename|/etc/vsftpd.conf}}:
+
Pokud chcete povolit změny na souborovém systému, jako například při uploadu, {{ic|WRITE_ENABLE}} musíte nastavit na YES v souboru {{ic|/etc/vsftpd.conf}}:
 
  write_enable=YES
 
  write_enable=YES
  
 
=== Přihlašování lokálních uživatelů ===
 
=== Přihlašování lokálních uživatelů ===
Pro povolení přihlašování uživatelů v souboru {{Filename|/etc/passwd}} nastavte tento řádek v souboru {{Filename|/etc/vsftpd.conf}}:
+
Pro povolení přihlašování uživatelů v souboru {{ic|/etc/passwd}} nastavte tento řádek v souboru {{ic|/etc/vsftpd.conf}}:
 
  local_enable=YES
 
  local_enable=YES
  
 
=== Anonymní přihlašování ===
 
=== Anonymní přihlašování ===
Tyto řádky v souboru {{Filename|/etc/vsftpd.conf}} určují, zda se anonymní uživatelé mohou přihlásit:
+
Tyto řádky v souboru {{ic|/etc/vsftpd.conf}} určují, zda se anonymní uživatelé mohou přihlásit:
 
  anonymous_enable=YES # Povolí anonymní přihlášení
 
  anonymous_enable=YES # Povolí anonymní přihlášení
 
  no_anon_password=YES # Nevyžadovat heslo k anonymnímu přihlášení
 
  no_anon_password=YES # Nevyžadovat heslo k anonymnímu přihlášení
Line 40: Line 43:
  
 
=== Prostředí chroot ===
 
=== Prostředí chroot ===
Je možné nastavit prostředí chroot, které uživatelům zamezí opouštění jejich domovského adresáře. Pro povolení zapište následující řádky do souboru {{Filename|/etc/vsftpd.conf}}:
+
Je možné nastavit prostředí chroot, které uživatelům zamezí opouštění jejich domovského adresáře. Pro povolení zapište následující řádky do souboru {{ic|/etc/vsftpd.conf}}:
 
  chroot_list_enable=YES
 
  chroot_list_enable=YES
 
  chroot_list_file=/etc/vsftpd.chroot_list
 
  chroot_list_file=/etc/vsftpd.chroot_list
Proměnná {{Codeline|chroot_list_file}} udává soubor se seznamem uživatelů, kteří jsou uzavřeni do prostředí chroot.
+
Proměnná {{ic|chroot_list_file}} udává soubor se seznamem uživatelů, kteří jsou uzavřeni do prostředí chroot.
  
 
Pro ještě přísnější nastavení můžete použít tyto řádky:
 
Pro ještě přísnější nastavení můžete použít tyto řádky:
 
  chroot_local_user=YES
 
  chroot_local_user=YES
Toto nastavení v základu uzavře lokální uživatele fo prostředí chroot. V tomto případě, soubor udaný proměnnou {{Codeline|chroot_list_file}} obsahuje seznam uživatelů, kteří '''nejsou''' uzavřeni do prostředí chroot.
+
Toto nastavení v základu uzavře lokální uživatele fo prostředí chroot. V tomto případě, soubor udaný proměnnou {{ic|chroot_list_file}} obsahuje seznam uživatelů, kteří '''nejsou''' uzavřeni do prostředí chroot.
  
 
=== Zamezení přihlašování uživatelů ===
 
=== Zamezení přihlašování uživatelů ===
Je možné zamezit uživatelům přístup k FTP serveru přidáním 2 řádek do souboru {{Filename|/etc/vsftpd.conf}}:
+
Je možné zamezit uživatelům přístup k FTP serveru přidáním 2 řádek do souboru {{ic|/etc/vsftpd.conf}}:
 
  userlist_enable=YES
 
  userlist_enable=YES
 
  userlist_file=/etc/vsftpd.user_list
 
  userlist_file=/etc/vsftpd.user_list
{{Codeline|chroot_list_file}} nyní určuje uživatele, kteří se nesmí přihlásit.
+
{{ic|chroot_list_file}} nyní určuje uživatele, kteří se nesmí přihlásit.
  
 
Pokud chcete naopak pouze některým uživatelům povolit přístup, přidejte řádek:
 
Pokud chcete naopak pouze některým uživatelům povolit přístup, přidejte řádek:
 
  userlist_deny=NO
 
  userlist_deny=NO
Soubor určený na řádku {{Codeline|chroot_list_file}} pak obsahuje uřivatele, kteří se mohou přihlásit.
+
Soubor určený na řádku {{ic|chroot_list_file}} pak obsahuje uřivatele, kteří se mohou přihlásit.
  
 
=== Omezení připojení ===
 
=== Omezení připojení ===
Můžete omezit rychlost přenosu dat, počet klientů a počet připojení na jednu IP adresu pro lokální uživatele, přidáním těchto řádek do souboru {{Filename|/etc/vsftpd.conf}}:
+
Můžete omezit rychlost přenosu dat, počet klientů a počet připojení na jednu IP adresu pro lokální uživatele, přidáním těchto řádek do souboru {{ic|/etc/vsftpd.conf}}:
 
  local_max_rate=1000000 # Maximální rychlost přenosu dat v bytech za sekundu
 
  local_max_rate=1000000 # Maximální rychlost přenosu dat v bytech za sekundu
 
  max_clients=50        # Maximální počet klientů, kteří mohou být připojeni
 
  max_clients=50        # Maximální počet klientů, kteří mohou být připojeni
Line 66: Line 69:
  
 
=== Použití xinetd ===
 
=== Použití xinetd ===
Pokud chcete použít vsftpd s xinetd, přidejte následující řádky do souboru {{Filename|/etc/xinetd.d/vsftpd}}:
+
Pokud chcete použít vsftpd s xinetd, přidejte následující řádky do souboru {{ic|/etc/xinetd.d/vsftpd}}:
 
<pre>
 
<pre>
 
service ftp
 
service ftp
Line 80: Line 83:
 
</pre>
 
</pre>
  
Tyto volby by měly být nastaveny v souboru {{Filename|/etc/vsftpd.conf}}:
+
Tyto volby by měly být nastaveny v souboru {{ic|/etc/vsftpd.conf}}:
 
  tcp_wrappers=YES        # Použít tcp_wrappers ke správě připojení. Poté povolit v hosts.allow
 
  tcp_wrappers=YES        # Použít tcp_wrappers ke správě připojení. Poté povolit v hosts.allow
 
  pam_service_name=vsftpd
 
  pam_service_name=vsftpd
  
Poté se ujistěte, že je vsftpd povolen pro IP adresy, které se mají připojovat k serveru, v souboru {{Filename|/etc/hosts.allow}}:
+
Poté se ujistěte, že je vsftpd povolen pro IP adresy, které se mají připojovat k serveru, v souboru {{ic|/etc/hosts.allow}}:
 
<pre>
 
<pre>
 
vsftpd: ALL
 
vsftpd: ALL
 
</pre>
 
</pre>
  
Nakonec přidejte xinetd do pole DAEMONS v souboru {{Filename|/etc/rc.conf}}. Není třeba přidávat vsftpd, neboť bude spuštěn utilitou xinetd kdykoliv bude třeba.
+
Nakonec přidejte xinetd do pole DAEMONS v souboru {{ic|/etc/rc.conf}}. Není třeba přidávat vsftpd, neboť bude spuštěn utilitou xinetd kdykoliv bude třeba.
  
 
Pokud při připojování k serveru dostáváte chybová hlášení jako toto:
 
Pokud při připojování k serveru dostáváte chybová hlášení jako toto:
 
  500 OOPS: cap_set_proc
 
  500 OOPS: cap_set_proc
Je třeba přidat ''capability'' do pole MODULES= v souboru {{Filename|/etc/rc.conf}}.
+
Je třeba přidat ''capability'' do pole MODULES= v souboru {{ic|/etc/rc.conf}}.
  
 
Po přejití na verzi 2.1.0 můžete dostávát během připojování chybová hlášení jako toto:
 
Po přejití na verzi 2.1.0 můžete dostávát během připojování chybová hlášení jako toto:
Line 115: Line 118:
 
Vložte kolik virtuálních uživatelů potřebujete, jen je třeba zachovat strukturu souboru. Seznam uložte jako logins.txt; na názvu souboru nezáleží. Další krok závisí na databázovém systému Berkeley, který je zahrnutý v základním systému Arch. Jako uživatel root vytvořte databázi ze souboru login.txt (nebo jak jste ho pojmenovali):
 
Vložte kolik virtuálních uživatelů potřebujete, jen je třeba zachovat strukturu souboru. Seznam uložte jako logins.txt; na názvu souboru nezáleží. Další krok závisí na databázovém systému Berkeley, který je zahrnutý v základním systému Arch. Jako uživatel root vytvořte databázi ze souboru login.txt (nebo jak jste ho pojmenovali):
 
  # db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
 
  # db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
Je vhodné omezit oprávnění k nově vzniklému souboru {{Filename|vsftpd_login.db}}:
+
Je vhodné omezit oprávnění k nově vzniklému souboru {{ic|vsftpd_login.db}}:
 
  # chmod 600 /etc/vsftpd_login.db
 
  # chmod 600 /etc/vsftpd_login.db
{{Warning|Ukládání hesel v čistém textu není bezpečné, proto nezapomeňte smazat dočasný soubor tímto příkazem {{codeline|rm logins.txt}}.}}
+
{{Warning|Ukládání hesel v čistém textu není bezpečné, proto nezapomeňte smazat dočasný soubor tímto příkazem {{ic|rm logins.txt}}.}}
PAM should now be set to make use of vsftpd_login.db. To make PAM check for user authentication create a file named ftp in the {{Filename|/etc/pam.d/}} directory with the following information:
+
Nyní je třeba zajistit aby PAM byl schopný uživatele identifikovat podle vsftpd_login.db. K docílení tohoto stavu je třeba vytvořit soubor s názvem ftp v adresáři {{ic|/etc/pam.d/}}, který obsahuje tyto volby:
 
  auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash  
 
  auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash  
 
  account required pam_userdb.so db=/etc/vsftpd_login crypt=hash
 
  account required pam_userdb.so db=/etc/vsftpd_login crypt=hash
{{Note|We use /etc/vsftpd_login without .db extension in PAM-config!}}
+
{{Note|Při nastavování PAM je použit /etc/vsftpd_login bez přípony .db!}}
Now it is time to create a home for the virtual users. In the example {{Filename|/srv/ftp}} is decided to host data for virtual users, which also reflects the default directory structure of Arch. First create the general user virtual and make {{Filename|/srv/ftp}} its home:
+
Dále je třeba vytvořit domovské adresáře pro virtuální uživatele. Pro příklad můžete použít adresář {{ic|/srv/ftp}} pro hosting dat virtuálních uživatelů. Tento příklad také respektuje základní adresářovou strukturu systému Arch. Nejdříve tedy vytvořte uživatele virtual a učiňte {{ic|/srv/ftp}} jeho domovským adresářem:
 
  # useradd -d /srv/ftp virtual
 
  # useradd -d /srv/ftp virtual
Make virtual the owner:
+
Učiňte uživatele virtual vlastníkem:
 
  # chown virtual:virtual /srv/ftp
 
  # chown virtual:virtual /srv/ftp
Configure vsftpd to use the created environment by editing /etc/vsftpd.conf. These are the necessary settings to make vsftpd restrict access to virtual users, by user-name and password, and restrict their access to the specified area {{Filename|/srv/ftp}}:
+
Nastavte vsftpd, aby využíval právě vytvořené prostředí, v souboru /etc/vsftpd.conf. Toto je nezbytné nastavení, které omezí přístup pouze na virtuální uživatele, kteří se boudou moci přihlásit pod svým uživatelským jménem a heslem a omezí jejich přístup pouze na adresář {{ic|/srv/ftp}}:
 
  anonymous_enable=NO
 
  anonymous_enable=NO
 
  local_enable=YES
 
  local_enable=YES
Line 133: Line 136:
 
  guest_username=virtual
 
  guest_username=virtual
 
  virtual_use_local_privs=YES
 
  virtual_use_local_privs=YES
If the xinetd method is used start the service. You should now only be allowed to login by user-name and password according to the made database.
+
Pokud je použita metoda, kdy xinetd spouští službu, vsftpd by měl povolit přístup pouze po přihlášení kombinací uživatelského jména a hesla, která byla definována v databázi.
  
 
==== Přidání soukromých adresářů pro virtuální uživatelské účty ====
 
==== Přidání soukromých adresářů pro virtuální uživatelské účty ====
Line 141: Line 144:
 
  # chown virtual:virtual /srv/ftp/user?/
 
  # chown virtual:virtual /srv/ftp/user?/
  
Poté přidejte následující řádky do souboru {{Filename|/etc/vsftpd.conf}}:
+
Poté přidejte následující řádky do souboru {{ic|/etc/vsftpd.conf}}:
 
  local_root=/srv/ftp/$USER
 
  local_root=/srv/ftp/$USER
 
  user_sub_token=$USER
 
  user_sub_token=$USER

Revision as of 10:08, 7 December 2013

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Very Secure FTP Daemon (Česky)#)

vsftpd (Very Secure FTP Daemon) je lehký, stabilní a bezpečný FTP server pro UNIX-like systémy.

Instalace

Vsftpd je začleněn do oficiálního repozitáře. Instalovat můžete např. pomocí utility pacman:

# pacman -S vsftpd

Připojení povolíte modifikací souboru /etc/hosts.allow:

# Povolit všechna připojení
vsftpd: ALL
# Omezit na určený rozsah IP adres
vsftpd: 10.0.0.0/255.255.255.0

Server můžete spustit tímto skriptem:

# /etc/rc.d/vsftpd start

Pokud chcete spustit vsftpd při startu počítače, přidejte ho do pole DAEMONS v souboru /etc/rc.conf.

Pokud chcete použít vsftpd s xinetd následujte postup napsaný níže.

Konfigurace

Většiny nastavení docílíte editací souboru /etc/vsftpd.conf. Soubor je dobře zdokumentovaný, a proto tato sekce poukazuje pouze na některé důležité změny. Pro všechny možnosti a dokumentaci můžete použít man vsftpd.conf (5).

Povolení uploadu

Pokud chcete povolit změny na souborovém systému, jako například při uploadu, WRITE_ENABLE musíte nastavit na YES v souboru /etc/vsftpd.conf:

write_enable=YES

Přihlašování lokálních uživatelů

Pro povolení přihlašování uživatelů v souboru /etc/passwd nastavte tento řádek v souboru /etc/vsftpd.conf:

local_enable=YES

Anonymní přihlašování

Tyto řádky v souboru /etc/vsftpd.conf určují, zda se anonymní uživatelé mohou přihlásit:

anonymous_enable=YES # Povolí anonymní přihlášení
no_anon_password=YES # Nevyžadovat heslo k anonymnímu přihlášení
anon_max_rate=30000  # Maximální rychlost přenosu anonymními uživateli v bytech za sekundu

Prostředí chroot

Je možné nastavit prostředí chroot, které uživatelům zamezí opouštění jejich domovského adresáře. Pro povolení zapište následující řádky do souboru /etc/vsftpd.conf:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Proměnná chroot_list_file udává soubor se seznamem uživatelů, kteří jsou uzavřeni do prostředí chroot.

Pro ještě přísnější nastavení můžete použít tyto řádky:

chroot_local_user=YES

Toto nastavení v základu uzavře lokální uživatele fo prostředí chroot. V tomto případě, soubor udaný proměnnou chroot_list_file obsahuje seznam uživatelů, kteří nejsou uzavřeni do prostředí chroot.

Zamezení přihlašování uživatelů

Je možné zamezit uživatelům přístup k FTP serveru přidáním 2 řádek do souboru /etc/vsftpd.conf:

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list

chroot_list_file nyní určuje uživatele, kteří se nesmí přihlásit.

Pokud chcete naopak pouze některým uživatelům povolit přístup, přidejte řádek:

userlist_deny=NO

Soubor určený na řádku chroot_list_file pak obsahuje uřivatele, kteří se mohou přihlásit.

Omezení připojení

Můžete omezit rychlost přenosu dat, počet klientů a počet připojení na jednu IP adresu pro lokální uživatele, přidáním těchto řádek do souboru /etc/vsftpd.conf:

local_max_rate=1000000 # Maximální rychlost přenosu dat v bytech za sekundu
max_clients=50         # Maximální počet klientů, kteří mohou být připojeni
max_per_ip=2           # Maximální počet připojení na jednu IP adresu

Použití xinetd

Pokud chcete použít vsftpd s xinetd, přidejte následující řádky do souboru /etc/xinetd.d/vsftpd:

service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
        log_on_success  += HOST DURATION
        log_on_failure  += HOST
        disable                 = no
}

Tyto volby by měly být nastaveny v souboru /etc/vsftpd.conf:

tcp_wrappers=YES        # Použít tcp_wrappers ke správě připojení. Poté povolit v hosts.allow
pam_service_name=vsftpd

Poté se ujistěte, že je vsftpd povolen pro IP adresy, které se mají připojovat k serveru, v souboru /etc/hosts.allow:

vsftpd: ALL

Nakonec přidejte xinetd do pole DAEMONS v souboru /etc/rc.conf. Není třeba přidávat vsftpd, neboť bude spuštěn utilitou xinetd kdykoliv bude třeba.

Pokud při připojování k serveru dostáváte chybová hlášení jako toto:

500 OOPS: cap_set_proc

Je třeba přidat capability do pole MODULES= v souboru /etc/rc.conf.

Po přejití na verzi 2.1.0 můžete dostávát během připojování chybová hlášení jako toto:

500 OOPS: could not bind listening IPv4 socket

V předešlých verzích stačilo nechat tyto řádky zakomentované:

# Toto použijte k nastavení vsftpd do samostatného módu nebo vsftpd bude fungovat s (x)inetd
# listen=YES

V této verzi, a nejspíše i v budoucích, je třeba explicitně nastavit vsftpd, aby neběžel v samostatném módu:

# Toto použijte k nastavení vsftpd do samostatného módu nebo vsftpd bude fungovat s (x)inetd
listen=NO

Tipy a triky

PAM s virtuálními uživatelskými účty

Používání virtuálních uživatelů přináší výhodu v nevyžadování reálného uživatelského účtu v systému. Keeping the environment in a container is of course a more secure option.

Pro vytvoření databáze uživatelů, je nejdříve třeba vytvořit jednoduchý textový soubor, jako například tento:

uživatel1
heslo1
uživatel2
heslo2

Vložte kolik virtuálních uživatelů potřebujete, jen je třeba zachovat strukturu souboru. Seznam uložte jako logins.txt; na názvu souboru nezáleží. Další krok závisí na databázovém systému Berkeley, který je zahrnutý v základním systému Arch. Jako uživatel root vytvořte databázi ze souboru login.txt (nebo jak jste ho pojmenovali):

# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

Je vhodné omezit oprávnění k nově vzniklému souboru vsftpd_login.db:

# chmod 600 /etc/vsftpd_login.db
Warning: Ukládání hesel v čistém textu není bezpečné, proto nezapomeňte smazat dočasný soubor tímto příkazem rm logins.txt.

Nyní je třeba zajistit aby PAM byl schopný uživatele identifikovat podle vsftpd_login.db. K docílení tohoto stavu je třeba vytvořit soubor s názvem ftp v adresáři /etc/pam.d/, který obsahuje tyto volby:

auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash 
account required pam_userdb.so db=/etc/vsftpd_login crypt=hash
Note: Při nastavování PAM je použit /etc/vsftpd_login bez přípony .db!

Dále je třeba vytvořit domovské adresáře pro virtuální uživatele. Pro příklad můžete použít adresář /srv/ftp pro hosting dat virtuálních uživatelů. Tento příklad také respektuje základní adresářovou strukturu systému Arch. Nejdříve tedy vytvořte uživatele virtual a učiňte /srv/ftp jeho domovským adresářem:

# useradd -d /srv/ftp virtual

Učiňte uživatele virtual vlastníkem:

# chown virtual:virtual /srv/ftp

Nastavte vsftpd, aby využíval právě vytvořené prostředí, v souboru /etc/vsftpd.conf. Toto je nezbytné nastavení, které omezí přístup pouze na virtuální uživatele, kteří se boudou moci přihlásit pod svým uživatelským jménem a heslem a omezí jejich přístup pouze na adresář /srv/ftp:

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES

Pokud je použita metoda, kdy xinetd spouští službu, vsftpd by měl povolit přístup pouze po přihlášení kombinací uživatelského jména a hesla, která byla definována v databázi.

Přidání soukromých adresářů pro virtuální uživatelské účty

Nejdříve vytvořte složky pro uživatele:

# mkdir /srv/ftp/user1
# mkdir /srv/ftp/user2
# chown virtual:virtual /srv/ftp/user?/

Poté přidejte následující řádky do souboru /etc/vsftpd.conf:

local_root=/srv/ftp/$USER
user_sub_token=$USER

Další zdroje