Серия 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, которые прослушивают демоны Web и 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
Вы можете протестировать файл конфигурации с помощью.
apachectl configtest
и если все ОК, то перезапускаем веб-сервер.
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 как вверху, так и вверху на уровнях блокировки каталога установлено значение Нет:
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 на этом сайте.