Настройка zeroshell. Часть 2

В предыдущей статье было рассказано об установке и основных этапах настройки программного маршрутизатора zeroshell. В этой статье мы продолжим изучать возможности этой платформы и сегодня мы будем настраивать фаервол, прокси и антивирус.

Прежде чем мы начнем, нужно сделать одну маленькую, но порой очень важную вещь.

Надо убедиться, что время на нашем роутере идет правильно и часовой пояс соответствует нашему местоположению. Роутер в процессе своей работы ведет запись различных событий с привязкой ко времени и при возникновении каких-либо трудностей самое главное правильно определить проблему, например, с помощью логов. Итак, логинимся в консоль управления роутера, затем выбираем раздел Setup и в нем закладку Time.


В моем случае я выставил часовой пояс Europe/Moscow. Если нужно изменить время — жмем на кнопку Change. Можно синхронизировать различные устройства нашей локальной сети с нашим роутером по протоколу NTP, для активации этой функции у zeroshell отметте галку Server. В списке Parent Servers представлены IP -адреса серверов точного времени, с которыми наш шлюз и будет синхронизироваться. Эти адреса лучше выписать куда нибудь, т.к. они нам понадобятся при настройке фаервола.

После всех манипуляций окно можно закрыть, нажав Close.
1. Настройка Firewall
В этом разделе я приведу несколько правил, с помощью которых мы защитим наш шлюз и локальную сеть от вторжений из вне. Первым делом переходим в соответсвующий раздел web-интерфейса:

По умолчанию ничего не фильтруется и все трафик пропускается по принципу «как есть». Сначала нужно сказать, что фаервол работает по следующему принципу: есть политика, которая по умолчанию разрешает или запрещает прохождение трафика в каком-то определенном направлении; и есть сами правила, каждое из которых является по сути маленьким исключением от общей политики. Т.е., например, политика у нас запрещает всё и при этом у нас есть несколько разрешающих правил. В этом случае трафик будет проходить только тот, который будет удовлетворять этим правилам. Как видите, всё просто. Остается вопрос — какую политику нам выбирать: когда все запрещено + разрешающие правила или когда все разрешено + запрещающие правила. С точки зрения безопасности первый вариант более предпочтителен, мы на нем и остановимся :).

Существет три основных цепочти движения трафика:
INPUT — входящий трафик (на наш шлюз из интернета или из локальной сети)
OUTPUT — исходящий трафик (с нашего шлюза в интернет или в локальную сеть)
FORWARD — транзитный трафик (с компов локальной сети в интернет и обратно)

Здесь главное не запутаться. Когда мы с компа локальной сети по web-интерфейсу коннектимся к нашему шлюзу — это входящий трафик для шлюза (INPUT), но когда мы с компа локальной сети открываем, например, яндекс или гугл, то это транзитный трафик (FORWARD), не смотря на то, что казалось-бы трафик сначала уходит на шлюз. Т.е. все пакеты, которые входят на шлюз и имеют параметр destination IP = адрес шлюза — это INPUT. Все пакеты, которые выходят со шлюза и имеют параметр source IP = адрес шлюза — это OUTPUT. Все пакеты, которые входят или уходят со шлюза, но destination IP и source IP у них отличаются от адреса шлюза — это FORWARD.
Строка управления политиками в zeroshell находится в верхней части окна:

Итак, у нас будет всего 3 политики: одна для INPUT, одна для OUTPUT и одна для FORWARD. Будем рассуждать так: мы доверяем той информации, которую генерируем сами и которую генерирует наш шлюз. Резона её не доверять нет. Поэтому политики OUTPUT и FORWARD можно оставить в режиме «разрешать всё» (ACCEPT). А вот входящий трафик, тем более из интернета…доверять ему никак нельзя. Доверять мы можем только входящему трафику из нашей локальной сети.
Локальная сеть у нас прописана на интерфейсе ETH00. Добавим одно правило, которое и будет разрешать все входящие соединение из локалки. Для этого выберем в ниспадающем списке chain направление INPUT, затем ниже нажмем на кнопку add, появится новое окно, в котором укажем необходимые параметры:

Затем нажмем кнопку Confirm в верхнем-правом углу окна. После этого поменяем политику INPUT, выбрав в ниспадающем списке Policy значение DROP. И в заключении нажем кнопку Save. Получится примерно вот так:

Теперь нам надо разрешить некоторые вещи из интернета (ETH01). А именно: пинги, DNS-запросы, синхронизация времени.

Вот скриншоты правил по порядку.
1. Разрешаем пинги из интернета (протокол ICMP). Правило в принципе не обязательное.

2. Разрешаем DNS-запросты. Это 53й порт по протоколам TCP и UDP, т.е. два правила:


3. И в заключении, правило, которое разрешает нашему шлюзу получать точное время из интернета (именно для этого мы выписывали IP-адреса серверов точного времени выше). Я добавлю один сервер времени (протокол UPD, порт 123):

После доавления правил не забываем нажать кнопку Save.

2. Настройка прокси и антивируса. Управление черными и белыми списками.
Переходим в раздел HTTP Proxy:

Здесь нужно отметить галку Enable. Можно настроить параметры антивируса ClamAV. Самое главное выставить параметр AutoUpdate Virus Signatures в Enable (включить функцию обновления антивирусных баз) и указать как часто и откуда мы их будем обновлять. Затем нам нужно указать, на каком интерфейсе у нас будет сидеть прозрачный прокси. В центре экрана есть пустой список HTTP Capturing Rules. Рядом с этим заголовком нажимаем кнопку +. В новом окне указываем наш локальный интерфейс и адреса локальной сети:

Затем нажать кнопку Save в этом окне и кнопку Save в основном окне. В итоге должно получиться вот так:

Теперь весь HTTP трафик с компьютеров локальной сети у нас будет попадать на прокси, на котором можно сделать фильтрацию по черным и белым спискам URL-адресов и от имени шлюза выпустить в интернет. Последнее обстоятельство говорит о том, что HTTP трафик уже будет проходить в фаерволе не по цепочке FORWARD, а по OUTPUT (когда шлюз отправляет запрос в интернет) и INPUT (когда приходит ответ). Мы помним, что политика на INPUT у нас по умолчанию выставлена на DROP, поэтому надо добавить одно хитрое правило, которое будет разрешать входящий трафик инициированный до этого самим шлюзом. Выгладит этот вот так:

Мы выбрали интерфейс ETH01, протокол TCP и указали флаги ESTABLISHED и RELATED. Это же правило позволит нашему шлюзу обновлять антивирусные базы.
Теперь осталось настроить черные и белые списки. В черном списке содержатся URL, на которые нужно всегда запрещать доступ. Белые — сайты, куда всегда разрешен доступ.

Выставляем нужный список в Enable и жмем кнопку Manage для добавления адресов. По окончанию не забываем нажать Save.
Например, если добавить Яндекс в черный список, то при попытке обращения на этот сайт мы увидим примерно вот что:

В списках сайты можно добавлять либо по точному адресу, например, macrodmin.blogspot.com — в этом случае доступ будет запрещен только на заглавную страницу этого сайта, а можно делать маски вида macrodmin.blogspot.com/* — в этом случае доступ будет закрыт на любой URL этого сайта.
На этом пока всё. Спасибо за внимание!
Так же смотрите другие наши обзоры по zeroshell:
1. Знакомство с zeroshell
2. Установка и настройка zeroshell
3. Настройка zeroshell. Firewall, Proxy, AV
4. Делаем WiFi безопаснее с помощью zeroshell
5. Настройка zeroshell: ограничение скорости и QoS

admin

Нужно войти чтобы оставить комментарий.