Тут нужно было заблокировать доступ к серверу целой AS при помощи iptables, сетей было много, ручками лень, решил написать bash скрипт.
В целом он подойдет и вам, под свои нужды отредактируете сами.
apt install whois
Обратите внимание на строки:
# Проверка наличия файла для сохранения правил iptables # Если установлен iptables-persistent iptables_rules_file="/etc/iptables/rules.v4" # Просто iptables # iptables_rules_file="/etc/iptables.save"
#!/bin/bash
# AS для блокировки
blocked_as=(
"AS12345"
"AS123456"
# добавьте другие AS, которые вы хотите заблокировать, в формате "ASxxxx"
)
# Проверка наличия файла для сохранения правил iptables
# iptables_rules_file="/etc/iptables/rules.v4"
iptables_rules_file="/etc/iptables.save"
# Создание временного файла для новых правил
temp_rules_file=$(mktemp)
# Получение списка IP-адресов для данного AS
for as in "${blocked_as[@]}"; do
ip_addresses=$(whois -h whois.radb.net -- '-T route -i origin '$as | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}")
# Добавление правил iptables для блокировки каждого IP-адреса
for ip in $ip_addresses; do
# Проверка, есть ли данное правило уже в файле
if ! grep -q "$ip" "$iptables_rules_file"; then
# Если нет, добавляем во временный файл
echo "-A INPUT -s $ip -j DROP" >> "$temp_rules_file"
fi
done
done
# Если есть новые правила, добавляем их в файл перед COMMIT
if [ -s "$temp_rules_file" ]; then
echo "# Запрещаем все сети из ${blocked_as[*]}" >> "$temp_rules_file"
echo "" >> "$temp_rules_file" # Пустая строка перед правилами
# Добавление правил в файл перед COMMIT
cat "$iptables_rules_file" | awk '/COMMIT/ {print ""; print "# Запрещаем все сети из '"${blocked_as[*]}"'"; system("cat '"$temp_rules_file"'"); print "";} {print}' > "$iptables_rules_file.tmp" && mv "$iptables_rules_file.tmp" "$iptables_rules_file"
echo "Добавлены новые правила iptables."
else
echo "Нет новых правил для добавления в iptables."
fi
# Удаление временного файла
rm -f "$temp_rules_file"
# Проверка наличия правил в файле перед его применением
if [ -s "$iptables_rules_file" ]; then
# Перезагрузка правил iptables
iptables-save > "$iptables_rules_file"
iptables-restore < "$iptables_rules_file"
echo "Обновление правил iptables завершено."
else
echo "Файл правил iptables пуст или отсутствует. Нет правил для применения."
fi
Если при добавления правил видите:
Файл правил iptables пуст или отсутствует. Нет правил для применения.
То просто добавляем рандомное правило, например:
iptables -A INPUT -p tcp --dport 8888 -j DROP
и перезапустите bash скрипт
Установка WireGuard на Debian 10 Buster и Debian 11 Bullseye
