Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: sendmail и iptables
Форумы портала PHP.SU » Серверное администрирование » Администрирование *nix » sendmail и iptables

Страниц (1): [1]
 

1. Vinyl - 06 Апреля, 2013 - 15:03:01 - перейти к сообщению
Доброго времени.

Настраиваю iptables на сервере Debian 6 (VPS, KVM).
На сервере снаружи нужна видимость только nginx(80) и ssh(22).
Также, нужно обеспечить работу sendmail(25,587)

Установил правила
CODE (bash):
скопировать код в буфер обмена
  1. #!/bin/bash
  2.  
  3. # сбрасываем все ранее установленные правила
  4. iptables -F
  5. iptables -t nat -F
  6. iptables -t mangle -F
  7.  
  8. iptables -X
  9. iptables -t nat -X
  10. iptables -t mangle -X
  11.  
  12.  
  13. # по умолчанию
  14. iptables -P INPUT DROP
  15. iptables -P OUTPUT ACCEPT
  16. iptables -P FORWARD DROP
  17.  
  18.  
  19. iptables -A INPUT -i lo -j ACCEPT
  20. iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
  21. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  22.  
  23. iptables -A INPUT  -p tcp --dport 25 -j ACCEPT
  24. iptables -A INPUT  -p tcp --sport 25 -j ACCEPT
  25.  
  26. iptables -A INPUT  -p udp --dport 25 -j ACCEPT
  27. iptables -A INPUT  -p udp --sport 25 -j ACCEPT
  28.  
  29. iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
  30. iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
  31.  
  32. iptables -A OUTPUT -p udp --dport 25 -j ACCEPT
  33. iptables -A OUTPUT -p udp --sport 25 -j ACCEPT
  34.  
  35. iptables -A INPUT  -p tcp --dport 587 -j ACCEPT
  36. iptables -A INPUT  -p tcp --sport 587 -j ACCEPT
  37.  
  38. iptables -A INPUT  -p udp --dport 587 -j ACCEPT
  39. iptables -A INPUT  -p udp --sport 587 -j ACCEPT
  40.  
  41. iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT
  42. iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT
  43.  
  44. iptables -A OUTPUT -p udp --dport 587 -j ACCEPT
  45. 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 ничего. Подскажите, где я ошибся. Спасибо.
2. DeepVarvar - 06 Апреля, 2013 - 17:21:01 - перейти к сообщению
Vinyl пишет:
FORWARD DROP
Зачем внутренние пакеты дропаешь?
А ниже нигде не разрешаешь. Это же твой локалхост.
3. Vinyl - 06 Апреля, 2013 - 17:51:17 - перейти к сообщению
DeepVarvar пишет:
Зачем внутренние пакеты дропаешь?
C iptables -P FORWARD ACCEPT то же самое.

DeepVarvar пишет:
А ниже нигде не разрешаешь. Это же твой локалхост.
Ну эти правила я как-то где-то вычитал, а вникать не вникал. На 80 работает же всё Радость

Я до сих пор не могу с iptables разобраться, это, видимо, выше моих сил Разнесу!
4. Мелкий - 06 Апреля, 2013 - 18:00:23 - перейти к сообщению
sendmail точно на 587 порту? Гляньте /sbin/ss -ln

Как вариант - нет 53 порта (DNS), если для входящей почты идёт проверка PTR - то она сфейлится всегда.
5. Vinyl - 06 Апреля, 2013 - 18:21:13 - перейти к сообщению
Кажись положил я его серьезно...
Были у меня два файла в корне:
/iptables_set - его листинг выше
/iptables_reset - в нем только сбрасывающие правила
Кроном запускался каждые 5 минут /iptables_reset на всякий случай, а /iptables_set у меня в автозагрузке висел. А /iptables_reset я в crontab то ставил, то убирал. И последний раз, видимо, _set вместо _reset написал... А на лисяре мне посоветовали
Цитата:
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

что я и сделал. Теперь все отвалилось, ничего не работает, так это ещё и в автозагрузке. Видимо, веселая ночь меня ждет.

Мелкий пишет:
sendmail точно на 587 порту?
в netstat -lptn слушал 25 и 587

Мелкий пишет:
Гляньте /sbin/ss -ln
Уже завтра, видимо

Мелкий пишет:
Как вариант - нет 53 порта (DNS)
Спасибо. Попробую.
(Добавление)
Выкрутился через внутренний терминал Hetzner'a Пляшу от радости

/sbin/ss -ln пишет:
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 50 127.0.0.1:3306 *:*
0 10 127.0.0.1:587 *:*
0 128 127.0.0.1:11211 *:*
0 128 *:80 *:*
0 128 *:81 *:*
0 128 *:22 *:*
0 10 127.0.0.1:25 *:*


Мелкий пишет:
нет 53 порта (DNS)
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT ? Если так, то тоже не работает.
6. Мелкий - 06 Апреля, 2013 - 22:17:50 - перейти к сообщению
Vinyl пишет:
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT ? Если так, то тоже не работает.

Он udp. Впрочем, по RFC tcp тоже используется, но обычно udp.

Сделайте в конце правило -j LOG, тогда запишет в лог данные о пришедших в это правило пакетах.
7. Vinyl - 06 Апреля, 2013 - 22:29:12 - перейти к сообщению
Мелкий пишет:
Сделайте в конце правило -j LOG

Спойлер (Отобразить)
Ничего не пойму Огорчение
8. Vinyl - 09 Апреля, 2013 - 09:37:35 - перейти к сообщению
Готово. Если кому-то пригодится:
CODE (bash):
скопировать код в буфер обмена
  1. #!/bin/bash
  2.  
  3. iptables -F
  4. iptables -t nat -F
  5. iptables -t mangle -F
  6.  
  7. iptables -X
  8. iptables -t nat -X
  9. iptables -t mangle -X
  10.  
  11. iptables -P INPUT DROP
  12. iptables -P OUTPUT ACCEPT
  13. iptables -P FORWARD DROP
  14.  
  15. iptables -A INPUT -i lo -j ACCEPT
  16. iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
  17. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  18.  
  19. iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
  20.  
  21. iptables -A INPUT  -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
  22. iptables -A OUTPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
  23.  
  24. iptables -A INPUT  -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
  25. iptables -A OUTPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
Так работает nginx и sendmail. В плане безопасности не уверен.

 

Powered by ExBB FM 1.0 RC1