A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.
A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.
Веб-сервер, доступный в RHEL 7, – это версия 2.4 сервера Apache HTTP. Что касается FTP-сервера, мы будем использовать Very Secure Ftp Daemon (также известный как 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: каталог, в котором хранятся файлы конфигурации, ошибок и журналов сервера.
- Listen: указывает Apache слушать определенный IP-адрес и/или порты.
- Include: позволяет включать другие файлы конфигурации, которые должны существовать. В противном случае сервер не запустится, в отличие от директивы IncludeOptional, которая без ошибок игнорируется, если указанные файлы конфигурации не существуют.
- User and Group: имя пользователя/группы, от имени которого будет работать служба 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
Вы можете проверить файл конфигурации с помощью.
# apachectl configtest
и если все OK, то перезапустите веб-сервер.
# systemctl restart httpd
и не забудьте включить новый порт (и отключить старый) в брандмауэре:
# 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, как в начале файла, так и на уровне блока Directory, установлена в None:
Options None
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-сети, используемой приложениями в системе Linux с помощью Trickle
Резюме
В этом руководстве мы объяснили, как настроить веб- и FTP-серверы. Из-за обширности темы невозможно охватить все аспекты этих тем (например, виртуальные веб-хосты). Поэтому я рекомендую вам также прочитать другие отличные статьи на этом веб-сайте о Apache.
Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/