# iptables -A INPUT -р tcp --dport 25 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
Эти команды обеспечивают прием пакетов, направленных серверу, который ожидает поступление запросов через порт 25, и передачу пакетов, возвращаемых сервером в ответ на запрос (в них указан порт источника 25). В результате, даже если политика по умолчанию отвергает пакеты, сервер сможет получить почту от внешних серверов. Заметьте, если в качестве политики по умолчанию указано действие DROP
или REJECT
вы должны включить в цепочку INPUT
правило, разрешающее принимать пакеты, направленные серверу, а в цепочку OUTPUT
— правило, разрешающее передавать пакеты, сгенерированные данным сервером. Для этого при определении правила для цепочки INPUT
задается опция --destination-port
, а при определении правила для цепочки OUTPUT
— опция --source-port
. Если вы забудете создать одно из правил, то сервер сможет получать запросы, но не сможет генерировать ответы на них, либо, наоборот, через брандмауэр будут пропускаться только данные, сгенерированные сервером, а информация, направленная серверу, будет отвергаться. Для брандмауэра, совмещенного с маршрутизатором, надо также включить в цепочку FORWARD
правила, созданные с использованием опций --destination-port
и --source-port
, в противном случае данные через брандмауэр передаваться не будут. Вы можете использовать в качестве условий номера портов в сочетании с IP-адресами. Это позволит не только ограничить обмен определенным типом протокола, но и разрешить его лишь для отдельных компьютеров. Так, например, вы сможете создать правила, согласно которым взаимодействовать с внешними узлами по протоколу SMTP будет иметь право только почтовый сервер.
Если вы используете политику по умолчанию DROP
или REJECT
, вам необходимо разрешить клиентским программам взаимодействовать с внешними серверами. Для этого выполните следующие действия.
• Разрешите доступ к серверным портам внешних компьютеров. Соответствующее правило, включаемое в цепочку INPUT
, должно создаваться с указанием опции --source-port
, а при создании правила, помещаемого в цепочку OUTPUT
, должна использоваться опция --destination-port
. Для брандмауэра, совмещенного с маршрутизатором, необходимо также включить в цепочку FORWARD
правила, созданные с помощью опций --source-port
и --destination-port
. Возможно, что наряду с номерами портов вам потребуется задать IP-адреса ваших компьютеров. Таким способом вам следует разрешить обращение вовне по каждому из протоколов, которые используются клиентами, выполняемыми в вашей сети.
• Разрешите доступ к непривилегированным портам компьютеров вашей сети. Номера непривилегированных портов лежат в диапазоне 1024-65535. В опциях --source-port
и --destination-port
указываются границы диапазона, разделенные двоеточием, например --source-port 1024:65535
. Для принимаемых пакетов вы можете указать также опцию ! syn
. Правилам, в которых указана опция --syn
, соответствуют только пакеты, содержащие запросы на установление соединений, а символ !
означает отрицание, т.е. заданному правилу будут удовлетворять только пакеты, которые были переданы серверами в ответ на запросы клиентов.
Использование IP-адресов при выполнении фильтрации
При создании правил могут указываться IP-адреса или блоки IP-адресов. IP-адрес источника задается с помощью опции --source
( -s
), а IP-адрес назначения — посредством опции --destination
( -d
). Например, если вы хотите запретить взаимодействие с компьютерами сети 172.24.0.0/16, вам надо создать правила, которые отвергали бы пакеты, переданные из указанной сети, а также пакеты, адресованные компьютерам этой сети. Соответствующие команды имеют следующий вид:
# iptables -A INPUT -s 172.24.0.0/16 -j DROP
# iptables -A OUTPUT -d 172.24.0.0/16 -j DROP
Опции -s
и -d
часто используются вместе с опциями, определяющими номера портов. Таким образом, вы можете сформировать правила, согласно которым взаимодействовать по сети будут иметь право только определенные компьютеры, обращающиеся по определенным портам. Предположим, например, что вы создаете брандмауэр для защиты локальной сети, но хотите при этом разрешить удаленным пользователям, работающим в сети 10.34.176.0/24, обращаться к серверам SSH локальной сети (серверы SSH ожидают обращения через порт 22). Для этого надо определить следующие команды:
# iptables -A FORWARD -s 10.34.176.0/24 -p tcp \
Читать дальше