Назад | Перейти на главную страницу

iptables как шлюз и порты POP3 SMTP

при попытке открыть порты 110 и 25 в моих iptables для пользователей только Outlook, я не могу сделать это, кроме как путем пересылки как таковой:

-I FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
-I FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT

но это позволяет остальным пользователям в моей локальной сети обходить мой прокси-сервер squid. каков правильный синтаксис этих команд пересылки только на порты 110 и 25 пера?

РЕДАКТИРОВАТЬ:

это мой текущий файл iptables, который я настраиваю напрямую. пока он работает, но я уверен, что он далек от совершенства. в настоящее время пользователи без явного прокси-сервера не могут подключиться к Интернету. порты Outlook работают.

# Generated by iptables-save v1.3.5 on Fri Mar  9 13:59:24 2012
*nat
:PREROUTING ACCEPT [25448:1902369]
:POSTROUTING ACCEPT [29:1625]
:OUTPUT ACCEPT [786:56571]
-A POSTROUTING -o eth1 -j MASQUERADE 
COMMIT
# Completed on Fri Mar  9 13:59:24 2012
# Generated by iptables-save v1.3.5 on Fri Mar  9 13:59:24 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [1:68]
:OUTPUT DROP [0:0]
:LOGDROP - [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT 
-A INPUT -i eth0 -p tcp -m tcp --dport 3128 -m state --state NEW -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 110 -m state --state NEW -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -j LOGDROP 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth0 -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 5190 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --dport 110 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-I FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-I FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT
-I FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT
-A LOGDROP -j LOG 
-A LOGDROP -j DROP 
COMMIT
# Completed on Fri Mar  9 13:59:24 2012

Хорошо, давайте начнем с самого начала.

Установите FORWARD chaing на ACCEPT (на всякий случай)

iptables -P FORWARD ACCEPT

Очистите цепочку FORWARD

iptables -F FORWARD

Разрешите своим пользователям проверять smtp и pop

iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT

НЕ добавить -d 192.168.1.0/24 -j ПРИНЯТЬ, как это небезопасный.

Дайте ответы на эти вопросы

iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT

установите для политики цепочки FORWARD значение DROP

iptables -P FORWARD DROP

Теперь первая часть должна работать. Если нет, то ip_forward не включает.

echo 1 > /proc/sys/net/ipv4/ip_forward

По поводу проблемы с перезагрузкой. Команды Iptables не являются постоянными, поэтому вы должны использовать сценарий или встроенный в дистрибутив Linux сценарий администрирования iptables.

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

iptables-save >/etc/myfirewall_config

И подключите и initscript, который загружает его обратно при загрузке

iptables-restore </etc/myfirewall_config

Готово.

Если после всего этого у вас все еще есть проблемы, опубликуйте свою таблицу NAT (iptables -t nat -vnL)

'-I FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT' включает / открывает доступ из (возможно) вашего исходящего сервера во внутреннюю сеть.

для разрешения использования исходящего соединения - 'iptables -I FORWARD -s 192.168.11.0/24 -p tcp --dport 110 -j ACCEPT'.

имейте в виду, что включать исходящее соединение так же неправильно, вы даете вирусу / червям / троянам возможность подключаться к Интернету через эти порты. ограничить его, указав точный IP-адрес назначения, чтобы пользователи могли использовать внутренний SMTP-сервер для исходящего соединения с включенной AUTH.

если им нужен удаленный pop3, загрузите почту через pop3 на сервер внутри вашей сети и сообщите своим пользователям, что нужно использовать внутреннюю «зеркальную» копию pop3.

есть также некоторые прокси pop3 или какой-то почтовый клиент может запускать pop3 / smtp через прокси ...