Защита сайта: настройка файрвола
Даже за защитой сайт могут попытаться атаковать напрямую — по IP-адресу сервера, в обход фильтрации. Чтобы закрыть эту лазейку, разрешите доступ к веб-портам только серверам очистки трафика.
Настоятельно рекомендуем настроить на сервере файрвол, который пропускает к портам 80/tcp и 443/tcp только адреса серверов очистки.
Сети, которые нужно добавить в белый список файрвола:
77.220.207.0/24
45.10.240.0/24
45.10.241.0/24
45.10.242.0/24
186.2.160.0/24
186.2.164.0/24
186.2.167.0/24
186.2.168.0/24
185.178.209.197/32
190.115.30.44/32
Ниже — примеры настроек для популярных файрволов.
Это примерные команды, а не готовый набор настроек для вашего сервера. Применяйте их, только убедившись, что они не нарушат работу проекта.
Пример настроек iptables
iptables -I INPUT -s 77.220.207.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 77.220.207.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 45.10.240.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 45.10.240.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 45.10.241.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 45.10.241.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 45.10.242.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 45.10.242.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 186.2.160.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 186.2.160.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 186.2.164.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 186.2.164.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 186.2.167.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 186.2.167.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 186.2.168.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 186.2.168.0/24 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 185.178.209.197 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 185.178.209.197 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 190.115.30.44 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 190.115.30.44 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
Подробнее о работе с iptables — в статье «Iptables: базовый файрвол на Ubuntu».
Пример настроек UFW
sudo ufw allow from 77.220.207.0/24 to any port 80 proto tcp
sudo ufw allow from 77.220.207.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.240.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.240.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.241.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.241.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.242.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.242.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.160.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.160.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.164.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.164.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.167.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.167.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.168.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.168.0/24 to any port 443 proto tcp
sudo ufw allow from 185.178.209.197 to any port 80 proto tcp
sudo ufw allow from 185.178.209.197 to any port 443 proto tcp
sudo ufw allow from 190.115.30.44 to any port 80 proto tcp
sudo ufw allow from 190.115.30.44 to any port 443 proto tcp
sudo ufw deny 80 proto tcp
sudo ufw deny 443 proto tcp
Основы UFW разобраны в статье «Настройка файрвола в Ubuntu с помощью UFW».
Пример настроек nftables
Эти правила действуют до перезагрузки сервера:
nft add table ip ddg_filter
nft add chain ip ddg_filter input '{ type filter hook input priority 0; policy accept; }'
nft add rule ip ddg_filter input ip saddr 77.220.207.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 45.10.240.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 45.10.241.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 45.10.242.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 186.2.160.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 186.2.164.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 186.2.167.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 186.2.168.0/24 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 185.178.209.197 tcp dport {80, 443} accept
nft add rule ip ddg_filter input ip saddr 190.115.30.44 tcp dport {80, 443} accept
nft add rule ip ddg_filter input tcp dport {80, 443} drop
Чтобы правила работали постоянно, добавьте их в файл /etc/nftables.conf:
table ip ddg_filter {
chain input {
type filter hook input priority filter; policy accept;
ip saddr 77.220.207.0/24 tcp dport { 80, 443 } accept
ip saddr 45.10.240.0/24 tcp dport { 80, 443 } accept
ip saddr 45.10.241.0/24 tcp dport { 80, 443 } accept
ip saddr 45.10.242.0/24 tcp dport { 80, 443 } accept
ip saddr 186.2.160.0/24 tcp dport { 80, 443 } accept
ip saddr 186.2.164.0/24 tcp dport { 80, 443 } accept
ip saddr 186.2.167.0/24 tcp dport { 80, 443 } accept
ip saddr 186.2.168.0/24 tcp dport { 80, 443 } accept
ip saddr 185.178.209.197 tcp dport { 80, 443 } accept
ip saddr 190.115.30.44 tcp dport { 80, 443 } accept
tcp dport { 80, 443 } drop
}
}
Пример настроек firewalld
firewall-cmd --permanent --new-zone=ddg
firewall-cmd --permanent --zone=ddg --add-port=80/tcp
firewall-cmd --permanent --zone=ddg --add-port=443/tcp
firewall-cmd --permanent --zone=ddg --add-source=186.2.160.0/24
firewall-cmd --permanent --zone=ddg --add-source=77.220.207.0/24
firewall-cmd --permanent --zone=ddg --add-source=45.10.240.0/24
firewall-cmd --permanent --zone=ddg --add-source=45.10.241.0/24
firewall-cmd --permanent --zone=ddg --add-source=186.2.167.0/24
firewall-cmd --permanent --zone=ddg --add-source=186.2.168.0/24
firewall-cmd --permanent --zone=ddg --add-source=45.10.242.0/24
firewall-cmd --permanent --zone=ddg --add-source=186.2.164.0/24
firewall-cmd --permanent --zone=ddg --add-source=185.178.209.197/32
firewall-cmd --permanent --zone=ddg --add-source=190.115.30.44/32
firewall-cmd --reload
Проверьте, что в зоне по умолчанию (обычно public) не открыты сервисы http и https для всех — иначе сайт останется доступен напрямую:
firewall-cmd --permanent --zone=public --remove-service=http --remove-service=https
firewall-cmd --reload
Чтобы в логах сайта были видны реальные IP-адреса посетителей, а не адреса серверов очистки, воспользуйтесь инструкцией «Защита сайта: реальные IP посетителей».
Похожее
Все статьи
Защита сайта от DDoS: как работает услуга
Услуга «Защита сайта» принимает весь трафик сайта на себя: запросы сначала проходят через сервер очистки, и только чистые попадают на ваш сервер. Разберём, что это даёт и как устроена фильтрация. Зачем нужна «Защита сайта» Сайт выдерживает атаку. Даже если на…
Защита сайта: как заказать услугу
Защита сайта заказывается в личном кабинете UFO.Hosting и подключается за несколько минут. Ниже — порядок действий от заказа до подключения. Как заказать услугу «Защита сайта» Войдите в личный кабинет и выполните шаги: В левом меню откройте раздел «Товары/Услуги» и выберите…