Я создал правило, используя UFW, которое запрещало IP-адрес с помощью следующей команды
sudo ufw insert 1 deny from <ip address> to any
Теперь, если я пытаюсь подключиться к серверу по SSH с этого IP-адреса, он блокируется, но если я пытаюсь получить доступ к одному из веб-сайтов, размещенных на этом сервере, он работает.
Я проверил журнал доступа nginx, и он показывает трафик, поступающий с правильного IP-адреса, и я сделал
sudo ufw status numbered
и IP указан как номер 1 перед любыми разрешающими правилами.
Как я могу это решить?
Единственное, о чем я могу думать, - это то, что конкретный сайт находится за облачной вспышкой. Мы внесли необходимые изменения, чтобы исходный IP-адрес появился в журнале nginx ... но UFW должен заблокировать его до того, как он достигнет nginx ... так что есть что-то, что нам нужно сделать с UFW, чтобы он распознал исходный исходный IP-адрес.
UFW видит IP-адрес только в заголовках IP-пакетов, поступающих на ваш сервер. Поэтому он видит только IP-адрес Cloudflare.
В nginx все по-другому, потому что он может просматривать заголовки HTTP, где Cloudflare добавляет исходный IP-адрес запроса, а nginx может использовать его в качестве IP-адреса клиента.
Вы не можете добиться того, чего хотите, с помощью правила UFW. Единственная альтернатива - работать с nginx или посмотреть, есть ли у Cloudflare какие-либо функции блокировки IP-адресов.