Назад | Перейти на главную страницу

Веб-сервер Apache - Selinux, разрешение каталога

Я пытаюсь настроить apache на centos 8. Служба работает. Когда я тестирую с помощью wget, я получаю 403

$ wget 127.0.0.1:9000                                                                                                                                                                                                                            
--2020-02-21 11:27:42--  http://127.0.0.1:9000/
Connecting to 127.0.0.1:9000... connected.
HTTP request sent, awaiting response... 403 Forbidden
2020-02-21 11:27:42 ERROR 403: Forbidden.

Я сменил владельца /var/www/html/ к apache usergroup, но я не помог.

$ ls -laZ /var/www/html                                                                                                                                                                                                                      
total 8
drwxr-xr-x. 2 apache root system_u:object_r:httpd_sys_content_t:s0 4096 Dec 23 20:47 .
drwxr-xr-x. 4 root   root system_u:object_r:httpd_sys_content_t:s0 4096 Feb 21 10:27 ..

Когда я запускаю автоматический отчет, я вижу это

$ sudo aureport -a                                                                                                                                                                                                                               codingsafari@213

AVC Report
===============================================================
# date time comm subj syscall class permission obj result event
===============================================================
1. 02/16/2020 20:52:51 ? (null) 0 (null) (null) (null) unset 745
2. 02/16/2020 22:35:35 ? (null) 0 (null) (null) (null) unset 1391
3. 02/21/2020 10:29:41 httpd system_u:system_r:httpd_t:s0 49 tcp_socket name_bind system_u:object_r:websm_port_t:s0 denied 1144
4. 02/21/2020 10:29:41 httpd system_u:system_r:httpd_t:s0 49 tcp_socket name_bind system_u:object_r:websm_port_t:s0 denied 1145

На данный момент я не знаю, что делать дальше. Похоже, я должен разрешить name_bind. Мне не нужно было делать это для кота. Я тоже ожидал, что /var/www может быть доступен через apache без проблем.

Я что-то упустил?

Извините, но я думаю, что ваш вопрос не соответствует реальной действительности в вашей системе. На ванильной CentOS 8:

[root@tux ~]# semanage port -l | grep websm_port_t
websm_port_t                   tcp      9090
websm_port_t                   udp      9090
[root@tux ~]# 

Порт 9090 помечен как websm_port_t в то время как вы имеете в виду 9000 в своем вопросе. Какой порт вы действительно ищете? Порт 9000 будет помечен для использования Apache по умолчанию (поэтому вам, вероятно, потребуется исправить конфигурацию Apache, поскольку кажется, что он пытается использовать порт 9090).

[root@tux ~]# semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
[root@tux ~]# 

Если вы настаиваете на использовании порта 9090, тогда Порт SELinux «определен в политике, не может быть удален» вероятно, будет интересным для вас, потому что этот порт назначен websm_port_t системной политикой.

Здесь ничего не складывается. Я сначала не заметил. Одно дело, aureport показывает журналы, которые не связаны.

Я использую порт 9000, но в отчете мы видим 9090. Кроме того, если selinux блокирует порт для httpd, мы можем быть уверены, что не увидим ни 403, ни даже начального соединения, поскольку httpd даже не запустится.


Итак, если этот отчет бесполезен, как мы можем получить дополнительную информацию о ситуации? Почему бы сначала просто не проверить журналы ошибок Apache?

sudo cat /var/log/httpd/error_log | grep /www/html/ | tail 5

В моем случае я вижу эту строку:

[Fri Feb 21 19:54:56.715734 2020] [autoindex:error] [pid 803:tid 139796269750016]
  [client 127.0.0.1:51032] AH01276: Cannot serve directory /var/www/html/:
  No matching DirectoryIndex (index.html) found, and server-generated directory
  index forbidden by Options directive

Проблема в том, что страница веб-сервера Apache по умолчанию не находится в /var/wwww/html/. На самом деле этот каталог совершенно пустой.

Разрешение Apache в этом каталоге в порядке, и когда я помещаю туда фактический индексный файл, я получаю его без проблем.


В конце концов, остается один открытый вопрос: почему я не могу получить сгенерированную сервером HTML-страницу, которую я вижу в браузере, даже если на вкладке сети также отображается 403?

Я хочу использовать свой собственный контент, поэтому я не полностью проглотил этого кролика. Если кому-то нужно узнать больше, я бы начал здесь: https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html