Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

Вот таким простым способом можно запретить неавторизованный доступ к директории, содержащей секретные данные или сценарии администратора.

Как я уже говорил, в файле .htaccess могут находиться и директивы типа

allow from
, которые мы рассматривали выше (см. разд. 7.3).

Например, если нужно разрешить доступ только с определенного IP-адреса, то в файле может содержаться следующая строка:

allow from 101.12.41.148

Если объединить защиту директивой

allow from
и требование ввести пароль, то задача хакера по взлому сервера сильно усложнится.
Здесь уже недостаточно знания пароля, необходимо иметь конкретный IP-адрес для обращения к содержимому директории, а это требует значительных усилий.

Эти же параметры можно указывать и в файле httpd.conf, например:

<directory /путь>

 AuthType Basic

 AuthName "By Invitation Only"

 AuthUserFile /pub/home/flenov/passwd

 Require valid-user

</directory>

Чем будете пользоваться вы, зависит от личных предпочтений. Мне больше нравится работать с файлом .htaccess, потому что настройки безопасности будут храниться в той же директории, на которую устанавливаются права. Но это небезопасно, потому что хакер может получить возможность прочитать этот файл, а это лишнее.

Использование централизованного файла httpd.conf дает преимущества, т.к. он находится в директории /etc, которая не входит в корень Web-сервера и должна быть запрещена для просмотра пользователям.

7.5.2. Файлы паролей

Теперь нам предстоит узнать, как создаются файлы паролей и как ими управлять. Директива

AuthUserFile
для хранения информации об авторизации использует простой текстовый файл, в котором содержатся строки следующего вида:

flenov:{SHA}lZZEBt.Py4/gdHsyztjUEWb0d90E=

В этой записи два параметра, разделенных двоеточием. Сначала указано имя пользователя, а после разделителя — зашифрованный по алгоритму MD5 пароль. Формировать такой файл вручную сложно и не имеет смысла, поэтому для облегчения жизни администраторов есть утилита htpasswd. С помощью этой программы создаются и обновляются имена и пароли для базовой аутентификации Web-сервером HTTP-пользователей.

Удобство программы состоит в том, что она может шифровать пароли и по алгоритму MD5, и с помощью системной функции

crypt
. В одном файле могут находиться записи с паролями обоих типов.

Если вы храните имена и пароли в формате базы данных DBM (для указания этого в файле .htaccess используется директива

AuthDBMUserFile
), то для управления БД нужно применять команду
dbmmanage
.

Давайте рассмотрим, как пользоваться программой htpasswd. Общий вид вызова команды выглядит следующим образом:

htpasswd параметры файл имя пароль

Пароль и имя файла являются необязательными, и их наличие зависит от указанных опций. Давайте посмотрим основные ключи, которые нам доступны:

□ 

– c
— создать новый файл. Если указанный файл уже существует, то он перезаписывается, и старое содержимое теряется. Пример использования команды:

htpasswd -c .htaccess robert

После выполнения этой директивы перед вами появится приглашение ввести пароль для нового пользователя robert и подтвердить его. В результате будет создан файл .htaccess, в котором будет одна запись для пользователя robert с указанным вами

паролем;

□ 

– m
— использовать модифицированный Apache алгоритм MD5 для паролей. Это позволит переносить созданный файл на любую другую платформу (Windows, Unix, BeOS и т.д.), где работает Web-сервер Apache. Такой ключ удобен, если у вас разнородная сеть, и один файл с паролями используется на разных серверах;

□ 

– d
— для шифрования будет применяться системная функция
crypt
;

□ 

– s
— применить SHA-шифрование (на базе алгоритма хэширования), которое используется на платформе Netscape;

□ 

– р
— не шифровать пароли. Я не рекомендую устанавливать этот флаг, потому что он небезопасен;

□ 

– n
— не вносить никаких изменений, а только вывести результат на экран.

Для добавления нового пользователя можно выполнить команду без указания ключей, а передать в качестве параметров только имена файла и пользователя:

htpasswd .htaccess Flenov

У команды htpasswd есть два ограничения: в имени пользователя не должно быть символа двоеточия, и пароль не может превышать 255 символов. Оба условия достаточно демократичны и с ними можно смириться. Из моих знакомых такой длинный пароль пока еще никто не захотел устанавливать, а задавать имя пользователя с двоеточием редко кому приходит на ум.

7.5.3. Проблемы авторизации

Авторизация — это слишком простой способ обеспечения безопасности. При передаче пароли шифруются простым кодированием Base64. Если хакер сможет перехватить пакет, содержащий имя пользователя и пароль, то он прочитает эту информацию через пять секунд. Для расшифровки Base64 не нужно подбирать пароль, достаточно выполнить одну функцию, которая декодирует практически моментально.

Для создания реально безопасного соединения необходимо сначала зашифровать весь трафик. Для этого может использоваться stunnel или уже готовый протокол HTTPS, который использует SSL. О нем мы еще поговорим в разд. 10.9.

7.5.4. Обработка на сервере

HTML-файлы могут обрабатываться прямо на сервере (так же, как выполняются файлы PHP). С одной стороны, это удобно, потому что код PHP можно будет вставлять в файлы с расширением htm, с другой стороны, HTML-файлы далеко небезопасны, и если хакер сможет их изменять, то сервер окажется под угрозой.

Чтобы разрешить серверу выполнять файлы с определенными расширениями, используется директива

AddHandler
. В конфигурационном файле httpd.conf можно найти следующие строки с этой командой:

AddHandler cgi-script .cgi

AddHandler server-parsed .shtml

Если у вас не установлен интерпретатор языка Perl, то первую строку следует закомментировать, чтобы она даже не смущала. Вторая строка безобидна, а вот если таким же образом разрешить серверу работать с НТМ- или HTML-файлами, то это уже станет небезопасным. Следующей строки не должно быть в вашем конфигурационном файле:

AddHandler server-parsed .html

Если где-то действительно есть необходимость подключения HTML-документа, то пропишите это в файле .htaccess. В остальных директориях я рекомендую в явном виде запретить обработку HTML-файлов сервером. Для этого добавьте следующую строку в конфигурационный файл httpd.conf или в файл .htaccess каждой директории:

Поделиться с друзьями: