Можно ли как-нибудь заблокировать / прервать незашифрованные соединения 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 (по крайней мере) есть зацепки для того, чтобы делать то, что вы хотите. Удачи в ваших исследованиях.