Защита сайтов от РКН

Админ

Администратор
Регистрация
24.02.18
Сообщения
1.582
Реакции
443
Полная инструкция по блокировке Роскомнадзора
Шаг 1: Создать глобальный конфиг блокировки в Nginx

bash



nano /etc/nginx/conf.d/block-rkn.conf

Вставить содержимое:


nginx


# Блокировка по User-Agent
map $http_user_agent $block_by_ua {
default 0;
"~*rkn" 1;
"~*roskomnadzor" 1;
"~*arm-nat" 1;
"~*zapret-info" 1;
}

# Блокировка по Referer (домены РКН)
map $http_referer $block_by_referer {
default 0;
"~*rkn\.gov\.ru" 1;
"~*arm-nat\.rkn\.gov\.ru" 1;
"~*zapret-info\.gov\.ru" 1;
}

# Блокировка по IP (известные подсети РКН)
geo $rkn_block {
default 0;
77.75.107.0/24 1;
77.75.108.0/24 1;
77.75.109.0/24 1;
77.75.110.0/24 1;
77.75.111.0/24 1;
77.75.112.0/24 1;
77.75.113.0/24 1;
77.75.114.0/24 1;
77.75.115.0/24 1;
}

Сохранить: Ctrl+O, Enter, Ctrl+X

Шаг 2: Добавить правила в cardik.ru

bash



nano /etc/nginx/sites-available/cardik.ru

Добавить после server { в ОБА блока (для порта 80 и для порта 443):


nginx


# Блокировка РКН
if ($rkn_block = 1) {
return 444;
}
if ($block_by_ua = 1) {
return 444;
}
if ($block_by_referer = 1) {
return 444;
}

Сохранить.

Шаг 3: Добавить правила в phphack.ru

bash



nano /etc/nginx/sites-available/phphack.ru

Добавить после server {:


nginx


# Блокировка РКН
if ($rkn_block = 1) {
return 444;
}
if ($block_by_ua = 1) {
return 444;
}
if ($block_by_referer = 1) {
return 444;
}

Сохранить.

Шаг 4: Добавить правила в rust-client.ru

bash



nano /etc/nginx/sites-available/rust-client.ru

Добавить после server {:


nginx


# Блокировка РКН
if ($rkn_block = 1) {
return 444;
}
if ($block_by_ua = 1) {
return 444;
}
if ($block_by_referer = 1) {
return 444;
}

Сохранить.

Шаг 5: Блокировка IP через UFW (firewall)

bash


ufw deny from 77.75.107.0/24
ufw deny from 77.75.108.0/24
ufw deny from 77.75.109.0/24
ufw deny from 77.75.110.0/24
ufw deny from 77.75.111.0/24
ufw deny from 77.75.112.0/24
ufw deny from 77.75.113.0/24
ufw deny from 77.75.114.0/24
ufw deny from 77.75.115.0/24
ufw reload

Шаг 6: Проверить и перезагрузить Nginx

bash



nginx -t

Если ошибок нет:


bash



systemctl reload nginx

Шаг 7: Проверить блокировку

bash


# Проверить что Nginx работает
systemctl status nginx

# Проверить UFW правила
ufw status numbered

Как это работает:
  • IP блокировка: Блокирует доступ с подсетей РКН на уровне firewall
  • User-Agent блокировка: Блокирует ботов с UA содержащим "rkn", "roskomnadzor", "arm-nat"
  • Referer блокировка: Блокирует запросы с доменов РКН
  • return 444: Закрывает соединение без ответа (как будто сервера нет)
Выполните все шаги по порядку.
 

Админ

Администратор
Регистрация
24.02.18
Сообщения
1.582
Реакции
443
Инструкция по блокировке Роскомнадзора
Шаг 1: Создать глобальный конфиг блокировки в Nginx



Код:
nano /etc/nginx/conf.d/block-rkn.conf
Вставить содержимое:

Код:
# Блокировка по User-Agent
map $http_user_agent $block_by_ua { default 0; "~*rkn" 1; "~*roskomnadzor" 1; "~*arm-nat" 1; "~*zapret-info" 1;
}
# Блокировка по Referer (домены РКН)
map $http_referer $block_by_referer { default 0; "~*rkn\.gov\.ru" 1; "~*arm-nat\.rkn\.gov\.ru" 1; "~*zapret-info\.gov\.ru" 1;
}
# Блокировка по IP (известные подсети РКН)
geo $rkn_block { default 0; 77.75.107.0/24 1; 77.75.108.0/24 1; 77.75.109.0/24 1; 77.75.110.0/24 1; 77.75.111.0/24 1; 77.75.112.0/24 1; 77.75.113.0/24 1; 77.75.114.0/24 1; 77.75.115.0/24 1;
}
Сохранить: Ctrl+O, Enter, Ctrl+X

Шаг 2: Добавить правила в Вашдомен.ru
Выполнить:

Код:
nano /etc/nginx/sites-available/Вашдомен.ru
Добавить после server { в ОБА блока (для порта 80 и для порта 443):

Код:
# Блокировка РКН
if ($rkn_block = 1) { return 444;
}
if ($block_by_ua = 1) { return 444;
}
if ($block_by_referer = 1) { return 444;
}
Сохранить.

Получится типа так ваш конфиг пример конфига

server {
listen 8080;
listen 8443 ssl http2;
server_name rust-client.ru www.вашдомен.ru;

root /var/www/вашдомен.ru;
index index.php index.html;
# Блокировка РКН
if ($rkn_block = 1) {
return 444;
}
if ($block_by_ua = 1) {
return 444;
}
if ($block_by_referer = 1) {
return 444;
}
# SSL сертификаты
ssl_certificate /etc/letsencrypt/live/вашдомен/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/вашдомен/privkey.pem;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~* \.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|webp|woff|woff2)$ {
expires 24h;
}
}

Шаг 5: Блокировка IP через UFW (firewall)
отправляем команду

ufw deny from 77.75.107.0/24
ufw deny from 77.75.108.0/24
ufw deny from 77.75.109.0/24
ufw deny from 77.75.110.0/24
ufw deny from 77.75.111.0/24
ufw deny from 77.75.112.0/24
ufw deny from 77.75.113.0/24
ufw deny from 77.75.114.0/24
ufw deny from 77.75.115.0/24
ufw reload

Шаг 6: Проверить и перезагрузить Nginx


nginx -t

Если ошибок нет:


systemctl reload nginx

Шаг 7: Проверить блокировку


# Проверить что Nginx работает
systemctl status nginx

# Проверить UFW правила
ufw status numbered

Как это работает:
  • IP блокировка: Блокирует доступ с подсетей РКН на уровне firewall
  • User-Agent блокировка: Блокирует ботов с UA содержащим "rkn", "roskomnadzor", "arm-nat"
  • Referer блокировка: Блокирует запросы с доменов РКН
  • return 444: Закрывает соединение без ответа (как будто сервера нет)
Выполните все шаги по порядку.
 

Админ

Администратор
Регистрация
24.02.18
Сообщения
1.582
Реакции
443
Инструкция по применению AS_Network_List для ваших сайтов
Самый простой способ - использовать готовый blacklist для Nginx

Шаг 1: Скачать готовый blacklist


Код:
cd /etc/nginx
wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nginx/blacklist.conf

Шаг 2: Подключить blacklist в Nginx
Добавьте в начало каждого server блока (вашегосайта.ru):


Код:
nano /etc/nginx/sites-available/Вашсайт.ru
Добавить после server {:

Код:
include /etc/nginx/blacklist.conf;
То же самое для другихсайтов.ru.

Шаг 3: Проверить и перезагрузить



nginx -t
systemctl reload nginx

Автоматическое обновление (опционально)
Создать скрипт обновления:


nano /usr/local/bin/update-blacklist.sh

Содержимое:



#!/bin/bash
cd /etc/nginx
wget -q https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nginx/blacklist.conf -O blacklist.conf.new
mv blacklist.conf.new blacklist.conf
nginx -t && systemctl reload nginx


Сделать исполняемым и добавить в cron:

chmod +x /usr/local/bin/update-blacklist.sh
crontab -e
# Добавить: 0 3 * * * /usr/local/bin/update-blacklist.sh

Что блокирует этот список:
  • Подсети российских госорганов
  • Роскомнадзор
  • ФСБ
  • МВД
  • Другие государственные структуры
Списки обновляются ежедневно автоматически автором репозитория.

Выполните шаги 1-3 для базовой защиты.
 
Сверху Снизу