FTP (протокол передачи файлов) - это относительно старый и наиболее часто используемый стандартный сетевой протокол, используемый для загрузки файлов между двумя компьютерами по сети. Однако, FTP по своей изначальной небезопасности, потому что он передает данные вместе с учетными данными пользователя (имя пользователя и пароль) без шифрования.
Предупреждение: Если вы планируете использовать FTP, рассмотрите возможность настройки FTP-соединения с SSL / TLS (будет рассмотрено в следующей статье). В противном случае всегда лучше использовать безопасный FTP, например SFTP.
Предлагаемое чтение:Как установить и защитить FTP-сервер в CentOS 7
В этом руководстве мы покажем, как установить, настроить и защитить FTP сервер (VSFTPD в полном объеме "Демон очень безопасного FTP") в Ubuntu чтобы иметь мощную защиту от уязвимостей FTP.
1. Сначала нам нужно обновить список источников системных пакетов, а затем установить VSFTPD двоичный пакет следующим образом:
$ sudo apt-get update. $ sudo apt-get install vsftpd.
2. После завершения установки служба будет изначально отключена, поэтому нам нужно запустить ее на время вручную, а также включить автоматический запуск при следующей загрузке системы:
В SystemD # systemctl start vsftpd. # systemctl включить vsftpd На SysVInit # запуск службы vsftpd. # chkconfig --level 35 vsftpd on.
3. Далее, если у вас есть Межсетевой экран UFW включен (по умолчанию не включен) на сервере, вам необходимо открыть порты 21 и 20 где демоны FTP прослушивают, чтобы разрешить доступ к службам FTP с удаленных машин, затем добавьте новые правила брандмауэра следующим образом:
$ sudo ufw allow 20 / tcp. $ sudo ufw позволяет 21 / tcp. $ sudo ufw status.
4. Теперь давайте выполним несколько настроек для настройки и защиты нашего FTP-сервера. Сначала мы создадим резервную копию исходного файла конфигурации. /etc/vsftpd/vsftpd.conf вот так:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig.
Затем давайте откроем vsftpd конфигурационный файл.
$ sudo vi /etc/vsftpd.conf. ИЛИ. $ sudo nano /etc/vsftpd.conf.
Добавьте / измените следующие параметры с этими значениями:
anonymous_enable = NO # отключить анонимный вход. local_enable = YES # разрешить локальный вход. write_enable = YES # разрешить команды FTP, которые изменяют файловую систему. local_umask = 022 # значение umask для создания файла для локальных пользователей. dirmessage_enable = YES # включить отображение сообщений при первом входе пользователя в новый каталог. xferlog_enable = YES # будет вестись файл журнала с подробными сведениями о загрузках и загрузках. connect_from_port_20 = YES # использовать порт 20 (ftp-data) на сервере для подключений в стиле PORT. xferlog_std_format = YES # сохранить стандартный формат файла журнала. listen = NO # запретить запуск vsftpd в автономном режиме. listen_ipv6 = YES # vsftpd будет прослушивать сокет IPv6 вместо сокета IPv4. pam_service_name = vsftpd # имя службы PAM, которую будет использовать vsftpd. userlist_enable = YES # включить vsftpd для загрузки списка имен пользователей. tcp_wrappers = YES # включить tcp wrappers.
5. Теперь настройте VSFTPD разрешить / запретить доступ по FTP для пользователей на основе файла списка пользователей /etc/vsftpd.userlist.
Обратите внимание, что по умолчанию пользователи, перечисленные в userlist_file = / etc / vsftpd.userlist отказано в доступе для входа с userlist_deny = ДА
вариант, если userlist_enable = ДА
.
Но вариант userlist_deny = НЕТ
искажает значение настройки по умолчанию, поэтому только пользователи, чье имя явно указано в userlist_file = / etc / vsftpd.userlist будет разрешено войти на FTP-сервер.
userlist_enable = YES # vsftpd загрузит список имен пользователей из имени файла, заданного userlist_file. userlist_file = / etc / vsftpd.userlist # хранит имена пользователей. userlist_deny = НЕТ
Важный: Когда пользователи входят на FTP-сервер, они помещаются в chrooted jail, это локальный корневой каталог, который будет действовать как их домашний каталог только для FTP-сеанса.
Далее мы рассмотрим два возможных сценария того, как установить chrooted jail (локальный корневой каталог), как описано ниже.
6. На этом этапе давайте добавим / изменим / раскомментируем эти два следующих параметра, чтобы ограничить пользователей FTP их домашними каталогами.
chroot_local_user = ДА. allow_writeable_chroot = ДА.
Опция chroot_local_user = ДА
что важно, это означает, что локальные пользователи будут помещены в chroot-тюрьму, их домашний каталог по умолчанию после входа в систему.
И мы также должны понимать, что VSFTPD не разрешает запись в каталог chroot jail по умолчанию из соображений безопасности, однако мы можем использовать опцию allow_writeable_chroot = ДА чтобы отключить эту настройку.
Сохраните файл и закройте его. Затем мы должны перезапустить службы VSFTPD, чтобы изменения, указанные выше, вступили в силу:
В SystemD # systemctl перезапуск vsftpd На SysVInit # перезапуск службы vsftpd.
7. Теперь мы протестируем FTP-сервер, создав пользователя FTP с команда useradd следующее:
$ sudo useradd -m -c "Аарон Кили, участник" -s / bin / bash aaronkilik. $ sudo passwd aaronkilik.
Затем мы должны явно указать пользователя ааронкилик в файле /etc/vsftpd.userlist с эхо-команда и команда тройник как показано ниже:
$ эхо "ааронкилик" | sudo tee -a /etc/vsftpd.userlist. $ cat /etc/vsftpd.userlist.
8. Пришло время проверить, работают ли указанные выше конфигурации должным образом. Начнем с тестирования анонимных входов; Из приведенного ниже вывода ясно видно, что анонимный вход на FTP-сервер запрещен:
# ftp 192.168.56.102 Подключен к 192.168.56.102 (192.168.56.102). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.102:aaronkilik): аноним. 530 В доступе отказано. Ошибка входа. ftp> пока. 221 До свидания.
9. Затем давайте проверим, не указан ли пользователь в файле /etc/vsftpd.userlist будет предоставлено разрешение на вход в систему, что неверно из следующего вывода:
# ftp 192.168.56.102 Подключен к 192.168.56.102 (192.168.56.102). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.10:root): user1. 530 В доступе отказано. Ошибка входа. ftp> пока. 221 До свидания.
10. Теперь мы проведем заключительный тест, чтобы определить, есть ли у пользователя, указанного в файле, /etc/vsftpd.userlist, фактически помещается в его / ее домашний каталог после входа в систему. И это верно из вывода ниже:
# ftp 192.168.56.102 Подключен к 192.168.56.102 (192.168.56.102). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.102:aaronkilik): aaronkilik. 331 Пожалуйста, укажите пароль. Пароль: 230 Вход выполнен успешно. Тип удаленной системы - UNIX. Использование двоичного режима для передачи файлов. ftp> ls
Предупреждение: Установка опции allow_writeable_chroot = ДА
может быть настолько опасным, что может иметь последствия для безопасности, особенно если у пользователей есть разрешение на загрузку или, более того, доступ к оболочке. Используйте его только в том случае, если точно знаете, что делаете.
Следует отметить, что эти последствия для безопасности не являются специфическими для VSFTPD, они также могут влиять на всех других демонов FTP, которые предлагают помещать локальных пользователей в chroot-тюрьмы.
По этой причине в следующем разделе мы объясним более безопасный метод установки для пользователя другого локального корневого каталога, недоступного для записи.
11. Теперь откройте файл конфигурации VSFTPD еще раз.
$ sudo vi /etc/vsftpd.conf. ИЛИ. $ sudo nano /etc/vsftpd.conf.
и закомментируйте незащищенный вариант, используя #
символ, как показано ниже:
# allow_writeable_chroot = ДА.
Затем создайте альтернативный локальный корневой каталог для пользователя (ааронкилик, ваш, возможно, не тот) и установите необходимые разрешения, отключив разрешения на запись для всех других пользователей в этот каталог:
$ sudo mkdir / главная / aaronkilik / ftp. $ sudo chown никто: 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 / главная / aaronkilik / ftp / files /
После этого добавьте / измените параметры ниже в файле конфигурации VSFTPD с соответствующими значениями:
user_sub_token = $ USER # вставляет имя пользователя в локальный корневой каталог local_root = / home / $ USER / ftp # определяет локальный корневой каталог любого пользователя.
Сохраните файл и закройте его. И перезапустите службы VSFTPD с последними настройками:
В SystemD # systemctl перезапуск vsftpd На SysVInit # перезапуск службы vsftpd.
13. Теперь давайте выполним последнюю проверку и убедимся, что локальный корневой каталог пользователя - это каталог FTP, который мы создали в его домашнем каталоге.
# ftp 192.168.56.102 Подключен к 192.168.56.102 (192.168.56.102). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.10:aaronkilik): aaronkilik. 331 Пожалуйста, укажите пароль. Пароль: 230 Вход выполнен успешно. Тип удаленной системы - UNIX. Использование двоичного режима для передачи файлов. ftp> ls
Вот и все! Не забудьте поделиться своим мнением об этом руководстве через форму комментариев ниже или, возможно, предоставить нам любую важную информацию по теме.
И последнее, но не менее важное: не пропустите нашу следующую статью, в которой мы расскажем, как защитить FTP-сервер с помощью SSL / TLS подключений в Ubuntu 16.04 / 16.10, до тех пор всегда следите за TecMint.