- Серия RHCSA: установка, настройка и защита веб-сервера и FTP-сервера — часть 9
- Установка Apache и FTP-сервера
- Настройка и защита веб-сервера Apache
- Настройка и защита FTP-сервера
- Краткое содержание
- iSmooth Blog
- How to Install FTP Server for Apache or Nginx on Ubuntu 20.04
- Getting Started on Linux Ubuntu
- Install Software Package
- Setting Permissions
- Configure UFW Firewall
- Create FTP System User
- Configure VSFTPD to Enable FTP Server
- VSFTPD Configuration
- Enable SSL over TLS for VSFTPD
- Verify FTP Server Implementation
Серия RHCSA: установка, настройка и защита веб-сервера и FTP-сервера — часть 9
Веб-сервер (также известный как сервер HTTP) — это служба, которая обрабатывает содержимое (чаще всего веб-страницы, но также и другие типы документов) клиенту в сети.
FTP-сервер является одним из старейших и наиболее часто используемых ресурсов (даже по сей день), чтобы сделать файлы доступными для клиентов в сети в случаях, когда аутентификация не требуется, поскольку FTP использует имя пользователя и пароль без шифрования.
Веб-сервер, доступный в RHEL 7, представляет собой версию 2.4 HTTP-сервера Apache. Что касается FTP-сервера, мы будем использовать демона Very Secure Ftp (он же vsftpd) для установления соединений, защищенных TLS.
В этой статье мы объясним, как установить, настроить и защитить веб-сервер и FTP-сервер в RHEL 7.
Установка Apache и FTP-сервера
В этом руководстве мы будем использовать сервер RHEL 7 со статическим IP-адресом 192.168.0.18/24. Чтобы установить Apache и VSFTPD, выполните следующую команду:
# yum update && yum install httpd vsftpd
Когда установка завершится, обе службы изначально будут отключены, поэтому нам нужно пока запустить их вручную и включить их автоматический запуск, начиная со следующей загрузки:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
Кроме того, мы должны открыть порты 80 и 21, где прослушиваются веб- и ftp-демоны соответственно, чтобы разрешить доступ к этим службам извне:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
Чтобы убедиться, что веб-сервер работает правильно, запустите браузер и введите IP-адрес сервера. Вы должны увидеть тестовую страницу:
Что касается ftp-сервера, нам придется его дополнительно настроить, что мы и сделаем через минуту, прежде чем убедиться, что он работает должным образом.
Настройка и защита веб-сервера Apache
Основной файл конфигурации для Apache находится в /etc/httpd/conf/httpd.conf , но он может зависеть от других файлов, находящихся внутри /etc/httpd. /conf.d .
Хотя конфигурации по умолчанию должно быть достаточно для большинства случаев, рекомендуется ознакомиться со всеми доступными параметрами, как описано в официальной документации.
Как всегда, сделайте резервную копию основного файла конфигурации перед его редактированием:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Затем откройте его в предпочитаемом вами текстовом редакторе и найдите следующие переменные:
- ServerRoot: каталог, в котором хранятся файлы конфигурации, ошибок и журналов сервера.
- Прослушивание: указывает Apache прослушивать определенный IP-адрес и/или порты.
- Включить: позволяет включать другие файлы конфигурации, которые должны существовать. В противном случае сервер выйдет из строя, в отличие от директивы IncludeOptional, которая молча игнорируется, если указанные файлы конфигурации не существуют.
- Пользователь и группа: имя пользователя/группы для запуска службы httpd.
- DocumentRoot: каталог, из которого Apache будет обслуживать ваши документы. По умолчанию все запросы берутся из этого каталога, но символические ссылки и псевдонимы могут использоваться для указания на другие местоположения.
- ServerName: эта директива устанавливает имя хоста (или IP-адрес) и порт, которые сервер использует для идентификации.
Первая мера безопасности будет заключаться в создании выделенного пользователя и группы (например, tecmint/tecmint) для запуска веб-сервера и изменении порта по умолчанию на более высокий (9000 в данном случае):
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
Вы можете протестировать файл конфигурации с помощью .
и если все ОК, перезапустите веб-сервер.
и не забудьте включить новый порт (и отключить старый) в брандмауэре:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Обратите внимание, что из-за политик SELinux вы можете использовать только порты, возвращаемые
# semanage port -l | grep -w '^http_port_t'
Если вы хотите использовать другой порт (например, порт TCP 8100), вам нужно будет добавить его в контекст порта SELinux для службы httpd:
# semanage port -a -t http_port_t -p tcp 8100
Для дополнительной защиты установки Apache выполните следующие действия:
1. Пользователь Apache, работающий под управлением, не должен иметь доступа к оболочке:
# usermod -s /sbin/nologin tecmint
2. Отключите список каталогов, чтобы запретить браузеру отображать содержимое каталога, если в этом каталоге нет index.html.
Отредактируйте /etc/httpd/conf/httpd.conf (и файлы конфигурации для виртуальных хостов, если они есть) и убедитесь, что директива Options вверху и внизу на уровнях блоков каталога установлено значение Нет:
3. Скрыть информацию о веб-сервере и операционной системе в ответах HTTP. Отредактируйте /etc/httpd/conf/httpd.conf следующим образом:
ServerTokens Prod ServerSignature Off
Теперь вы готовы начать показ контента из каталога /var/www/html.
Настройка и защита FTP-сервера
Как и в случае с Apache, основной файл конфигурации для Vsftpd (/etc/vsftpd/vsftpd.conf) хорошо прокомментирован, а конфигурации по умолчанию должно хватить для большинства приложений. , вам следует ознакомиться с документацией и справочной страницей (man vsftpd.conf) , чтобы работать с ftp-сервером более эффективно (не могу не подчеркнуть!).
В нашем случае используются следующие директивы:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
При использовании chroot_local_user=YES локальные пользователи будут (по умолчанию) помещены в chroot-окружение в своем домашнем каталоге сразу после входа в систему. Это означает, что локальные пользователи не смогут получить доступ к каким-либо файлам за пределами соответствующих им домашних каталогов.
Наконец, чтобы разрешить ftp читать файлы в домашнем каталоге пользователя, установите следующее логическое значение SELinux:
# setsebool -P ftp_home_dir on
Теперь вы можете подключиться к ftp-серверу с помощью клиента, такого как Filezilla:
Обратите внимание, что в журнале /var/log/xferlog записываются загрузки и выгрузки, которые совпадают с приведенным выше списком каталогов:
Краткое содержание
В этом уроке мы объяснили, как настроить веб-сервер и ftp-сервер. Из-за обширности предмета невозможно охватить все аспекты этих тем (например, виртуальных веб-хостов). Поэтому я рекомендую вам также ознакомиться с другими отличными статьями об Apache на этом сайте.
iSmooth Blog
How to Install FTP Server for Apache or Nginx on Ubuntu 20.04
Well, I have found many articles on the web which claim to explain the installation of an FTP Server running specifically on Ubuntu 20.04 LTS but none of them seem to actually deliver a clear working and feasible solution, and that means one thing, welcome to my Homelab.
In this article, I am going through all the steps necessary for anyone to install an FTP service using VSFTPD on an instance with TLS/SSL and properly integrate it with the main web server directory for either Apache or Nginx, the way it should be done.
The end result is going to be one system user that you can use to authenticate an FTP client like FileZilla to any website root directory you have on /var/www which is the path used for web services specifically on Ubuntu itself.
Getting Started on Linux Ubuntu
Get remote access to your instance with superuser credentials provided to you. Now, lets prepare this operating system environment with the software required for an FTP server running VSFTPD.
Install Software Package
sudo apt update sudo apt install vsftpd sudo service vsftpd status
You should now see that VSFTPD service is actually active and running without any issues.
Setting Permissions
sudo chgrp -R www-data /var/www/* sudo find /var/www -type f -exec chmod 664 <> \; sudo find /var/www -type d -exec chmod 775 <> \; sudo find /var/www -type d -exec chmod g+s <> \; sudo chown root:root /var/www
That’s like the magic touch for this particular tutorial, which is setting a proper directory permissions for our websites document root.
Configure UFW Firewall
sudo ufw allow 20,21,22,990,40000:50000/tcp sudo ufw enable
Then, you can confirm firewall status to observe whether firewall is truly enabled with the ports forwarded.
You will only need this if your are going to use the firewall on your Ubuntu instance, otherwise you can completely skip this step.
Create FTP System User
sudo useradd sftp -d /var/www sudo passwd sftp sudo adduser sftp www-data sudo echo "DenyUsers sftp" >> /etc/ssh/sshd_config sudo systemctl reload sshd
Here we’re creating the system user to authenticate an FTP client while restricting SSH access which means it’s only going to be valid for use through the FTP protocol, just make sure to specify a password that you can remember.
Configure VSFTPD to Enable FTP Server
In order for VSFTPD to work on your Linux Ubuntu environment, it needs to be configured accordingly with special settings.
VSFTPD Configuration
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak sudo nano /etc/vsftpd.conf
This will create a backup for the original configuration file while defining new settings. So, insert the following inside the config file created:
# FTP listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd force_dot_files=YES pasv_min_port=40000 pasv_max_port=50000 allow_writeable_chroot=YES # SSL ssl_enable=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH
That’s like everything typically needed for a perfect implementation of VSFTPD alongside a web server like Apache or Nginx running on Linux Ubuntu.
Enable SSL over TLS for VSFTPD
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Finally, we will create an SSL certificate for FTP over TLS.
Verify FTP Server Implementation
You must restart the VSFTPD service for all changes to take effect.
sudo systemctl restart vsftpd
There you go, navigate to your favourite FTP client which happens to be FileZilla for my own preference. In particular, you will need to specify your host address, username, password and port settings.
As a result, you will use sftp for username and 21 for port, when successful you will be presented with a welcome dialog showing SSL over TLS certificate information, just confirm to complete authorization.