LINUX.ORG.RU
ФорумAdmin

Проблема с подключением к различным портам сервера

 , ,


2

3

Приветствую всех. Некоторое время назад приняли решение перевести сервис почтовых сообщений на open source. На ubuntu (тек.версия 23.04) установил стандартную связку: postfix+dovecot+roundcube с ldap-авторизацией пользователей. Ящики в формате maildir. Порты для почтовых клиентов 465/993, мфу для используют 25 порт (позволена отправка только внутри организации). «Обкатка» ведется несколько месяцев, в течении этого времени переводим/заводим ящики пользователей, устройств. Проблем в целом не замечал, даже после установки Kaspersky на сервер. Некоторое время назад заметил что устройства (мфу) не могут подключиться по 25 порту, как и удаленные сервера для отправки писем на новый сервер. Ошибок в журналах (syslog, maillog, kernel) не увидел. В netstat 25 порт прослушивался, postfix-ом, после остановки службы соответственно пропадал из вывода netstat. telnet 127.0.0.1 25 не мог подключиться к порту. Отключил iptables, удалил kasper-а, выгрузил/отключил apparmor. В какой-то момент сменил в master.cf smtp на 26, порт поднялся и telnet подключился. Дальше «интереснее». nginx (roundcube) так же перестал принимать запросы на 443 порту, в том числе и на 127.0.0.1 по telnet. Сменил, временно на 444, заработало. Сегодня аналогичное произошло и с webmin, перестал быть доступен по своему порту. Ранее сталкивался с подобным в Graylog, 9200 порт не стартовал, но это было видно в логах. В чем проблема сейчас не могу понять. Возможно кто-то сталкивался с подобным? Есть ли мысли по этому поводу? Уточню, что сервер виртуальный, крутится на vmware 6.7, в конфигурации: 2*cpu, 4gb ОЗУ, lvm (thin provision)



Последнее исправление: demonuga72 (всего исправлений: 1)

Ответ на: комментарий от anc

Наверное стоит уточнить, что клиенты (пользователи и мфу) обращаются к почтовику (а их в связке 2 шт с настроенной синхронизацией Maildir между собой) не напрямую, а через балансировщик (отдельная виртуалка с haproxy) в конфиге которого в дальнейшем и сменил порт сервера с 25 на 26.

demonuga72
() автор топика
Ответ на: комментарий от Infra_HDC

Я не увидел именно этой проблемы. Вот, что написано в топике:

В netstat 25 порт прослушивался, postfix-ом, после остановки службы соответственно пропадал из вывода netstat. telnet 127.0.0.1 25 не мог подключиться к порту.

имхо всё логично. Поэтому непонятно за каким лешим ТС поменял порт.

anc ★★★★★
()
Ответ на: комментарий от router

Все может быть и проще

tcpdump не бубен, а средство диагностики

Когда кто-то не может достучаться снаружи, смотри, долетают ли пакеты. Может у тебя конфликт ip или mac

router ★★★★★
()
Ответ на: комментарий от anc

telnet не мог подключится при запущеном postfix. Вроде, ТС пробовал подключаться telnet'ом постоянно после какждого действия — просто перезапустил postfix, остановил iptables, удалил касперского, apparmor, редактирование master.cf.

mky ★★★★★
()
Ответ на: комментарий от demonuga72
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -F -t nat
iptables -F -t mangle

А не только iptables -F
Если не поможет, скиньте сюда выхлоп ss -lnpt, а лучше кидайте уже сейчас, одно другому не мешает.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 3)
Ответ на: комментарий от demonuga72
  1. Посмотри, чем занят процесс, который должен держать порт

https://habr.com/ru/articles/209446/

  1. проблемы с postfix’ом можно было бы списать на проблемы с syslog’ом. nginx большую часть сам пишет. но все же проверь. если syslog не принимает новые логи (или принимает медленно), процессы, которые их пишут, подвисают
router ★★★★★
()
Ответ на: комментарий от anc

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 100 0.0.0.0:993 0.0.0.0:* users:((«dovecot»,pid=1619545,fd=40))

LISTEN 0 100 0.0.0.0:995 0.0.0.0:* users:((«dovecot»,pid=1619545,fd=25))

LISTEN 0 100 0.0.0.0:587 0.0.0.0:* users:((«master»,pid=1619832,fd=109))

LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:((«nginx»,pid=2259948,fd=11),(«nginx»,pid=2259947,fd=11),(«nginx»,pid=2259946,fd=11))

LISTEN 0 511 0.0.0.0:444 0.0.0.0:* users:((«nginx»,pid=2259948,fd=12),(«nginx»,pid=2259947,fd=12),(«nginx»,pid=2259946,fd=12))

LISTEN 0 100 0.0.0.0:465 0.0.0.0:* users:((«smtpd»,pid=2261181,fd=6),(«master»,pid=1619832,fd=112))

LISTEN 0 100 0.0.0.0:143 0.0.0.0:* users:((«dovecot»,pid=1619545,fd=39))

LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:((«systemd-resolve»,pid=1619321,fd=14))

LISTEN 0 100 0.0.0.0:26 0.0.0.0:* users:((«master»,pid=1619832,fd=13))

LISTEN 0 100 0.0.0.0:110 0.0.0.0:* users:((«dovecot»,pid=1619545,fd=24))

LISTEN 0 100 0.0.0.0:4190 0.0.0.0:* users:((«dovecot»,pid=1619545,fd=15))

LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((«nginx»,pid=2259948,fd=10),(«nginx»,pid=2259947,fd=10),(«nginx»,pid=2259946,fd=10))

demonuga72
() автор топика
Ответ на: комментарий от mky

conntrack -L ничего не вывел.

nft list ruleset действительно выводит большое количество правил, в том числе и моих. Заметил, что в файле с правилами так же появились новые, часть из них -

-A PREROUTING -p tcp -m tcp --dport 25 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 53 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 80 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 110 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 139 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 143 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 389 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 443 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 445 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 587 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

demonuga72
() автор топика
Ответ на: комментарий от anc

В логах только момент остановки/запуска postfix, порт 25 по прежнему не доступен telnet-ом.

netstat: tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2300444/master

ss -lnpt: LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:((«master»,pid=2300444,fd=13))

demonuga72
() автор топика
Ответ на: комментарий от anc

Избирательно (kernel, syslog, mail.log, mail.err)

Вывод iptables-save сокращаю, иначе сообщение слишком большое (спойлер cut в режиме larcode не отрабатывает, странно)

*mangle

:PREROUTING ACCEPT [1015:69037]

:INPUT ACCEPT [1140:79202]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [1225:106329]

:POSTROUTING ACCEPT [1346:120115]

правила, добавленные не мной

:kesl_bypass - [0:0]

-A PREROUTING -j kesl_bypass

-A PREROUTING -p tcp -m mark ! --mark 0x400/0x400 -m connmark --mark 0x200/0x200 -j MARK --set-xmark 0x200/0xffffffff

-A PREROUTING -p tcp -m tcp --dport 25 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j TPROXY --on-port 9789 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0

-A PREROUTING -p tcp -m tcp --dport 53 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j TPROXY --on-port 9789 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0

-A PREROUTING -p tcp -m tcp --dport 80 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j TPROXY --on-port 9789 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0

...

-A OUTPUT -j kesl_bypass

-A OUTPUT -p tcp -m mark ! --mark 0x400/0x400 -m connmark --mark 0x200/0x200 -j MARK --set-xmark 0x200/0xffffffff

-A OUTPUT -p tcp -m tcp --dport 25 -m mark --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j CONNMARK --set-xmark 0x200/0xffffffff

-A OUTPUT -p tcp -m tcp --dport 53 -m mark --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j CONNMARK --set-xmark 0x200/0xffffffff

-A OUTPUT -p tcp -m tcp --dport 80 -m mark --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j CONNMARK --set-xmark 0x200/0xffffffff

...

COMMIT

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT

... мои правила для INPUT ...

-A INPUT -p icmp -j ACCEPT

-A INPUT -i ens160 -j LOG --log-prefix «IPTABLES-LOG-INPUT-LAN:»

-A INPUT -j DROP

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

-A FORWARD -j LOG --log-prefix «IPTABLES-LOG-FORWARD:»

-A FORWARD -j DROP

-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

... мои правила для OUTPUT ...

-A OUTPUT -p icmp -j ACCEPT

-A OUTPUT -j LOG --log-prefix «IPTABLES-LOG-OUTPUT:»

-A OUTPUT -j DROP

COMMIT

*nat

:PREROUTING ACCEPT [264:19349]

:INPUT ACCEPT [204:12272]

:OUTPUT ACCEPT [76:4576]

:POSTROUTING ACCEPT [76:4576]

правила, добавленные не мной

-A PREROUTING -p tcp -m tcp --dport 25 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 53 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

-A PREROUTING -p tcp -m tcp --dport 80 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j ACCEPT

...

demonuga72
() автор топика
Ответ на: комментарий от demonuga72

Избирательно (kernel, syslog, mail.log, mail.err)

а journalctl чего говорит?

Вывод iptables-save сокращаю, иначе сообщение слишком большое

Лор резиновый :) Вот это у вас что за шаманства

-A PREROUTING -p tcp -m tcp --dport 25 -m mark ! --mark 0x400/0x400 -m addrtype --dst-type LOCAL -j TPROXY --on-port 9789 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0

?

anc ★★★★★
()
Ответ на: комментарий от anc

По поводу шаманства, для самого загадка в какой момент эти правила появились. Такие «не заурядные» правила не приходилось «городить».

Сейчас присмотрелся внимательнее, очень похоже на то, что созданы они (уже удаленным) Каспером (:kesl_bypass - [0:0] -A PREROUTING -j kesl_bypass)... Который на входе помечал пакеты для дальнейшего анализа, видимо. По какой причине происходила блокировка пакетов на 25 порт из правил для меня не очевидно. При отключении правил «iptables -F» 25 порт так и не становился доступным.

Сейчас убрал все «шаманские» правила из файла, сменил порт в postfix на 25, в nginx на 443, перезапустил службы - заработало.

Касперский тем не менее установлен на всех unix серверах, используемых в продакшене. Аналогичных проблем не выявляли. Странно, наблюдаю дальше...

demonuga72
() автор топика
Ответ на: комментарий от demonuga72

При отключении правил «iptables -F» 25 порт так и не становился доступным.
iptables -F

Я вам выше Проблема с подключением к различным портам сервера (комментарий) уже про это написал, этого может быть недостаточно и судя по тому что вы привели оно так и есть.

anc ★★★★★
()
Ответ на: комментарий от demonuga72

Касперский тем не менее установлен на всех unix серверах, используемых в продакшене. Аналогичных проблем не выявляли. Странно, наблюдаю дальше…

Логи каспера посмотри

Задачи у разных серверов разные, и потоки данных тоже. А для каспера есть свои эксплоиты. У меня пару раз klms (с последними обновлениями) роняли специально сформированными аттачами

kesl не пробовал, но идеального софта не бывает. логи, багрепорт

router ★★★★★
()