Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
\ИмяСервераресурс
Например, вы хотите подключить домашнюю директорию пользователя flenov. Ее адрес будет \192.168.1.1flenov.
Но здесь надо сделать одно замечание — в Linux обратный слэш ("") является служебным, поэтому каждый такой знак должен заменяться двумя символами. Так как в начале UNC-имени идет то они подменяются на четыре обратных слэша, и адрес, приведенный выше, должен выглядеть как \\192.168.1.1\flenov.
Итак, для подключения к ресурсу выполняем команду:
smbclient \\192.168.1.1\flenov
Если вы обращаетесь к ресурсу, который требует авторизации, то необходимо указать имя пользователя, обладающего правами:
smbclient \\192.168.1.1\flenov -U flenov
При удачном подключении к открытому ресурсу вы увидите приглашение, в котором можно выполнять различные операции над файлами:
Smb: >
Чтобы узнать, какие команды доступны, введите директиву help или знак вопроса "?". Команды, которые вы увидите, очень похожи на FTP (более подробно с FTP мы познакомимся в гл. 10). Для отключения от ресурса необходимо выполнить команду exit.
Большинство дистрибутивов Linux включают стандартный Samba-пакет, и ничего больше. А ведь в Интернете есть сторонние разработки, которые позволяют монтировать открытые ресурсы в файловую систему Linux как дискету или CD-ROM или работать с общими ресурсами в графическом режиме, как это делается в Windows.
Глава 7
Web-сервер
Несмотря на то, что изначально сеть создавалась для обмена файлами, с появлением первого браузера популярность WWW-страниц начала расти не по дням, а по часам. Сейчас уже трудно себе представить не только Интернет, но и интранет без Web-страниц.
Для того чтобы пользователь смог просматривать с вашего узла хотя бы простейшие Web-странички, необходим Web (HTTP)-сервер. Уже долгое время самым распространенным из них является Apache. Трудно точно сказать, какая доля серверов работает на Apache, но можно с уверенностью утверждать, что больше половины. Хотя для Linux существуют и другие Web-серверы (например, TUX), но когда говорят о Web-сервере под Linux, то подразумевают именно Apache.
Apache абсолютно бесплатный сервер, который распространяется но лицензии GNU и доступен не только для Unix-систем, но и для ОС Windows. Официальный сайт разработчиков — www.apache.org. Почему этот сервер стал так популярен? Неужели так повлиял фактор дармовщины? Бесплатность, конечно, соблазнительна, но качество превыше всего. Сервер Apache располагает громадным количеством возможностей и при этом обладает следующими немаловажными особенностями:
□ безопасность — многие профессионалы относят к разряду самых защищенных;
□ надежность — в сочетании с ОС Linux может работать без перезагрузок годами;
□ неприхотливый — работает с минимальной нагрузкой на систему (не требует особых ресурсов);
□ производительность — высокая скорость отклика и обработки запросов пользователей.
На основе Apache строят серверы, которые работают практически без выключения (доступны 99,9%). Многие корпорации вверяют ему свои важные данные, и мне не известны случаи, когда кто-нибудь пожалел о содеянном.
Единственный недостаток, который отмечают пользователи, — это сложность конфигурирования. Приходится редактировать текстовый файл, а т.к. настроечных параметров огромное количество, то это может оказаться утомительным занятием. При этом нет гарантии, что все настройки будут сделаны оптимальными и безопасными, ведь очень легко упустить что-либо.
В данной книге мы не сможем рассмотреть все возможные параметры, потому что их слишком много. Мы коснемся только основных и поговорим о том. что может сказаться на производительности и безопасности сервера.
7.1. Основные настройки
Основные настройки сервера Apache располагаются в файле /etc/httpd/conf/httpd.conf (для некоторых дистрибутивов — в /etc/httpd.conf). Здесь хранятся настройки Web-сервера, его виртуальных серверов и программных модулей. Для Red Hat Linux, а именно он взят за основу в этой книге, все рассматриваемые параметры сервера находятся в этом файле, если явно не указано другое расположение.
Как и для большинства других сервисов, в современных дистрибутивах для настройки Apache есть простая и удобная графическая утилита. Для ее запуска нужно в основном меню системы выбрать System/Apache configuration. На рис. 7.1 показано главное окно программы Apache Configuration, позволяющей быстро и легко настроить Web-сервер.
Рис. 7.1. Главное окно программы Apache Configuration
С помощью визуальной программы очень удобно делать первоначальные настройки, но после этого вы обязательно должны самостоятельно просмотреть конфигурационный файл, а для этого нужно знать его параметры.
Внимание!Если вы вручную внесли исправления в конфигурационный файл, то после этого использовать графическую утилиту нельзя, потому что она может неправильно интерпретировать ваши правки и поменяет их на свои значения. Чтобы изменения вступили в силу, необходимо перезапустить сервер. Сервис Apache считывает параметры из конфигурационного файла только во время старта.
За счет прямого редактирования файла конфигурации можно добиться максимально безопасной и быстрой работы. Рассмотрим основные параметры Web-сервера:
□ ServerType — тип сервера, может принимать значения inetd или Standalone. Если выбрать inetd, то такие параметры, как порт, игнорируются. а используются значения из конфигурации демона inetd (см. разд. 5.4);
□ ServerRoot — корневая директория, в которой находятся файлы конфигураций и журналы;
□ Timeout — предельное время ожидания в секундах для получения и отправки пакетов;
□ Port — порт, на котором будет работать сервис. По умолчанию и для общедоступных серверов используется значение 80. Но для закрытых серверов, которыми пользуется узкий круг людей, можно изменить значение, например, на 10387. В этом случае в качестве адреса страницы надо использовать URL типа ИмяСервера:10387 (например, www.linux.com:10387/index.htm). Таким образом, не зная порта, злоумышленник не сможет проникнуть в систему, пока не просканирует весь диапазон портов и не выяснит, что 10387 — это порт Web-сервера. Это простейшая, но достаточно эффективная защита от скриптеров, которые обладают минимумом знаний о безопасности и взламывают компьютеры только с помощью сплоитов, написанных другими хакерами;
□ ServerTokens — при обращении к серверу возвращает заголовок с подробной информацией о системе, которая включает версии Apache, ОС Linux и всех имеющихся модулей. Если хакер узнает, что на сервере установлена старая версия интерпретатора PHP (или любой другой программы), то на взлом уйдет намного меньше времени. Болтливые параметры необходимо отключать, а информацию о сервере прятать. ServerTokens может принимать одно из следующих значений:
• Full — отображать полную информацию о сервере и установленных модулях, включая их версии. Самое опасное для сервиса — это использование именно этого параметра;
• Min — показать минимум сведений (только название сервера и установленные модули). Иногда даже такой простой список без версий может сказать хакеру слишком много;
• ProductOnly — только название сервера, в нашем случае Apache вернет свое имя (apache) без указания версий. Вот это как раз то, что нам нужно.
Очень опытные администраторы могут даже подменить имя сервера, но для этого необходимо будет перекомпилировать исходные коды Apache. Заголовок хранится в файле include/ap_releas.h в виде следующих двух строк:
#define SERVER_BASEPRODUCT "Apache"
#define SERVER_BASEVERSION "2.0"
Подставьте имя какого-либо другого сервера. Желательно, чтобы оно было похоже на реальность, иначе профессиональный хакер сразу заметит обман.
В более ранних версиях Apache расположение файла было другим, но мы же договорились, что устанавливать надо все только последнее;
□ HostnameLookup — если установлено значение on, то IP-адрес клиента, запросившего данные с сервера, будет преобразован в доменное имя, иначе будет использоваться IP-адрес;
□ User и Group — группа и имя пользователя, с правами которого будет работать сервис. По умолчанию в Linux для этих параметров используется Apache. Этот пользователь и группа должны обладать минимальными правами в системе, которые только необходимы для работы Web-сервера и его модулей. Ничего лишнего разрешать им нельзя;
□ ErrorLog и CustomLog — определяют местоположение журналов;
□ LogLevel — обусловливает, что будет писаться в журнал. Можно указать одно из следующих значений: emerg, alert, crit, error, warn, notice, info, debug;