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

iptables разрешает SMTP-соединения только с start tls

Можно ли как-нибудь заблокировать / прервать незашифрованные соединения smtp с помощью iptables?

эффективно отклоняя все соединения, которые не запускаются tls.

Iptables в основном предназначен для фильтрации метаданных сетевого пакета, таких как заголовки IP, параметры TCP и т. Д. TLS обрабатывается на уровне приложения: вам нужно наблюдать, что происходит внутри потока TCP.

Вы можете проверить содержимое пакетов с помощью string расширение, и вы можете написать фильтры пользовательского уровня, если ядра недостаточно. Но это было бы очень сложно: например, потоки TCP можно разбивать на пакеты произвольным образом, а пакеты TCP могут приниматься не по порядку ... Вам придется иметь дело со всеми этими проблемами (дублирование работы ядро).

Здесь вы ищете прокси-сервер SMTP, который пересылает соединения TLS и блокирует соединения без TLS. Вклад Iptable будет заключаться только в том, чтобы SMTP-трафик действительно проходил через прокси.

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

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

Результатом является то, что гораздо проще обеспечить соблюдение требований уровня приложения внутри приложения. Вы не говорите, какой MTA используете, но я подозреваю, что большинство MTA, которые достаточно шустры, чтобы выполнять TLS, достаточно умны, чтобы требовать этого.

Я использую sendmail. Есть хорошая статья об обязательном использовании TLS от различных провайдеров на http://www.brandonhutchinson.com/Using_TLS_with_Sendmail.html , который направляет меня к записи базы данных доступа

TLS_Clt:communication_partner_MTA                           PERM+VERIFY:112

для чего требуется, чтобы конкретный партнер по связи, предположительно идентифицируемый по IP-адресу, как аутентифицировался с помощью ключа длиной не менее 112 бит, так и имел правильно подписанный сертификат. Страница конфигурации sendmail по адресу http://www.sendmail.org/documentation/configurationReadme в разделе КОНФИГУРАЦИЯ КОНФИГУРАЦИИ АНТИ-СПАМА говорится, что записи базы данных доступа, включающие адреса IPv4, могут принимать форму одного октета, который затем применяется ко всем адресам, начинающимся с этого октета. Так что я размышлять, и я подчеркиваю, что это просто предположение, что sendmail позволит мне иметь серию записей

TLS_Clt:1       PERM:112
TLS_Clt:2       PERM:112
TLS_Clt:3       PERM:112
....
TLS_Clt:223       PERM:112

Обязательное шифрование (хотя сертификаты с неподтвержденной подписью; самоподписанные сертификаты TLS очень распространены, и я бы не стал их запрещать) со всех IP-адресов. Я бы также не есть запись для TLS_Clt:127, поскольку localhost, вероятно, не должен быть таким ограниченным.

Я повторяю, что я не тестировал ничего из вышеперечисленного, и если ваш MTA отличается от sendmail, это не будет особенно полезно; но я хотел показать, что у моего MTA (по крайней мере) есть зацепки для того, чтобы делать то, что вы хотите. Удачи в ваших исследованиях.