Эквивалент FreeBSD для Linux конфигурации OpenVPN

Я следую руководству ( https://snikt.net/blog/2016/12/01/openvpn- over-https / ) относительно OpenVPN через SSL на машинах Linux. В какой-то момент он гласит:

Мы изменяем / etc / default / openvpn, чтобы автоматически включить этот туннель. Я возвращаю им ответ 444, когда они открывают страницу по умолчанию на прямом IP-адресе, но все же атаки слишком велики, поэтому они делают весь сайт / сервер недоступным на несколько минут, а иногда и на более длительный период, в зависимости от того, что атака делает Nginx занятым.

Итак, я хотел спросить, можно ли отключить доступ к порту 80 на ip по умолчанию, не затрагивая другие мои сайты и службы? Эти атаки слишком велики, поэтому мой файл журнала для виртуального хоста по умолчанию становится 1 ГБ менее чем за 1 час, поэтому даже возврат 444 не работает, поэтому я думаю, что блокирование его на уровне брандмауэра будет лучше?

Есть предложения, как добиться этого с помощью iptables?

Я использую CentOS 6.9 с Ngiinx 1.13.

Еще идеи? Все еще жду!

0
задан 11 November 2017 в 15:56
1 ответ

. Вы можете настроить правила iptables, чтобы разрешить доступ только IP-адресам CloudFlare к вашему экземпляру Nginx через порт 80 и т. д. достигается путем создания ipset со списком диапазонов IPv4 CloudFlare (доступно на https://www.cloudflare.com/ips-v4 ), а затем применения соответствующих правил iptables к использовать набор.

Что-то вроде следующего должно сработать:

ipset -N cloudflare nethash

ipset -q -A cloudflare A.B.C.D/M
... [ repeat above for each entry in CF ips-v4 file ]

iptables -A INPUT -p tcp --dport 80 -m set --match-set cloudflare src -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

Дальнейший трюк с Nginx с использованием заголовка CloudFlare Ray-ID

Для каждого сайта, перед которым стоит CloudFlare, вы также можете применить этот трюк в Nginx . Он эффективно проверяет наличие заголовка CloudFlare CF-Ray в ожидаемом формате. Если этого НЕ существует, возвращается 444 (немедленное отбрасывание запроса).

server {
    listen A.B.C.D:80;
    server_name _;
    if ($http_cf_ray !~ '^[0-9a-f]{16}-[A-Z]{3}$') { return 444; }
...

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

    if ($http_cf_ray !~ '^[0-9a-f]{16}-[A-Z]{3}$') { access_log off; error_log off; return 444; }
1
ответ дан 4 December 2019 в 16:06

Теги

Похожие вопросы