По возможности не следует запускать на компьютере, выполняющем функции NAT- маршрутизатора, никакие серверы. Если злоумышленник получит контроль над этим сервером, он сможет проникнуть в вашу сеть. Если у вас не хватает средств на приобретение отдельного компьютера, вы можете установить NAT-маршрутизатор на машине устаревшей модели. Для этой цели подойдет даже компьютер 80486.
Бывают ситуации, при которых обращение к одному узлу должно быть перенаправлено на другой узел либо на другой порт того же компьютера. Эта задача решается с помощью перенаправления портов, организуемого с помощью программы iptables
.
Задачи, решаемые с помощью перенаправления портов
Перенаправление портов может потребоваться в следующих ситуациях.
• Если вы перемещаете сервер с одного компьютера на другой, но по каким-либо причинам не можете изменить конфигурацию сервера DNS. Перенаправление портов позволяет разрешить эту проблему.
• Если вы хотите, чтобы один и тот же сервер отвечал на обращения по разным портам. Вы можете настроить систему для перенаправления запроса с одного порта на другой. Некоторые серверы могут принимать обращение через несколько портов, в этом случае перенаправление портов не требуется.
• Если вы хотите установить в сети, защищенной NAT-маршрутизатором, сервер и обеспечить доступ к нему извне. В этом случае вы можете настроить NAT-маршрутизатор для перенаправления трафика, связанного с одним из внешних портов, внутренней системе.
Необходимость в перенаправлении запросов компьютерам локальной сети часто возникает при использовании NAT-маршрутизатора. При этом уровень защиты несколько снижается, так как вы предоставляете внешним узлам доступ к одному из компьютеров (точнее, к одному из портов да нем). Подобное решение допускает выполнение лишь одного внутреннего сервера, ожидающего обращения через определенный порт. Если вы хотите запустить во внутренней сети два сервера одного типа, доступных извне (например, два Web-сервера), то один из них должен использовать нестандартный порт либо эти серверы должны быть представлены на внешних компьютерах с разными IP-адресами.
Опции iptables
для перенаправления портов
Обеспечить перенаправление портов на компьютере под управлением Linux, поддерживающем NAT, можно различными способами. Один из них состоит в использовании iptables
. Соответствующая команда имеет следующий вид:
# iptables -t nat -A PREROUTING -p tcp -i external-interface \
--destination-port port-num -j DNAT --to dest-addr:port-num
Ниже описаны компоненты данной команды.
• Опция, определяющая таблицу NAT ( -t nat
).
• Опция -A PREROUTING, указывающая на то, что изменения должны вноситься в состав пакета перед выполнением маршрутизации. Базовые средства NAT применяются после маршрутизации, но перенаправление портов предшествует маршрутизации.
• Опция, которая задает перенаправление TCP-портов ( -p tcp
).
• Правило, применяемое к пакетам, направленным через внешний интерфейс ( -i внешний_интерфейс
) по конкретному порту ( -destination-port номер_порта
).
• Опция -j DNAT
, указывающая на то, что вместо NAT источника ( SNAT
) выполняется NAT назначения ( DNAT
).
• Опция --to адрес_назначения : номер_порта
, сообщающая, что пакет должен быть направлен на указанный адрес с использованием указанного номера порта. В качестве адреса назначения можно указать, например, адрес 192.168.9.33, а номер порта может быть равен 80. Заметьте, что номер порта, задаваемый посредством опции --to
, не обязательно должен совпадать с номером порта, представляющим значение опции --destination-port
.
В случае необходимости вы можете задать команды перенаправления портов для каждого из серверов, выполняющихся во внутренней сети. Как и при определении базовой конфигурации NAT и правил брандмауэра, соответствующие команды желательно включить в состав сценария, вызываемого при загрузке системы.
На заметку
Существуют и другие инструменты, предназначенные для перенаправления портов. Такую возможность предоставляет, например, суперсервер xinetd
. Поскольку xinetd
выполняется как пользовательский процесс, он не позволяет добиться такой эффективности, как средства перенаправления, реализованные в составе ядра.
Протоколирование хода обработки пакетов
Команды и опции iptables
, рассмотренные в данной главе, не предполагали протоколирование действий по преобразованию пакетов. Однако в некоторых случаях необходимо иметь информацию о блокированных попытках доступа к важным портам или о пакетах, отвергнутых в результате проверки с учетом состояния. Такая информация поможет выявить попытки взлома системы, предпринимаемые извне.
Читать дальше