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

Удалите autodiscover.xml, если iptables не работает

Я пытаюсь заблокировать все запросы autodiscover.xml к нашему серверу с помощью iptables. Файл автообнаружения не существует на нашем сервере, но поскольку у веб-сайта нет субдомена, запросы попадают на наш сервер. Вот что я ввел до сих пор, но они не работают. См. Журнал ниже. Запросы продолжают поступать.

iptables -I INPUT -p tcp --dport 80 -m string --string "POST /autodiscover" --algo bm -j DROP
iptables -I INPUT -p tcp --dport 443 -m string --string "POST /autodiscover" --algo bm -j DROP

Это приводит к тому, что наверху цепочки INPUT:

DROP       tcp  --  anywhere             anywhere             tcp dpt:http STRING match  "POST /autodiscover" ALGO name bm TO 65535
DROP       tcp  --  anywhere             anywhere             tcp dpt:https STRING match  "POST /autodiscover" ALGO name bm TO 65535

Однако я все еще получаю запросы в журнале Apache.

[09/Jan/2020:17:04:31 -0500] "POST /autodiscover/autodiscover.xml HTTP/1.1" 403 3668 "-" "Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.6701; Pro)"
[09/Jan/2020:17:12:59 -0500] "POST /autodiscover/autodiscover.xml HTTP/1.1" 403 3668 "-" "Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.6701; Pro)"

iptables здесь не подходит для работы. Вы работаете исходя из предположения, что то, что вы увидите на уровне TCP, совпадает с тем, что отправляет браузер, но это часто не так.

Самым большим примером может быть HTTPS, а также HTTP / 2 ... в более общем плане вы также обнаружите, что здесь также будет мешать кодирование сжатия.

Еще одна вещь, которая сорвет ваши попытки здесь и потенциально нарушит другой трафик, - это поддержка соединения.

Поскольку вы используете Apache httpd, вам действительно следует делать это в httpd. Вот один из таких примеров, который я использую для предотвращения передачи таких запросов на бэкэнд (httpd используется как обратный прокси), и вместо этого я перенаправляю его на один из серверов Exchange:

ProxyPass        /autodiscover/autodiscover.xml !
Redirect 302     /autodiscover/autodiscover.xml https://autodiscover.example.org/autodiscoverer.xml

Другой вариант - запретить контент. Здесь я также показал, как вы можете комбинировать это, если вы не хотите запрещать внутренних клиентов (хотя на практике вам все равно может потребоваться поддержка пользователей за пределами вашей сети).

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^10\.
RewriteCond %{REQUEST_URI} ^/autodiscover
RewriteRule .* - [F]

Еще один пример, который просто 404 отправляет запросы (опять же, в среде обратного прокси)

#
# Deal with some particularly noisy 404s that we don't want to throw back to the
# backend as they can take a long time to process.
#
ProxyPass        /autodiscover/autodiscover.xml !
RewriteRule      ^/autodiscover/autodiscover.xml$ - [R=404,L]