Поиск по сайту:

Как установить и настроить FTP-сервер в Ubuntu


FTP (Протокол передачи файлов) — относительно старый и наиболее часто используемый стандартный сетевой протокол, используемый для загрузки/выгрузки файлов между двумя компьютерами по сети. Однако FTP по своей сути небезопасен, поскольку он передает данные вместе с учетными данными пользователя (имя пользователя и пароль) без шифрования.

Внимание. Если вы планируете использовать FTP, рассмотрите возможность настройки FTP-соединения с помощью SSL/TLS (о чем будет рассказано далее). следующая статья). В противном случае всегда лучше использовать безопасный FTP, например SFTP.

Рекомендуется к прочтению: Как установить и защитить FTP-сервер в CentOS 7

В этом руководстве мы покажем, как установить, настроить и защитить FTP-сервер (VSFTPD в полной версии «Very Secure FTP Daemon») в Ubuntu обеспечивает мощную защиту от уязвимостей FTP.

Шаг 1. Установка VsFTP-сервера в Ubuntu

1. Сначала нам нужно обновить список источников системных пакетов, а затем установить двоичный пакет VSFTPD следующим образом:

sudo apt-get update
sudo apt-get install vsftpd

2. После завершения установки служба изначально будет отключена, поэтому нам необходимо на время запустить ее вручную, а также включить автоматический запуск при следующей загрузке системы:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Далее, если на сервере включен брандмауэр UFW (он не включен по умолчанию), вам необходимо открыть порты 21 и 20. где демоны FTP прослушивают, чтобы разрешить доступ к службам FTP с удаленных компьютеров, затем добавьте новые правила брандмауэра следующим образом:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Шаг 2. Настройка и защита VsFTP-сервера в Ubuntu

4. Теперь давайте выполним несколько настроек для настройки и защиты нашего FTP-сервера. Сначала мы создадим резервную копию исходного файла конфигурации /etc/vsftpd/vsftpd.conf, например так:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Далее давайте откроем файл конфигурации vsftpd.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Добавьте/измените следующие параметры с этими значениями:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Теперь настройте VSFTPD, чтобы разрешить/запретить FTP-доступ пользователям на основе файла списка пользователей /etc/vsftpd.userlist.

Обратите внимание, что по умолчанию пользователям, перечисленным в userlist_file=/etc/vsftpd.userlist, запрещен доступ для входа в систему с опцией userlist_deny=YES, если userlist_enable=YES .

Но опция userlist_deny=NO искажает значение настройки по умолчанию, поэтому только пользователям, чье имя пользователя явно указано в userlist_file=/etc/vsftpd.userlist, будет разрешено войти на FTP-сервер.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Важно: когда пользователи входят на FTP-сервер, они помещаются в изолированную тюрьму. Это локальный корневой каталог, который будет действовать как их домашний каталог для сеанса FTP. только.

Далее мы рассмотрим два возможных сценария установки chrooted-каталога тюрьмы (локального корня), как описано ниже.

6. На этом этапе давайте добавим/изменим/раскомментируем эти две следующие опции, чтобы ограничить пользователей FTP доступом к их домашним каталогам.

chroot_local_user=YES
allow_writeable_chroot=YES

Опция chroot_local_user=YES, что важно, означает, что локальные пользователи будут помещены в chroot-тюрьму, их домашний каталог по умолчанию после входа в систему.

И мы также должны понимать, что VSFTPD по умолчанию не разрешает запись в каталог тюрьмы chroot по соображениям безопасности, однако мы можем использовать опцию allow_writeable_chroot=YES, чтобы отключить этот параметр.

Сохраните файл и закройте его. Затем нам нужно перезапустить службы VSFTPD, чтобы изменения, описанные выше, вступили в силу:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Шаг 3. Тестирование VsFTP-сервера в Ubuntu

7. Теперь мы протестируем FTP-сервер, создав пользователя FTP с помощью команды useradd следующим образом:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Затем нам нужно явно указать пользователя aaronkilik в файле /etc/vsftpd.userlist с помощью команды echo и tee команды, как показано ниже:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Теперь пришло время проверить, работают ли указанные выше конфигурации должным образом. Мы начнем с тестирования анонимных входов в систему; из вывода ниже мы ясно видим, что анонимный вход на FTP-сервер не разрешен:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Далее давайте проверим, будет ли пользователю, не указанному в файле /etc/vsftpd.userlist, предоставлено разрешение на вход в систему, что неверно из следующих результатов. :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Теперь мы проведем финальную проверку, чтобы определить, действительно ли пользователь, указанный в файле /etc/vsftpd.userlist, помещен в свой домашний каталог после авторизоваться. И это верно из вывода ниже:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Предупреждение. Установка параметра allow_writeable_chroot=YES может быть настолько опасной, что может иметь последствия для безопасности, особенно если у пользователей есть разрешение на загрузку или более того, доступ к оболочке. Используйте его только в том случае, если вы точно знаете, что делаете.

Следует отметить, что эти последствия для безопасности не являются специфичными для VSFTPD, они также могут влиять на все другие демоны FTP, которые предлагают помещать локальных пользователей в тюрьмы chroot.

По этой причине в разделе ниже мы объясним более безопасный метод установки для пользователя другого локального корневого каталога, недоступного для записи.

Шаг 4. Настройка домашних каталогов пользователей FTP в Ubuntu

11. Теперь откройте файл конфигурации VSFTPD еще раз.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

и закомментируйте незащищенный параметр, используя символ #, как показано ниже:

#allow_writeable_chroot=YES

Затем создайте альтернативный локальный корневой каталог для пользователя (aaronkilik, ваш, возможно, не тот) и установите необходимые разрешения, отключив разрешения на запись для всех других пользователей в этот каталог:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Затем создайте каталог в локальном корне с соответствующими разрешениями, в котором пользователь будет хранить свои файлы:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

После этого добавьте/измените приведенные ниже параметры в файле конфигурации VSFTPD, указав соответствующие значения:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Сохраните файл и закройте его. И перезапустите службы VSFTPD с последними настройками:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Теперь давайте проведем окончательную проверку и убедимся, что локальный корневой каталог пользователя — это каталог FTP, который мы создали в его домашнем каталоге.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Вот и все! Не забудьте поделиться своим мнением об этом руководстве через форму комментариев ниже или, возможно, предоставить нам любую важную информацию по этой теме.

И последнее, но не менее важное: не пропустите нашу следующую статью, в которой мы опишем, как защитить FTP-сервер с помощью соединений SSL/TLS в Ubuntu 16.04/16.10, а до тех пор всегда следите за обновлениями TecMint.