#!/bin/bash
#очищаем старые правила
sudo iptables -F
# Для лурбэк интерфейса разрешмем только траффик, идущий через lo0 интерфейс.
# Блокируем остальной траффик к 127/8, идущий не через lo0 интерфейс
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -d 127.0.0.0/8 -j REJECT
# Разрешаем все входящие пакеты для уже установленных подключений
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем весь исходящий траффик
# Если вы хотите рарешить только определенный тип траффика, идущего наружу - следует изменить следующее правило
sudo iptables -A OUTPUT -j ACCEPT
# Разрешаем подключение к нашему ваб серверу
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Для того, чтоб разрешить HTTPS подключения - разкомментируйте следующую строку:
#sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Разрешаем SSH подключения. Не забываем изменить стандартный порт на какой-нибудь другой, нестандартный.
sudo iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Разрешаем пиногвать наш сервер. Если хотите запретить - закомментируйте следующую строку
sudo iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
#белый список стран
WHITEZONE="
ru
ua
"
#удаление старого файла-списка всех ip стран
rm ip_white_list
#создание белого списка ip стран
for ZONE in $WHITEZONE;
do
#скачивание списка ip страны
sudo wget -O ip_from_zone "
http://www.ipdeny.com/ipblocks/data/countries/$ZONE.zone"
#копирование ip стран в один файл
sudo cat ip_from_zone >> ip_white_list
done
#подсчет ip
count_ip=$(cat ip_white_list | wc -l)
#удаляем таблицу
sudo ipset del whitelist nethash
#создаем таблицу
sudo ipset -N whitelist nethash
#добавляем ip стран в табцу
now=0
for IP in $(cat ip_white_list)
do
sudo ipset -A whitelist $IP
let "now = now + 1"
echo "Добавлено $now из $count_ip"
done
#разрешаем ip стран из белого списка
sudo iptables -A INPUT -m set --match-set whitelist src -j ACCEPT
#антиддос css сервера
sudo iptables -A INPUT -p udp --dport 27020 -m hashlimit --hashlimit 50/s --hashlimit-burst 50 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27020 -j DROP
sudo iptables -A INPUT -p udp -m udp --dport 27020 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27020 -m state --state NEW -m hashlimit --hashlimit 100/s --hashlimit-burst 100 --hashlimit-mode srcip --hashlimit-name TF -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27020 -j DROP
# Блокируем все остальные входяшие подключения.
sudo iptables -A INPUT -j DROP
sudo iptables -A FORWARD -j DROP