Страница 1 из 1

sendmail и iptables

Добавлено: 2013-04-06 14:51:35
Vinyl
Доброго времени.
Настраиваю iptables на сервере Debian 6 (VPS, KVM).
На сервере снаружи нужна видимость только nginx(80) и ssh(22).
Также, нужно обеспечить работу sendmail(25,587)

Установил правила

Код: Выделить всё

#!/bin/bash

# сбрасываем все ранее установленные правила
iptables -F
iptables -t nat -F
iptables -t mangle -F
 
iptables -X
iptables -t nat -X
iptables -t mangle -X


# по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

 
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT  -p tcp --dport 25 -j ACCEPT
iptables -A INPUT  -p tcp --sport 25 -j ACCEPT
 
iptables -A INPUT  -p udp --dport 25 -j ACCEPT
iptables -A INPUT  -p udp --sport 25 -j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --sport 25 -j ACCEPT

iptables -A INPUT  -p tcp --dport 587 -j ACCEPT
iptables -A INPUT  -p tcp --sport 587 -j ACCEPT
 
iptables -A INPUT  -p udp --dport 587 -j ACCEPT
iptables -A INPUT  -p udp --sport 587 -j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 587 -j ACCEPT
iptables -A OUTPUT -p udp --sport 587 -j ACCEPT
После установки таких правил sendmail не отправляет почту. Как только сбросишь настройки iptables, сразу начинают письма сыпаться в ящик (как будто в очереди стояли). В /var/log/mail.log, /var/log/mail.warn, /var/log/syslog и /var/log/messages ничего. Подскажите, где я ошибся. Спасибо.

Re: sendmail и iptables

Добавлено: 2013-04-06 17:31:29
BlitzKrieg
Прекратите бездумно копипастить правила с идиотских статей.

Сбрасывать ничего не нужно.
Не знаю как в дебиане подгружаются правила, но в убунте достаточно добавить в /etc/network/interfaces строку pre-up iptables-restore</etc/iptables/iptables.rules
Сам файл iptables.rules создается так iptables-save>/etc/iptables/iptables.rules
или с ключом -c Для того, чтобы сохранить счетчики (например удобно, когда нужно сократить кол-во порядком выросших правил).

По поводу правил. Для удобства давно существует conntrack.

Напирмер так будет выглядеть цепочка INPUT и OUTPUT для вашего ssh (без лишних заморочек с секурностью).

Код: Выделить всё

iptables -A INPUT LOG
iptables -A INPUT DROP
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT LOG
iptables -A OUTPUT DROP
iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Теперь для того, чтобы открыть 25 порт достаточно в INPUT добавить одно правило.

Код: Выделить всё

iptables -I INPUT -p tcp --dport 25 -j ACCEPT
Почитайте например это для начала: https://help.ubuntu.com/community/IptablesHowTo

Re: sendmail и iptables

Добавлено: 2013-04-06 17:42:08
BlitzKrieg
Возможно секурнее будет так, не большой знаток iptables, поправьте если ошибся.
Можно заменить два разрешающих правила на такие:

Код: Выделить всё

iptables -I INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m conntrack --ctstate NEW -p tcp --dport 25 -j ACCEPT

Re: sendmail и iptables

Добавлено: 2013-04-06 17:58:58
Vinyl
BlitzKrieg писал(а):Прекратите бездумно копипастить правила с идиотских статей.
Я сколько не пытался вникнуть в iptables - все безуспешно. Так что пока это мой единственный выход.
BlitzKrieg писал(а):По поводу правил. Для удобства давно существует conntrack.

Напирмер так будет выглядеть цепочка INPUT и OUTPUT для вашего ssh (без лишних заморочек с секурностью).

Код: Выделить всё

iptables -A INPUT LOG
iptables -A INPUT DROP
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT LOG
iptables -A OUTPUT DROP
iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Теперь для того, чтобы открыть 25 порт достаточно в INPUT добавить одно правило.

Код: Выделить всё

iptables -I INPUT -p tcp --dport 25 -j ACCEPT

Код: Выделить всё

Bad argument `LOG'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `LOG'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.8: Invalid rule number `conntrack'
Try `iptables -h' or 'iptables --help' for more information.
BlitzKrieg писал(а):Почитайте например это для начала: https://help.ubuntu.com/community/IptablesHowTo
Я на русском-то сколько книг-мануалов перечитал и никак, а тут на английском.. ))

Re: sendmail и iptables

Добавлено: 2013-04-06 18:43:41
BlitzKrieg
Да я ошибся

Код: Выделить всё

iptables -A OUTPUT LOG
тут забыл добавить -j

Код: Выделить всё

iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
здесь пробела перед -m нет
говорю же прекратите тупо копипастить. Возьмите правила по одному и добавляйте. Параллельно проверяйте синтаксис.
По этой ссылке хауту и не какое-то идеотское.

Re: sendmail и iptables

Добавлено: 2013-04-08 10:08:37
BlitzKrieg
Кстати если у вас такие проблемы с iptables воспользуйтесь fwbuilder http://www.fwbuilder.org/4.0/quick_star ... uick_start