Сейчас, когда значительно место в нашей жизни занимает облачное хранилище, может быть странно говорить об обмене файлами с помощью FTP (File Transfer Protocol). Тем не менее, он по-прежнему используется для обмена файлами, где безопасность не является важным аспектом, например, для массовой загрузки документов. Именно по этой причине изучение того, как настроить FTP-сервера и включить анонимную загрузку (без аутентификации), по-прежнему является актуальной темой.
В этой статье мы объясним, как настроить FTP-сервер для разрешений соединений в пассивном режиме, когда клиент инициирует оба канала связи на сервере (один для команд (порт назначения 21 tcp), а другой для фактической передачи файлов (порт назначения 20 tcp), также известный как элемент управления и каналы данных соответственно).
Вы можете больше узнать о пассивных и активных режимах (которые мы здесь не будем рассматривать подробно) в Active FTP vs. Passive FTP.
Тем не менее, давайте начнем!
Настройка FTP-сервера в Linux
Чтобы настроить FTP на нашем сервере, мы установим следующие пакеты:
# yum install vsftpd ftp [CentOS]
# aptitude install vsftpd ftp [Ubuntu]
# zypper install vsftpd ftp [openSUSE]
Пакет vsftpd представляет собой реализацию FTP-сервера. Имя пакета — «Very Secure FTP Daemon (очень безопасный FTP-демон)». С другой стороны, ftp — это клиентская программа, которая будет использоваться для доступа к серверу.
Имейте в виду, что во время экзамена вам будет предоставлен только один VPS, где вам потребуется установить как клиент, так и сервер, так что это точно такой же подход, которому мы и последуем в этой статье.
В CentOS и openSUSE вам необходимо будет запустить службу vsftpd:
# systemctl start vsftpd && systemctl enable vsftpd
В Ubuntu необходимо запустить vsftpd и установка начнется автоматически после необходимых загрузок файлов. Если нет, вы можете запустить её вручную с помощью:
$ sudo service vsftpd start
После установки и запуска vsftpd мы можем перейти к настройке нашего FTP-сервера.
Настройка FTP-сервера в Linux
В любой момент вы можете обратиться к man vsftpd.conf для дальнейших настроек. Мы установим наиболее распространенные варианты и упомянем их цель в этом руководстве.
Как и в любом другом файле конфигурации, перед внесением изменений важно сделать резервную копию оригинала:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
Затем откройте файл /etc/vsftpd/vsftpd.conf (основной файл конфигурации) и отредактируйте следующие параметры, как указано ниже:
1. Убедитесь, что вы разрешаете анонимный доступ к серверу (мы будем использовать каталог /storage/ftp для этого примера — там мы будем хранить документы для доступа анонимных пользователей) без пароля:
anonymous_enable=YES
no_anon_password=YES
anon_root=/storage/ftp/
Если вы опустите последний параметр, каталог ftp по умолчанию будет /var/ftp (домашний каталог выделенного пользователя ftp, который был создан во время установки).
2. Чтобы включить доступ только для чтения (таким образом отключив загрузку файлов на сервер), установите следующую переменную в НЕТ:
write_enable=NO
Важно: используйте только шаги №3 и №4, если вы хотите отключить анонимные логины.
3. Аналогичным образом, вы можете также разрешить локальным пользователям входить в систему со своими системными учетными данными на FTP-сервер. Позже в этой статье мы покажем вам, как ограничить их соответствующими домашними каталогами для хранения и загрузки файлов с помощью FTP:
local_enable=YES
Если SELinux находится в режиме принудительного исполнения, вам также необходимо установить флаг ftp_home_dir, чтобы FTP разрешал писать и читать файлы в своих домашних каталогах:
# getsebool ftp_home_dir
Если же нет, вы можете включить его с помощью:
# setsebool -P ftp_home_dir 1
Ожидаемый результат показан ниже:
4. Чтобы ограничить пользователей, прошедших проверку подлинности, в своих домашних каталогах, мы будем использовать:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
С приведенными выше настройками chroot и пустым файлом /etc/vsftpd/chroot_list (который вы должны создать), вы ограничите ВСЕХ пользователей системы в своих домашних каталогах.
Важно: обратите внимание, что по-прежнему требуется гарантия, что ни один из пользователей не имеет права на запись в верхний каталог.
Если вы хотите разрешить такой доступ определенному пользователю за пределами своих домашних каталогов, вы можете вставить имена пользователей в /etc/vsftpd/chroot_list, по одному на строку.
5. Кроме того, следующие настройки позволят вам ограничить доступную пропускную способность для анонимных логинов (10 КБ) и пользователей с проверкой подлинности (20 КБ) в байтах в секунду и ограничить количество одновременных подключений на каждый IP-адрес до 5:
anon_max_rate=10240
local_max_rate=20480
max_per_ip=5
6. Мы будем ограничивать канал данных TCP-портами с 15000 по 15500 на сервере. Обратите внимание, что это произвольный выбор, и вы можете использовать другой диапазон, если хотите.
Добавьте следующие строки в /etc/vsftpd/vsftpd.conf, если они еще не присутствуют:
pasv_enable=YES
pasv_max_port=15500
pasv_min_port=15000
7. Наконец, вы можете установить сообщение приветствия, которое будет отображаться каждый раз, когда пользователь будет обращаться к серверу. Ниже приведен пример сообщения приветствия — банера который будет виден при входе на сервер:
ftpd_banner=This is a test FTP server brought to you by sedicomm.com
,
8. Теперь не забудьте перезапустить службу, чтобы применить новую конфигурацию:
# systemctl restart vsftpd [CentOS]
$ sudo service vsftpd restart [Ubuntu]
9. Разрешите FTP-трафик через брандмауэр (для firewalld):
В FirewallD
# firewall-cmd --add-service=ftp
# firewall-cmd --add-service=ftp --permanent
# firewall-cmd --add-port=15000-15500/tcp
# firewall-cmd --add-port=15000-15500/tcp --permanent
Для IP-tables
# iptables --append INPUT --protocol tcp --destination-port 21 -m state --state NEW,ESTABLISHED --jump ACCEPT
# iptables --append INPUT --protocol tcp --destination-port 15000:15500 -m state --state ESTABLISHED,RELATED --jump ACCEPT
Также нам потребуется загрузить модуль ядра ip_conntrack_ftp:
# modprobe ip_conntrack_ftp
И добавить его в автозагрузку. В CentOS и openSUSE это означает добавление имени модуля в IPTABLES_MODULES в /etc/sysconfig/iptables-config следующим образом:
IPTABLES_MODULES="ip_conntrack_ftp"
тогда как в Ubuntu вам необходимо добавить имя модуля (без команды modprobe) в нижней части /etc/modules:
$ sudo echo "ip_conntrack_ftp" >> /etc/modules
10. И последнее, но не менее важное: убедитесь, что сервер прослушивает сетевые сокеты IPv4 или IPv6 (но не оба одновременно!). В нашем примере мы будем использовать IPv4:
listen=YES
Теперь мы проверим недавно установленный и настроенный FTP-сервер.
Тестирование FTP-сервера в Linux
Мы создадим обычный файл PDF (в данном случае, файл vsftpd.conf в формате PDF) в /storage/ftp.
Обратите внимание, что вам может потребоваться установить пакет ghostcript (который есть в пакете ps2pdf) отдельно или использовать другой файл по вашему выбору:
# man -t vsftpd.conf | ps2pdf - /storage/ftp/vstpd.conf.pdf
Для тестирования мы будем использовать оба веб-браузера (перейдя на ftp://Your_IP_here) и используя клиент командной строки (ftp). Посмотрим, что произойдет, когда мы вводим этот FTP-адрес в нашем браузере:
Как вы можете видеть, файл PDF, который мы сохранили ранее в /storage/ftp доступен.
В командной строке введите:
# ftp localhost
И введите анонимное имя пользователя:
Чтобы скачать файлы с помощью командной строки, используйте команду get, а затем имя файла, например:
# get vsftpd.conf.pdf
Выводы
В этой статье мы объяснили, как правильно настроить FTP-сервер и использовать его для анонимного входа в систему. Вы также можете следовать инструкциям, приведенным для отключения таких логинов, и разрешать только локальным пользователям аутентифицироваться с использованием их системных учетных данных (не показано в этой статье, поскольку это не требуется на экзамене LFCS).
Если вы столкнулись с какими-либо проблемами, поделитесь с нами выводом следующей команды, которая будет давать исчерпывающую информацию о вашей ошибке, и мы будем более чем рады взглянуть и помочь:
# grep -Eiv '(^$|^#)' /etc/vsftpd/vsftpd.conf
Обратите внимание, что есть другие директивы конфигурации, которые мы не рассматривали в этой статье, поскольку они установлены по умолчанию, поэтому никаких изменений с нашей стороны не было внесенно:
local_enable=NO
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=This is a test FTP server brought to you by Tecmint.com
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_max_rate=10240
local_max_rate=20480
max_per_ip=5
anon_root=/storage/ftp
no_anon_password=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=15000
pasv_max_port=15500
Ниже приведённая директива:
xferlog_enable=YES
включит журнал /var/log/xferlog. Убедитесь, что вы находитесь в этом файле во время устранения неполадок.
Кроме того, не стесняйтесь оставлять нам отзывы, используя форму комментариев ниже, если у вас есть вопросы или комментарии к этой статье.
Стать сертифицированным системным администратором Linux
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco и Linux с трудоустройством!
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- отредактировать резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.