Задача: на нескольких серверах ограничить доступ к сайту по протоколу http/https для всех, кроме избранных IP.
Решить можно несколькими способами:
- поправить .htaccess, добавив в него deny from all и allow from IP
- на уровне файревола
Мне предпочтительней было сделать это на уровне файревола, т.к. таким образом не нужно прописывать запрет на доступ на каждом сайте, а запрещаю на ВСЕХ сайтах размещенных на этом сервере одновременно.
Принцип прописывания правил для всех файреволов одинаков: запрещаем по умолчанию всё, кроме того что нужно. Так как у меня немного зоопарк по серверам, то два различных файревола.
Ubuntu и иже с ним:
|
ufw default deny outgoing ufw default deny incoming ufw allow out 53 ufw allow from 19.82.24.12 to any port 443 ufw allow from 19.82.34.12 to any port 80 service ufw restart |
CentOS и иже с ним:
|
firewall-cmd --zone=public --remove-service=http firewall-cmd --zone=public --remove-service=https firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="443" protocol="tcp" accept' firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="80" protocol="tcp" accept' systemctl restart firewalld.service |