Расскажу про ситуацию, в которой я немного облажался. Случилась буквально на днях на одном из серверов мониторинга Zabbix.
Я всегда закрываю доступ ко всему, что не требуется выставлять в интернет. В данном случае с помощью веб сервера Nginx настраивается разрешение на доступ к веб интерфейсу только с разрешённых ip адресов. Для этого достаточно в секции server конфига Nginx добавить:
allow 1.1.1.1/32;allow 2.2.2.2/32;allow 3.3.3.3/32;allow 127.0.0.1/32;deny all;
И всё. Самый простой и быстрый способ. Но в какой-то момент мне нужно было настроить работу по https. Для этого надо было открыть доступ к виртуальному хосту, чтобы серверы let's encrypt смогли подтвердить доменное имя.
Для этого пришлось убрать запрет из секции server, добавить location для /.well-known, а запрет я повесил на корневой location /. И посчитал, что всё нормально. По идее всё и должно быть нормально. При обращении на адрес веб интерфейса zabbix получишь 404 ошибку.
На днях захожу в Zabbix и вижу сообщение, что недавно были неудачные попытки залогиниться. Как-то напрягся. Да ещё и IP адреса какие-то странные, вообще с другого конца света. Начал всё проверять. Ну нет доступа к веб интерфейсу. Проверил несколько раз, запрет настроен, по адресу сайта выдаёт 404.
Начал внимательно смотреть логи веб сервера. И реально вижу, на некоторые запросы с левых ip адресов ответ веб сервера 200. Присмотрелся на запросы и всё понял. Какой-то бот занимался перебором и периодически слал POST запросы на index.php. А для php в конфиге nginx выделен отдельный location. И для него я просто забыл поставить запрет на доступ. Я закрыл только location /, а location ~ \.php$ остался открытым. В итоге все прямые запросы на php скрипты проходили.
Исправил я это дело. Впредь буду внимательнее. Так часто бывает. Сначала настроишь, всё нормально. Потом надо быстренько что-то добавить или исправить. Делаешь исправление и что-то забываешь. С firewall так часто бывает. Первичная настройка обычно внимательно делается и проверяется, а потом уже быстро что-то добавляется, или временно, и забывается, или недостаточно проверяется. В итоге остаются дырки. В данном случае некритично, а сам Zabbix помог сразу закрыть дырку.
Вот сам конфиг виртуального хоста, если кому-то интересно:
⇨ https://pastebin.com/1pPz01m0
#zabbix