ex3200
Как можно организовать внешнюю правку файрвола?
Смысл такой: есть белые адреса во внутренней сети, к которым обращаться разрешено не всем, эти не все (term 10) и белые адреса (term 20) описываются примерно так:# show firewall family ethernet-switching
filter uplink {
term 10 {
from {
source-address {
1.2.3.4/32;
5.6.7.8/32;
}
}
then {
accept;
}
}
term 20 {
from {
destination-address {
x.x.x.x/32;
}
}
then {
discard;
}
}
term 200 {
then accept;
}
}в term 10 хочется добавлять адреса автоматически, с внешнего сервера, не залезая в жунипер ручками, а зайдя, например, на какую-нибудь страничку и введя пароль и адрес который нужно добавить.
В snmp такой функциональности не нашел, можно написать expect-скрипт, но это не очень красиво...
Если добавлять часто изменяемые адреса, лучше configure dynamic,
в правиле файрвола использовать префикс лист.
>[оверквотинг удален]
> }
> term 200 {
> then accept;
> }
> }
> в term 10 хочется добавлять адреса автоматически, с внешнего сервера, не залезая
> в жунипер ручками, а зайдя, например, на какую-нибудь страничку и введя
> пароль и адрес который нужно добавить.
> В snmp такой функциональности не нашел, можно написать expect-скрипт, но это не
> очень красиво...
> Если добавлять часто изменяемые адреса, лучше configure dynamic,
> в правиле файрвола использовать префикс лист.Как частичное решение - интересно, но не работает, к сожалению
# show firewall family ethernet-switching filter uplink
term 100 {
from {
source-prefix-list {
test;
}
}
then accept;
}
term 110 {
from {
destination-address {
x.x.x.x/32;
}
}
then discard;
}
term 200 {
then accept;
}# show policy-options prefix-list test
dynamic-db;> configure dynamic
# show policy-options prefix-list test
8.8.8.8/32;т.е. к х.х.х.х разрешен доступ только с 8.8.8.8, но x.x.x.x пингуется. Если dynamic-db заменить непосредственно на ip-адреса, то правила начинают работать.
Вот здесь, у народа, dynamic-db в filter тоже не заработал (правда там SRX): http://forums.juniper.net/t5/SRX-Services-Gateway/Configure-...
Да, действительно (подзабыл уже)
dynamic можно использовать только в policy.
Например, для политик настройки маршрутизации.
> в term 10 хочется добавлять адреса автоматически, с внешнего сервера, не залезая
> в жунипер ручками, а зайдя, например, на какую-нибудь страничку и введя
> пароль и адрес который нужно добавить.
> В snmp такой функциональности не нашел, можно написать expect-скрипт, но это не
> очень красиво...У них есть xmlrpc api, пишите страничку, которая будет кидать ему запрос на xml с новым адресом и коммитить изменения.
А еще есть Junos PyEZ + Django
На джунике есть flowspec, анонсируйте ему фаервольные правила по bgp.
Если кому интересно, то задачу решил так:В firewall правила с prefix-list:
term 21 {
from {
source-prefix-list {
ACCEPT-IP-CLIENTS;
}
destination-prefix-list {
DISCARD-IP-RESOURCES;
}
}
then accept;
}
term 22 {
from {
destination-prefix-list {
DISCARD-IP-RESOURCES;
}
}
then {
discard;
count discard-ip-count;
}
}таким образом моя задача свелась только к добавлению/удалению ip-адресов в соответсвующие prefix-list:
set policy-options prefix-list ACCEPT-IP-CLIENTS 1.2.3.4/32
set policy-options prefix-list DISCARD-IP-RESOURCES 10.10.10.111/32
для внешнего доступа сделал юзера с ограниченным доступом:login {
class POLICYEDIT {
permissions [ admin configure routing routing-control view ];
}
user pe {
uid 2001;
class POLICYEDIT;
authentication {
encrypted-password "***"; ## SECRET-DATA
}
}
}
доступ к свитчу отсуществяется по ssh (скриптом написанным на php), c дальнейшим запуском junoscript shell-а скрытой командой: "netconf", попыткой получить эксклюзивные права на редактирование и в успешном варианте редактированием нужных мне prefix-list-ов.Набор передаваемых junoscript команд примерно такой:
<rpc message-id='1'>
<lock><target><candidate/></target></lock>
</rpc><rpc message-id='2'><edit-config> <target><candidate/> </target><config>
<configuration>
<policy-options>
<prefix-list>
<name>ACCEPT-IP-CLIENTS</name>
<prefix-list-item>
<name>1.2.3.4/32</name>
</prefix-list-item>
</prefix-list>
</policy-options>
</configuration>
</config></edit-config> </rpc><rpc message-id='3'><commit/></rpc>
<rpc message-id='4'><discard-changes/></rpc>
<rpc message-id='5'><unlock/></rpc>
<rpc message-id='6'><close-session/></rpc>
Оф. дока по netconf: http://www.juniper.net/documentation/en_US/junos/information...
Хорошее описание для быстрого старта есть непосредственно на opennet: https://www.opennet.dev/tips/2540_junoscript_junos_script_net...
Всем спасибо.