Linux-сервер своими руками — страница 43 из 119

Сервер Dig предназначен для поиска и индексирования содержимого web-страниц в небольших сетях. Сервер Dig прекрасно справляется с поиском информации на серверах вашей сети, однако заменить полноценную поисковую машину, такую, как Rambler, Yandex или Google, он не может. Этот поисковый сервер не очень масштабируемый и сможет охватить лишь несколько серверов вашей сети.

Сервер Dig предоставляет простые и сложные методы поиска информации. К сложным методам относятся логический (boolean method) и нечетко определенный метод поиска (fuzzy searching method). Нечетко определенный поиск включает в себя несколько алгоритмов: простой, зондирующий и поиск с использованием синонимов.

Поиск производится по HTML-документам и по простым текстовым документам. Документы HTML могут содержать ключевые слова, что упрощает поиск. Поиск ограничивается глубиной и локализацией. Можно идентифицировать пользователя при попытке поиска в определенных каталогах или вообще запретить поиск в указанных каталогах (ограничение локализацией).

Файл конфигурации htdig.conf сервера Dig находится в каталоге /etc/htdig. Директива database_dir определяет расположение базы данных сервера ht:/Dig.

Базы данных могут быть довольно большими, поэтому нужно позаботиться о том, чтобы хватило дискового пространства.

Директива start_url указывает начальные url-адреса поиска. Сервер dig будет производить индексирование, начиная с этих адресов. Вы можете указать несколько адресов.

Директива Iimit_urls_to определяет, какие адреса будут ограничены во время создания индекса. Обычно здесь нужно указать те url-адреса, которые вы указали в директиве start_url.

Директива exclude_urls определяет, какие адреса не будут индексированы. Обычно не требует индексирования каталог /cgi-bin/, содержащий сценарии.

Директива bad_extensions запрещает индексирование файлов с указанным расширением.

Другие директивы позволяют установить максимальный размер заголовка документа HTML (max_head_length), максимальный размер файла (max_doc_size) и установить алгоритм поиска (search_algoritm), а с помощью директивы allow_virtual_hosts можно указать серверу индексировать виртуальные хосты как отдельные компьютеры.

В состав системы Dig входят пять программ: htdig, htmerge, htfuzzy, htnotify и htsearch. Поиск выполняет программа htsearch, программы htdig, htmerge, htfuzzy выполняют индексирование. Сначала программа htdig собирает информацию в локальной базе данных, а затем сопоставляет найденные Web-страницы с установленными вами критериями поиска. Программа htmerge использует информацию, предоставленную ей программой htdig, для создания поисковой базы данных. Программа htfuzzy создает индексы в базе данных, что позволяет использовать методы нечетко определенного поиска.

Довольно часто пользователи используют Web-страницы, которые вызывают программу htsearch для организации поиска. При этом программе htsearch передаются некоторые параметры: параметр поиска, конфигурация программы (config), метод поиска (method) и вид критерия (sort). При работе с этой программой можно использовать методы передачи данных GET и POST.

Для создания базы данных предназначен сценарий rundig.

8.8. Прокси-сервер Socks5

8.8.1.Установка и настройкасервера

Сервер Socks5 — это универсальный прокси-сервер. Сервер Socks5 требует поддержки протокола socks5 со стороны программного обеспечения клиента. При этом могут применяться специальные программные пакеты, позволяющие использовать стандартное программное обеспечение. Под специальным программным обеспечением подразумевается программа runsocks, входящая в состав сервера socks5 или аналогичные ей программы.

В большинстве случаев прокси-сервер Socks5 нужно использовать для того, чтобы обеспечить работу Socks-клиентов (обычно в этой роли выступает программа ICQ) через бастион. Довольно часто встречающаяся ситуация: программу ICQ запускает пользователь локальной сети, у которого нет реального Интернет-адреса и он подключается к Интернет через firewall.

Для решения этой проблемы можно воспользоваться двумя методами: или использовать IP-маскарадинг, или же установить Socks5-сервер на шлюзе. Первый способ описан в гл. 14, а настройка второго рассматривается в этой главе. Существует также еще один метод, который заключается в использовании прокси-сервера SQUID. Для этого нужно добавить в список разрешенных портов порт 5190. Этот порт используется современными ICQ-клиентами:

acl SSL_ports port 5190

Однако, по сравнению со SQUID, прокси-сервер Socks5 представляет собой наиболее гибкое решение. Да и зачем устанавливать на шлюзе полнофункциональный прокси-сервер, если нужно только обеспечить работу ICQ для пользователей внутренней сети?

Нужно отметить, что оба прокси-сервера (Socks5 и SQUID) могут быть установлены на одном сервере и одновременно функционировать, не мешая друг другу.

Клиентами сервера socks5 являются популярные клиенты ICQ и licq, клиентская версия оболочки ssh, а также другие программы. Подробную информацию о сервере socks5 вы можете найти по адресу: http://www.socks.nec.com. Некоторые вопросы по настройке socks5 довольно хорошо рассмотрены в справочной системе. Прочитать стандартную документацию вы можете, введя команды:

man socks5.conf 

man libsocks5.conf

В этой главе будет рассмотрена только базовая настройка сервера socks5.

Сначала нужно загрузить последнюю версию прокси-сервера (http://www.socks.nec.com/cgi-bin/download.pl) — на данный момент это v1.0 release 11. То есть вам нужно выкачать файл socks5-v1.0r11. Желательно также скачать socks5tools — в нем находится сценарий для обработки протоколов сервера. После распаковки выполните привычную последовательность команд:

./configure 

make 

make install

При корректной сборке в каталоге /etc будет создан файл socks5.conf, в котором и содержатся все настройки сервера.

В большинстве случаев параметры по умолчанию являются вполне приемлемыми. Сейчас рассмотрим пример конфигурационного файла (см. листинг 8.13), а потом разберемся, что все это означает.

Листинг 8.13. Файл /etc/socks5.conf

set SOCKS5_NOREVERSEMAP 

set SOCKS5_NOSERVICENAME

set SOCKS5_NOIDENT

set SOCKS5_MAXCHILD 128 

set SOCKS5_TIMEOUT 10 

auth - – u

permit u – – - - - -

interface 192.168.0. – eth0

В первой строке мы отменяем обратный резолвинг адресов, благодаря чему сервер будет работать заметно быстрее. Вторая строка означает, что мы будем протоколировать номера портов вместо имен сервисов. Теоретически это тоже должно повысить эффективность работы сервера. Параметр SOCKS5_NOIDENT запрещает рассылку клиентам ident-запросов. Четвертая строка устанавливает максимально допустимое число потомков сервера — не жадничайте. Пятая строка, как вы уже успели догадаться, устанавливает тайм-аут (10 секунд).

Практически вся настройка сервера выполняется с помощью манипулирования командами auth и permit. Первая устанавливает тип аутентификации, а вторая — разрешает доступ определенным хостам/пользователям. Полный формат команды auth такой:

auth исходный_хост исходный_порт метод_аутентификации

В данном случае мы будем запрашивать пароль со всех пользователей (точнее, клиентов).

Формат команды permit:

permit аутентификация команда исх_хост хост_назнач исх_порт порт_назнач [список_польз]

В примере я разрешаю доступ всем и отовсюду с использованием аутентификации. Если вас интересует более расширенный пример использования команды permit, который демонстрирует всю гибкость этого прокси-сервера, обратите внимание на этот:

permit u cpubt 192.168.-.– [100,1000] user

В данном случае мы разрешаем доступ пользователю user (с использованием пароля, конечно). Пользователь user имеет право использовать Connect, Ping, Udp, Bind и Traceroute (cpubt) с адресов 192.168.*.*. Диапазон входящих (первый «-») и входящих (второй «-») портов — 100…1000.

Директива interface (листинг 8.13) разрешает все соединения от компьютеров с адресами 192.168.0.* (наша внутренняя сеть) ко всем портам интерфейса eth0. Кроме команды permit существует противоположная ей команда deny с аналогичными параметрами.

Создайте файл /etc/socks5.passwd — в нем содержатся имена пользователей и их пароли. Например:

petrov 123456 

ivanov paswd

За этим все! Вы уже настроили ваш сервер. Осталось его запустить:

# /usr/local/bin/socks5 –f –s

При этом демон должен перейти в фоновый режим и выводить диагностические сообщения на стандартный вывод (в нашем случае это экран).

Если сервер сконфигурирован правильно, вы должны увидеть примерно следующее:

11410: Socks5 starting at Mon Mar 4 19:13:55 2002 in normal mode 

После удачного запуска остановите сервер и добавьте его в скрипты автозагрузки системы:

# killall socks5

8.8.2. Альтернативные серверы Socks5

В качестве альтернативы серверу socks5 вы можете использовать прокси-сервер dante-socks, который доступен по адресу http://www.inet.no/dante/. Данный сервер использует файл конфигурации sockd.conf (см. листинг 8.14).

Листинг 8.14. Файл /etc/sockd.conf

internal: 192.168.0.1 port = 1080 

external: 111.111.111.111 

client pass {

 from: 192.168.0.0/16 to: 0.0.0.0/0

}

pass {

 from: 0.0.0.0/0 to: 192.168.0.0/16

 command: bindreply udpreply

 log: connect error 

}

Параметр internal определяет ваш внутренний интерфейс (точнее, внутренний IP-адрес), a external — ваш настоящий IP (111.111.111.111.111). В блоке client pass указываются возможные клиенты вашего сервера (сеть 192.168.0.0), а в блоке pass указываются имена узлов, которые могут «общаться» с вашими клиентами. В приведенном примере разрешается отвечать клиентам со всех узлов (0.0.0.0). Протоколироваться будут только ошибки соединения.

8.8.3. Настройка клиента Socks5 (licq)

Настройку клиентов будем рассматривать на примере двух, наверное самых популярных, Socks-клиентов. Сначала рассмотрим настройку программы ICQ для Windows, а потом licq — ICQ-клиент для Linux.

Запустите программу ICQ и нажмите на кнопку «ICQ», которая находится ниже кнопки «Services» (рис. 8.12). Затем из появившегося меню выберите команду Preferences и перейдите в раздел Connections на вкладку Server. Включите режим использования прокси-сервера и установите тип прокси-сервера — Socks5 (см. рис. 8.13).

Рис. 8.12. Программа icq

Рис. 8.13. Свойства соединения icq


Потом перейдите на вкладку Firewall и установите параметры прокси-сервера: имя, порт, тип (socks5), имя пользователя и пароль (см. рис. 8.14). Нажмите на кнопку «Apply» и на этом настройка клиента ICQ для Windows завершена. 

Рис. 8.14. Параметры прокси-сервера


С программой licq будет немножко сложнее. Во-первых, нужно установить программу runsocks, которая входит в состав прокси-сервера (эту программу можно также найти в Интернет отдельно), на компьютере пользователя и перекомпилировать licq, включив поддержку socks5. Для этого перейдите в каталог, содержащий исходные тексты licq и запустите скрипт configure с параметром –enable-socks5:

./configure –enable-socks5

После этого выполните привычные команды:

make; make install

Теперь нужно создать файл /etc/libsocks5.conf и добавить в него строку:

socks5 – – – 192 .168.0.1:port

192.168.0.1 — это адрес вашего socks5-сервера, port — порт, необходимый клиенту (обычно 1080).

8.9. Система обнаружения и защиты от вторжения