FTP (протокол передачи файлов) - традиционный и широко используемый стандартный инструмент для передача файлов между сервером и клиентами по сети, особенно там, где аутентификация не требуется (позволяет анонимным пользователям подключаться к серверу). Мы должны понимать, что FTP по умолчанию небезопасен, потому что он передает учетные данные и данные пользователей без шифрования.
В этом руководстве мы опишем шаги по установке, настройке и защите FTP-сервера (VSFTPD означает "Демон очень безопасного FTP") в CentOS/RHEL 7 и Fedora раздачи.
Обратите внимание, что все команды в этом руководстве будут запускаться как корень, если вы не используете сервер с корень аккаунт, используйте команда sudo чтобы получить привилегии root.
1. Установка vsftpd server прост, просто запустите следующую команду в терминале.
# ням установить vsftpd.
2. После завершения установки служба сначала будет отключена, поэтому нам нужно на время запустить ее вручную и включить автоматический запуск при следующей загрузке системы:
# systemctl start vsftpd. # systemctl включить vsftpd.
3. Далее, чтобы разрешить доступ к FTP-сервисам из внешних систем, мы должны открыть порт 21, где демоны FTP прослушивают следующее:
# firewall-cmd --zone = public --permanent --add-port = 21 / tcp. # firewall-cmd --zone = public --permanent --add-service = ftp. # firewall-cmd --reload.
4. Теперь мы перейдем к выполнению нескольких конфигураций для настройки и защиты нашего FTP-сервера, давайте начнем с создания резервной копии исходного файла конфигурации. /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig.
Затем откройте файл конфигурации выше и установите следующие параметры с соответствующими значениями:
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. Теперь настройте FTP, чтобы разрешить / запретить FTP-доступ для пользователей на основе файла списка пользователей. /etc/vsftpd.userlist
.
По умолчанию пользователи, перечисленные в userlist_file = / etc / vsftpd.userlist
отказано в доступе для входа с userlist_deny опция установлена на ДА, если userlist_enable = ДА.
Однако, userlist_deny = НЕТ изменяет настройку, что означает, что только пользователи, явно указанные в userlist_file = / etc / vsftpd.userlist будет разрешено войти в систему.
userlist_enable = YES # vsftpd загрузит список имен пользователей из имени файла, заданного userlist_file. userlist_file = / etc / vsftpd.userlist # хранит имена пользователей. userlist_deny = НЕТ
И это еще не все, когда пользователи входят на FTP-сервер, они помещаются в chroot-тюрьму, это локальный корневой каталог, который будет действовать как их домашний каталог только для FTP-сеанса.
Далее мы рассмотрим два возможных сценария, как привязать пользователей FTP к домашнему каталогу (локальному корневому каталогу) для пользователей FTP, как описано ниже.
6. Теперь добавьте эти две следующие опции, чтобы ограничить пользователей FTP их домашними каталогами.
chroot_local_user = ДА. allow_writeable_chroot = ДА.
chroot_local_user = ДА означает, что локальные пользователи будут помещены в chroot jail, их домашний каталог после входа в систему по умолчанию.
А также по умолчанию vsftpd не разрешает запись в каталог chroot jail из соображений безопасности, однако мы можем использовать опцию allow_writeable_chroot = ДА чтобы переопределить этот параметр.
Сохраните файл и закройте его.
7. Теперь давайте установим SELinux логическое ниже, чтобы разрешить FTP читать файлы в домашнем каталоге пользователя. Обратите внимание, что изначально это было сделано с помощью команды:
# setsebool -P ftp_home_dir on.
Тем не менее ftp_home_dir
Директива по умолчанию отключена, как описано в этом отчете об ошибке: https://bugzilla.redhat.com/show_bug.cgi? id = 1097775.
Теперь воспользуемся semanage команда для установки правила SELinux, разрешающего FTP читать / писать домашний каталог пользователя.
# semanage boolean -m ftpd_full_access --on.
На этом этапе мы должны перезапустить vsftpd, чтобы применить все изменения, которые мы внесли выше:
# systemctl перезапуск vsftpd.
8. Теперь мы протестируем FTP-сервер, создав пользователя FTP с команда useradd.
# useradd -m -c «Рави Сэйв, генеральный директор» -s / bin / bash ravi. # пароль ravi.
После этого мы должны добавить пользователя рави в файл /etc/vsftpd.userlist с использованием эхо-команда следующее:
# эхо "рави" | tee -a /etc/vsftpd.userlist. # cat /etc/vsftpd.userlist.
9. Пришло время проверить, правильно ли работают наши настройки, указанные выше. Давайте начнем с тестирования анонимных входов, мы видим на снимке экрана ниже, что анонимные входы не разрешены:
# ftp 192.168.56.10 Подключен к 192.168.56.10 (192.168.56.10). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.10:root): аноним. 530 В разрешении отказано. Ошибка входа. ftp>
10. Давайте также проверим, не указан ли пользователь в файле /etc/vsftpd.userlist будет предоставлено разрешение на вход в систему, а это не так, как на снимке экрана ниже:
# ftp 192.168.56.10 Подключен к 192.168.56.10 (192.168.56.10). 220 Добро пожаловать в службу FTP TecMint.com. Имя (192.168.56.10:root): aaronkilik. 530 В разрешении отказано. Ошибка входа. ftp>
11. Теперь сделайте последнюю проверку, если пользователь, указанный в файле /etc/vsftpd.userlist, фактически помещается в его / ее домашний каталог после входа в систему:
# ftp 192.168.56.10 Подключен к 192.168.56.10 (192.168.56.10). 220 Добро пожаловать в службу FTP TecMint.com. Название (192.168.56.10:root): ravi. 331 Пожалуйста, укажите пароль. Пароль: 230 Вход выполнен успешно. Тип удаленной системы - UNIX. Использование двоичного режима для передачи файлов. ftp> lsПредупреждение: С использованием
allow_writeable_chroot = ДА
имеет определенные последствия для безопасности, особенно если у пользователей есть разрешение на загрузку или доступ к оболочке.Активируйте эту опцию, только если вы точно знаете, что делаете. Важно отметить, что эти последствия для безопасности не относятся к vsftpd, они применяются ко всем демонам FTP, которые также предлагают помещать локальных пользователей в chroot-тюрьмы.
Поэтому в следующем разделе мы рассмотрим более безопасный способ установки другого локального корневого каталога, недоступного для записи.
12. Снова откройте файл конфигурации vsftpd и начните с комментария ниже незащищенного варианта:
# allow_writeable_chroot = ДА.
Затем создайте альтернативный локальный корневой каталог для пользователя (рави
, ваш, вероятно, другой) и удалите права на запись для всех пользователей в этот каталог:
# mkdir / home / ravi / ftp. # chownbody: никто / home / ravi / ftp. # chmod a-w / home / ravi / ftp.
13. Затем создайте каталог в локальном корне, где пользователь будет хранить свои файлы:
# mkdir / home / ravi / ftp / files. # chown ravi: ravi / home / ravi / ftp / files. # chmod 0700 / home / ravi / ftp / files /
Затем добавьте / измените следующие параметры в файле конфигурации vsftpd с этими значениями:
user_sub_token = $ USER # вставляет имя пользователя в локальный корневой каталог local_root = / home / $ USER / ftp # определяет локальный корневой каталог любого пользователя.
Сохраните файл и закройте его. Еще раз перезапустим сервис с новыми настройками:
# systemctl перезапуск vsftpd.
14. Теперь сделайте последний тест еще раз и убедитесь, что локальный корневой каталог пользователя - это каталог FTP, который мы создали в его домашнем каталоге.
# ftp 192.168.56.10 Подключен к 192.168.56.10 (192.168.56.10). 220 Добро пожаловать в службу FTP TecMint.com. Название (192.168.56.10:root): ravi. 331 Пожалуйста, укажите пароль. Пароль: 230 Вход выполнен успешно. Тип удаленной системы - UNIX. Использование двоичного режима для передачи файлов. ftp> ls
Вот и все! В этой статье мы описали, как установить, настроить, а также защитить FTP-сервер в CentOS 7, используя раздел комментариев ниже, чтобы написать нам об этом руководстве / поделиться любой полезной информацией об этом тема.
Предлагаемое чтение:Установите ProFTPD Server на RHEL / CentOS 7
В следующей статье мы также покажем вам, как защитить FTP-сервер с помощью SSL / TLS подключений в CentOS 7, а до тех пор оставайтесь подключенными к TecMint.