Пишем правила для KWF
Меня часто достают вопросами про написание правил для Kerio Firewall. Ребята, все очень просто. Главное — понять принцип написания этих правил. Принцип очень простой:
- откуда
- куда
- по какому протоколу или порту
- разрешено или нет
- использовать NAT или нет
- в какое время верно
Откуда называется source. может принимать значения:
- host — ip адрес конкретного компьютера внутри сети
- ip range — диапазон ip адресов
- ip address group — адресная группа или группы, определенные вами при конфигурации
- network/mask — сеть и маска подсети, которой вы разрешаете проход в интернет
- network connected to interface — сеть, подключенная к интерфейсу с указанным именем. имена задаются на вкладке interfaces
- vpn — разрешает проход vpn-клиентам
- users — имя пользователя, задается на вкладке users
- firewall host — правило будет действительно только для компьютера, на котором установлен KWF
destination может принимать значение такие же, как source service — список сервисов, думаю там все просто и понятно action может принимать значения permit — разрешено, deny — запрещено, drop — сброшено NAT может принимать значения:
- no translation — не транслировать
- translate to ip address of outgoing interface — транслировать на исходящий интерфейс. По умолчанию — в интернет.
- translate to ip address of interface — транслировать адреса в адресное пространство заданного интерфейса
- translate to ip address — транслировать на заданный адрес
port mapping может иметь значения no translation — никак не транслировать, translate to — адрес или имя машины внутри сети, порт указывается, если нужно входящий запрос по определенному порту перебросить на порт машины с заданным адресом. временной интервал определяется на вкладке time intervals и является очень полезной функцией. Таким образом, если мы хотим разрешить, например, полный доступ из локальной сети к сети интернет всем юзерам по любому протоколу, то правило выглядит так:
source |
destination |
service |
action |
translation |
valid on |
локальная сеть |
интернет |
any |
permit |
nat |
ваш интервал |
Допустим, что мы хотим разрешить проход всем пользователям сети в интернет, но только по определенным протоколам, например http, icq, pop3, smtp тогда правило выглядит так:
source |
destination |
service |
action |
translation |
valid on |
локальная сеть |
интернет |
HTTP ICQ POP3 SMTP |
permit |
nat |
ваш интервал |
Если вы хотите, чтобы у вас не было в статистике неопознанного трафика (unrecognized users) то в поле source следует указать users, тогда только юзеры, авторизованные на файрволле, смогут проходить в интернет. Бывает, что нужно получить доступ из интернет к серверу SQL или WEB, расположенных на компьютере внутри локальной сети. Для этого нужно будет написать соответствующее правило. Для начала следует понять, что все запросы, приходящие на ваш внешний IP приходят к компьютеру, на котором установлен KWF, так как только он имеет внешний адрес, на который зарегистрирован домен. Рассмотрим ситуацию на примере моей конфигурации. На постоянный внешний IP адрес зарегистрировано имя notes.blogsite.org. Сервер, поддерживающий сайт физически, расположен внутри локальной сети и имеет адрес, например 192.168.1.2 Порт, по которому отвечает web сервер 8080. Любой запрос по адресу http://notes.blogsite.org будет приходить на файрволл, то бишь на firewall host, а оттуда он должен перенаправляться на локальную машину с адресом 192.168.1.2 на порт 8080. Правило для такого случая будет выглядеть так:
source |
destination |
service |
action |
translation |
valid on |
интернет |
firewall host |
HTTP |
permit |
map 192.168.1.2:8080 |
always |
Правило сие, в переложении на русский язык, звучит так: перенаправить любой запрос из интернет по протоколу HTTP на компьютер с адресом 192.168.1.2 на порт 8080. В данном случае при указании преобразования адресов вам нужно выбрать translate to ip address и указать порт 8080. Как только вы нажмете кнопку apply ваш внутренний сервер будет виден снаружи. Аналогичным способом можно открыть любую машину по любому протоколу, будь то почтовый сервер, сервер баз данных, веб-сервер и т.д. Еще один любопытный момент. Допустим, вы разрешили проход из интренет к вашему серваку. но при обращении к доменному имени notes.blogsite.org вдруг получаете ответ "сервер не найден". Все правильно, файрволл не допускает таких вольностей. Чтобы получать доступ по доменному имени к внутренним серверам потребуется написать еще одно правило. И выглядеть оно будет так:
source |
destination |
service |
action |
translation |
valid on |
локальная сеть |
notes.blogsite.org |
HTTP |
permit |
NAT (подключение по локальной сети) |
always |
То есть при создании правила трансляции вы используете translate to ip address of inteface: указываете имя интерфейса, к которому подключена локальная сеть и включаете портмаппинг на адрес вашего веб-сервера 192.168.1.2 и порт 8080. Жмите кнопку apply и наслаждайтесь, теперь ваш внутренний сервер доступен из локальной сети по доменному имени, в моем случае notes.blogsite.org Надеюсь, я доступно изложил порядок написания правил для KWF. Если у вас что то не получилось или что то не понятно — спрашивайте, отвечу.