/etc/hosts.deny игнорируется в Ubuntu 14.04

У меня Apache2 работает на Ubuntu 14.04LTS. Чтобы начать защищать сетевой доступ к машине, я хочу начать с блокирования всего, а затем сделать определенные операторы разрешения для определенных подсетей для просмотра сайтов, размещенных в Apache.

Сервер Ubuntu устанавливается без пакетов, выбранных во время установки, единственные пакеты, добавленные после установки: apt-get update; apt-get установить apache2, php5 (с дополнительными php5-модулями), openssh-сервер, mysql-клиент

Ниже приведены мои /etc/hosts.deny & /etc/hosts.allow настройки:

  • /etc/hosts.deny

    ALL:ALL
    
  • /etc/hosts.allow не имеет разрешенных записей вообще.

Я ожидаю, что все сетевые протоколы будут отклонены. Симптом заключается в том, что я все еще могу просматривать веб-сайты, размещенные на веб-сервере Apache, даже если в /etc/hosts.deny есть оператор deny all.

Система была перезагружена после добавления запрещенной записи.

Почему /etc/hosts.deny с ALL:ALL будет игнорироваться и разрешать http-просмотр сайтов, размещенных на веб-сервере apache?

4 ответа

Чтобы обертки tcp имели эффект, вам нужно запустить соответствующий сервис из xinetd или иметь ссылку приложения на libwrap. Демон xinetd - это супер сервис с TCP-оболочкой.

введите описание изображения здесь

совместимость с tcpwrappers

Прежде всего следует помнить, что не все сетевые приложения на вашем компьютере совместимы с tcpwrappers. Ограничения на hosts.allow или hosts.deny действительны, только если они ссылаются на библиотеку tcpwrappers. Как узнать, совместимо ли ваше приложение? Используйте эту команду:

ldd /path/to/binary | grep libwrap (general example)

ldd /usr/sbin/sshd | grep libwrap (shows that the sshd refers to libwrap)

ldd /usr/sbin/apache2 | grep libwrap (show that apache does not refer to libwrap)

В приведенном выше базовом примере мы видим, что sshd (ssh-сервер) ссылается на libwrap.so, поэтому мы можем сказать, что любые ограничения в hosts.allow и hosts.deny применимы к этому сервису. Мы также видим, что apache2 не относится к libwrap.so, поэтому любые ограничения, изложенные там, не применяются к соединениям apache2. (т.е. вы можете заблокировать ssh, но apache2 все еще широко открыт)

Чтобы ограничить ваш сервер Apache, добавьте что-то из следующего в httpd.conf

<Directory />
Order Deny, Allow
Deny from all
#Allow from your ip
</Directory>

Если я правильно помню, вам нужно включить mod_access, но в основном это по умолчанию.

NB! Вы должны перезагрузить Apache.

Файлы hosts.allow и hosts.deny имеют ограниченную эффективность. Это не относится к приложению apache.

Тем не менее, есть директивы контроля доступа в директивах конфигурации Apache, чтобы сделать такие ограничения.

См. https://stackoverflow.com/questions/19445686/ubuntu-server-apache-2-4-6-client-denied-by-server-configuration-php-fpm и Обновление с Apache 2.2 до Apache 2.4

В Ubuntu 14.04 что-то было изменено для конфигурации Apache. Вы должны сделать эту модификацию: Изменить

Order Deny,Allow
Deny from all

в

Require all denied
Другие вопросы по тегам