Мне нужно настроить правила IpTable для сервера с nginx, ssh и sendmail. Теперь проблема в том, что с моими правилами я больше не могу отправлять электронные письма другим хостам. Электронные письма на localhost работают, но отправка на разные серверы - нет, когда брандмауэр включен.
Я попытался открыть как входящий, так и исходящий порт 25 и порты поиска DNS, но ничего не помогло. Любые идеи?
Обновить:
Вот мои правила:
#! /bin/sh
# firewall iptable rules
interface="eth0"
# first, deny all
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# open loopback device completely
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# open ssh ports
iptables -A INPUT -p tcp -i $interface --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o $interface --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
# open browser ports
iptables -A INPUT -p tcp -i $interface --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o $interface --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
Если вы хотите разрешить своему Linux-серверу отправлять электронные письма через порт 25, вы должны разрешить это, добавив такое правило, как:
$ iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
Аналогично для DNS-трафика:
$ iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
Если таких явных правил нет, трафик будет запрещен по умолчанию, поскольку политика по умолчанию установлена на DROP
.
Обновить:
Не забудьте разрешить связанные / установленные соединения, используя:
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Добавьте следующие правила в свои IPTables:
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT