Маршрутизация IP в ОС Linux
Использование сервера на базе ОС Linux в качестве IP-маршрутизатора — довольно полезная функция, но ее применение сопряжено с определенным риском. Когда ваш сервер под управлением ОС Linux сконфигурирован для маршрутизации сетевого трафика в сеть Internet, работает и обратная связь, т.е. трафик сети Internet может поступать в вашу локальную сеть. Повторим еще раз: трафик сети Internet может поступать в вашу локальную сеть! Ваша сеть в этом случае уязвима для атак хакеров через сеть Internet. В зависимости от оборудования, используемого в сети, это обстоятельство в той или иной степени должно вызывать беспокойство системного или сетевого администратора.
Еще одна полезная особенность ОС Linux состоит в том, что, начиная с версии ядра 1.3, в него включены функции поддержки системы безопасности (так называемого брандмауэра — firewall). Эти функции можно использовать для отражения атак хакеров, нацеленных на отдельные устройства во вверенной вам сети.
Вообще брандмауэр выполняет функцию фильтрации определенных типов пакетов, т.е. не допускает определенные пакеты в локальную сеть или не выпускает определенные пакеты из нее. С помощью брандмауэра вы можете запретить определенным удаленным хостам устанавливать соединение с устройствами в вашей сети. Вы также можете запретить рабочим станциям в своей сети устанавливать соединение с определенными внешними хостами. Все эти действия выполняются с помощью таблицы преобразования адресов (Network Address Translation table — NAT). Эта таблица обслуживается на уровне ядра. Пары IP-адресов помещаются в эту таблицу с помощью специальных программ, которые используют определенные правила. Каждому правилу соответствует определенная запись в таблице NAT. Принимая пакет, ОС Linux проверяет имеющуюся таблицу NAT и решает, будет ли пакет передан получателю или отвергнут.
Для настройки таблицы NAT в ядре операционной системы имеется два программных пакета. Наиболее популярным из них является пакет ipfwadm, который может работать с ядрами версий от 1.3 до 2.0. В ядро версии 2.1 были добавлены новые функции для работы NAT. Если в имеющейся у вас версии ОС Linux применяется ядро версии 2.1 или выше, то вы можете использовать программный пакет ipchains. В нем широко используются новые возможности ядра версии 2.1 и выше, такие как быстрое преобразование адресов и возврат пакетов (отправка отвергнутых ICMP пакетов обратно на пославший их хост). Оба эти программных продукта подробно описаны в разделах "Применение утилиты ipfwadm" и "Применение утилиты ipchains".
При установке брандмауэра вы можете настроить программное обеспечение таким образом, чтобы пресекались любые попытки хакеров установить соединение с устройствами вашей сети. Это не отменяет функции системного администрирования. Вам все равно придется просматривать файлы отчетов системы для выявления попыток несанкционированного доступа. Сам по себе брандмауэр не дает стопроцентную гарантию безопасности.
Локальная сеть с применением общедоступных IP-адресов
Как уже отмечалось ранее, применение общедоступных IP-адресов в локальной сети требует больших усилий от сетевого администратора. На рис.19.2 представлена схема подключения рабочих станций к сети Internet с общедоступными IP-адресами.
Ввиду того что рабочие станции в локальной сети имеют адреса, запрещенные для использования в сети Internet, сервер на базе Linux должен быть сконфигурирован для их преобразования, если отдельным рабочим станциям или другим устройствам в сети необходимо соединение с хостом в сети Internet. Поддержка преобразования IP-адресов (маскарадинга IP) была реализована в ядре Linux версии 1.3 и модернизирована в версии 2.1. На рис.19.2 клиент с адресом 192.168.1.15 устанавливает соединение с удаленным хостом, адрес которого 1.2.3.4. При применении алгоритма подстановки IP-адресов схема сетевого сеанса будет выглядеть так.
- Клиент посылает пакет на удаленный хост с адресом 1.2.3.4.
- Локальный почтовый сервер пересылает пакет от клиента на сервер провайдера с адресом 5.6.7.8. Далее в пакете реальный IP-адрес рабочей станции отправителя преобразуется в адрес сервера электронной почты — 5.6.7.9.
- Затем сервер провайдера направляет пакет по сети Internet на удаленный хост с адресом 1.2.3.4 и с указанием отправителя ( 5.6.7.9 ).
- Удаленный хост принимает пакет и посылает ответ на адрес 5.6.7.9.
- Сервер провайдера обнаруживает пакет для локального адреса 5.6.7.9 и отправляет его по назначению.
- Локальный почтовый сервер, приняв пакет, идентифицирует его как пакет для одного из локальных клиентов и пересылает его на адрес 192.168.1.15.
Подобно функции брандмауэра, преобразование адресов (маскарадинг) также включается на уровне ядра системы. Как и в брандмауэре, в ядре поддерживается внутренняя таблица соединений, содержащая адреса локальных сетевых устройств с номерами портов и соответствующие им реальные IP-адреса. Эта функция добавлена в таблицу преобразования сетевых адресов (Network Address Translation — NAT). Пакеты IP, поступающие от рабочей станции в локальной сети, добавляются в таблицу NAT, и им назначается номер порта с реальным IP-адресом сервера под управлением ОС Linux.
Вы можете определить, включено ли в ядро вашей системы преобразование адресов, обратившись к файлу /proc/net/ip_masquerade. Если этот файл существует, то преобразование адресов уже скомпилировано в ядре. Обязательным условием для преобразования IP-адресов является наличие в ядре ОС поддержки пересылки IP-пакетов. Вы можете разрешить пересылку, проделав операции, описанные в предыдущем разделе. Будьте предельно внимательны при изменении настроек и перекомпиляции ядра. Любая ошибка может полностью вывести из строя ваш Linux-сервер.
Для настройки преобразования адресов можно воспользоваться теми же программными пакетами, что и при конфигурировании брандмауэра. Представленные нами ранее программные пакеты ipfwadm и ipchains позволяют вставку и удаление IP-адресов при преобразовании с помощью таблицы NAT. В последующих разделах мы рассмотрим работу этих программных пакетов более детально.