Роутеры ZyXel. Блокировка сайтов через правила Firewall
Итак, представим, что у нас в руках какой-нибудь ZyXel Keenetic (которые компания гордо называет интернет-центрами) и нам нужно разграничить доступ в интернет для различных хостов. Сначала разберемся с построением правил в целом, а после разберем задачку, где потребуется паре хостов предоставить неограниченный доступ, одному - только доступ к удаленному серваку, а всем остальным наглухо закрыть доступ в интернет. Всё это делается через пункт меню Безопасность -> Межсетевой экран.
Поставленные задачи можно решить с помощью правил межсетевого экрана для интерфейса Home Network. И всю эту настройку мы производим в указанном выше пункте меню.
По клику на кнопку Добавить правило откроется окно настройки этого самого правила, и вот что оно из себя представляет:
Здесь мы выбираем, разрешает нам что-то это правило или запрещает. Если выбран интерфейс ISP, то источником будет вся сеть, а назначением пул IP-адресов, которые раздает роутер. В случае, если мы настраиваем правило для домашней сети (интерфейс Home Network или просто Home), то всё будет наоборот - источниками станут IP домашней сети, а назначением внешние адреса. Далее Протокол, здесь мы выбираем, куда распространяется создаваемое нами правило. Если мы хотим ограничить доступ на какие-либо сайты, то нам следует создать Rules для протоколов TCP, UDP и ICMP. В этом случае пункты меню Порты оставляем в режиме любой.
Теперь простая задачка. Мы хотим, чтобы для всех хостов был закрыт доступ в соцсеть вконтакте. Для начала нужно узнать, какой или какие IP-адреса у этого сайта. Тут нам поможет консольная команда Windows - nslookup.
Нам прилетает ответ, что наш DNS-сервер резолвит данный адрес в такие-то IP-адреса. Их мы и прикроем.
Такое же правило сделаем для протокола UDP и ICMP. Всё, теперь доступ к втентаклю ограничен.
Это был самый простой вариант использования Firewall-правил, теперь перейдем к более творческой задаче, о которой уже говорилось в начале статьи.
Примечание. Принцип работы правил межсетевого экрана таков, что они выполняются по порядку сверху вниз, таким образом, разрешающие правила должны находится вверху списка, а общие правила для большого количества хостов следует располагать внизу списка.
Для реализации нашей задачи мы будем создавать правила на интерфейса Home network (Wired and wireless hosts), поэтому выберем его в соответствующем меню на вкладке межсетевого экрана.
Вначале создадим правила для хостов, имеющих неограниченный доступ:
И, как водится, тоже самое повторим для UDP и ICMP протокола. Теперь хост, имеющий IP 192.168.1.228 будет иметь доступ к любым узлам сети без каких-либо ограничений.
Важно! В качестве оффтопа объясню как на ZyXel настроить выдачу одного и того же IP конкретному хосту, т.е. как запилить привязку по MAC-адресу. Делается это в разделе меню Домашняя сеть во вкладке Устройства:
Теперь при подключении к роутеру данное устройство всегда будет динамически получать один и тот же IP.
Поехали дальше. В задаче было сказано, что не иметь ограничений должны два хоста, поэтому создаем permit-правила (разрешающие) для его IP, например, 192.168.1.229 по все тем же трем протоколам TCP, UDP и ICMP. Готово.
Теперь нам нужно создать правило для хоста, которому нужно прикрыть всё кроме одного единственного сайта, пусть это будет linkintel.ru (IP узнаем консольной командой nslookup):
Точно также пилим правила для протоколов UDP и ICMP.
Но чтобы попасть на этот сайт хосту нужно обратиться к DNS-серверу, поэтому его IP также нужно добавить в список разрешенных. DNS-сервер также всплывает в nslookup.
Помимо TCP/53 делаем также правило для протокола UDP/53.
В довершение всего блокируем доступ остальным хостам прямо по сетевой маске.
Аналогичное действие для UDP и ICMP протокола.
Такой у нас будет итог:
Не пугаемся, просто на картинке правила сделаны для других IP. 192.168.1.33 и 192.168.1.34 имеют неограниченный доступ, а для 192.168.1.35 он порезан.
Важное дополнение. Вообще-то куда удобнее работать с правилами межсетевого экрана через текстовой редактор, используя файл конфигурации роутера. Выцепляем файлик startup-config в меню Настройка -> Файлы (в более свежих версиях прошивки он лежит в Система -> Конфигурация) и открываем его в любом текстовом редакторе, например, в Блокноте. После редактирования сохраняем изменения и закидываем файл обратно на роутер.
В приведенном примере конфига правила сделаны для интерфейса ISP, в Home всё по аналогии.
Поставленные задачи можно решить с помощью правил межсетевого экрана для интерфейса Home Network. И всю эту настройку мы производим в указанном выше пункте меню.
По клику на кнопку Добавить правило откроется окно настройки этого самого правила, и вот что оно из себя представляет:
Здесь мы выбираем, разрешает нам что-то это правило или запрещает. Если выбран интерфейс ISP, то источником будет вся сеть, а назначением пул IP-адресов, которые раздает роутер. В случае, если мы настраиваем правило для домашней сети (интерфейс Home Network или просто Home), то всё будет наоборот - источниками станут IP домашней сети, а назначением внешние адреса. Далее Протокол, здесь мы выбираем, куда распространяется создаваемое нами правило. Если мы хотим ограничить доступ на какие-либо сайты, то нам следует создать Rules для протоколов TCP, UDP и ICMP. В этом случае пункты меню Порты оставляем в режиме любой.
Цитата: На заметку
В роутерах ZyXel айпишники делят на адреса источника и назначения, у других вендоров это обычно зовут так:
destination (dst) - назначение;
source (src) - источник.
destination (dst) - назначение;
source (src) - источник.
Теперь простая задачка. Мы хотим, чтобы для всех хостов был закрыт доступ в соцсеть вконтакте. Для начала нужно узнать, какой или какие IP-адреса у этого сайта. Тут нам поможет консольная команда Windows - nslookup.
nslookup vk.com
Server: UnKnown
Address: 192.168.237.200
Не заслуживающий доверия ответ:
Name: vk.com
Addresses: 87.240.165.82
95.213.11.180
Нам прилетает ответ, что наш DNS-сервер резолвит данный адрес в такие-то IP-адреса. Их мы и прикроем.
Такое же правило сделаем для протокола UDP и ICMP. Всё, теперь доступ к втентаклю ограничен.
Это был самый простой вариант использования Firewall-правил, теперь перейдем к более творческой задаче, о которой уже говорилось в начале статьи.
Примечание. Принцип работы правил межсетевого экрана таков, что они выполняются по порядку сверху вниз, таким образом, разрешающие правила должны находится вверху списка, а общие правила для большого количества хостов следует располагать внизу списка.
Для реализации нашей задачи мы будем создавать правила на интерфейса Home network (Wired and wireless hosts), поэтому выберем его в соответствующем меню на вкладке межсетевого экрана.
Цитата: Если кто-то забыл задачу
Сначала разберемся с построением правил в целом, а после разберем задачку, где потребуется паре хостов предоставить неограниченный доступ, одному - только доступ к удаленному серваку, а всем остальным наглухо закрыть доступ в интернет.
Вначале создадим правила для хостов, имеющих неограниченный доступ:
И, как водится, тоже самое повторим для UDP и ICMP протокола. Теперь хост, имеющий IP 192.168.1.228 будет иметь доступ к любым узлам сети без каких-либо ограничений.
Важно! В качестве оффтопа объясню как на ZyXel настроить выдачу одного и того же IP конкретному хосту, т.е. как запилить привязку по MAC-адресу. Делается это в разделе меню Домашняя сеть во вкладке Устройства:
Теперь при подключении к роутеру данное устройство всегда будет динамически получать один и тот же IP.
Поехали дальше. В задаче было сказано, что не иметь ограничений должны два хоста, поэтому создаем permit-правила (разрешающие) для его IP, например, 192.168.1.229 по все тем же трем протоколам TCP, UDP и ICMP. Готово.
Теперь нам нужно создать правило для хоста, которому нужно прикрыть всё кроме одного единственного сайта, пусть это будет linkintel.ru (IP узнаем консольной командой nslookup):
Точно также пилим правила для протоколов UDP и ICMP.
Но чтобы попасть на этот сайт хосту нужно обратиться к DNS-серверу, поэтому его IP также нужно добавить в список разрешенных. DNS-сервер также всплывает в nslookup.
Помимо TCP/53 делаем также правило для протокола UDP/53.
В довершение всего блокируем доступ остальным хостам прямо по сетевой маске.
Аналогичное действие для UDP и ICMP протокола.
Такой у нас будет итог:
Не пугаемся, просто на картинке правила сделаны для других IP. 192.168.1.33 и 192.168.1.34 имеют неограниченный доступ, а для 192.168.1.35 он порезан.
Важное дополнение. Вообще-то куда удобнее работать с правилами межсетевого экрана через текстовой редактор, используя файл конфигурации роутера. Выцепляем файлик startup-config в меню Настройка -> Файлы (в более свежих версиях прошивки он лежит в Система -> Конфигурация) и открываем его в любом текстовом редакторе, например, в Блокноте. После редактирования сохраняем изменения и закидываем файл обратно на роутер.
access-list _WEBADMIN_ISP
permit tcp 194.152.35.79 255.255.255.255 0.0.0.0 0.0.0.0 port eq 80
deny tcp 217.20.155.58 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 217.20.156.159 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 5.61.23.5 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 95.213.11.180 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 87.240.165.82 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 87.240.165.82 255.255.255.255 port eq 80 0.0.0.0 0.0.0.0 port eq 80
deny icmp 87.240.165.82 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 104.244.42.129 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 52.21.53.45 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 52.7.122.35 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 54.175.107.36 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 54.209.247.221 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 54.175.203.218 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 54.173.74.145 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 52.1.102.11 255.255.255.255 0.0.0.0 0.0.0.0
deny tcp 52.45.107.175 255.255.255.255 0.0.0.0 0.0.0.0
permit tcp 192.168.237.237 255.255.255.255 0.0.0.0 0.0.0.0 port eq 80
!
access-list _WEBADMIN_Home
В приведенном примере конфига правила сделаны для интерфейса ISP, в Home всё по аналогии.