Juniper firewall
Добавлено: 25 июл 2018, 05:43
Доброго дня.
Заморочился настроить firewall так как в последнее время ведется активные атаки как на саму железяку (SRX650 так и на сервера за ними, которые проанонсированы во вне через нее), немного об сети для наглядности:
- SRX650 используется как шлюз во всем предприятии и как пограничный маршрутизатор(4 аплинка от провайдеров по BGP) и еще VPN сервером(около 30 объектов подключаются к нему по ipsec);
- за ним еще 6 управляемых коммутаторов.
Интерфейсы, где:
хх.хх.хх.хх - внешний адрес в нашей сети маршрутизатора
уу.уу.уу.уу - внутренний адрес в нашей сети, куда подключен коммутатор с серверами и хостами.
Правила firewall ля lo0.0:
Это все работает как надо, но если вешать правила на ge-0/0/13, для ограничение например тех портов, которые не должны светится то и доступ в сети до этих портов пропадает, сервера анонсируются во внешний мир так:
Вот собственно и вопрос, как настроить правила безопасности, что б в инет светились только те порты которые нужно? Ну собственно правила для файервола внутренних сетей не стал выкладывать, там в них фигурирует адрес сервера, что разрешено, все остальное в запрещено.
P.S. как вариант, уже после думал, создать таки эти правила и добавить в него исключения для внутренних наших сетей, но на сколько это правильно.
Заморочился настроить firewall так как в последнее время ведется активные атаки как на саму железяку (SRX650 так и на сервера за ними, которые проанонсированы во вне через нее), немного об сети для наглядности:
- SRX650 используется как шлюз во всем предприятии и как пограничный маршрутизатор(4 аплинка от провайдеров по BGP) и еще VPN сервером(около 30 объектов подключаются к нему по ipsec);
- за ним еще 6 управляемых коммутаторов.
Интерфейсы, где:
хх.хх.хх.хх - внешний адрес в нашей сети маршрутизатора
уу.уу.уу.уу - внутренний адрес в нашей сети, куда подключен коммутатор с серверами и хостами.
- Код: Выделить всё
ge-0/0/13 {
description LAN;
unit 0 {
family inet {
address уу.уу.уу.уу/17;
}
}
}
lo0 {
unit 0 {
family inet {
filter {
input-list [ accept-common-services discard-all ];
address хх.хх.хх.1/24;
}
}
}
routing-options {
static {
route xx.xx.xx.0/24 {
next-hop xx.xx.xx.1;
retain;
readvertise;
}
.......
}
aggregate {
route xx.xx.xx.0/24 discard;
}
router-id xx.xx.xx.1;
Правила firewall ля lo0.0:
- Код: Выделить всё
firewall {
family inet {
filter accept-bgp {
term accept-bgp {
from {
source-prefix-list {
BGP-neighbors-v4;
}
protocol tcp;
port bgp;
tcp-established;
}
then {
count accept-bgp;
accept;
}
}
}
filter accept-icmp {
term discard-icmp-fragments {
from {
is-fragment;
protocol icmp;
}
then {
count discard-icmp-fragments;
discard;
}
}
term discard-icmp {
from {
protocol icmp;
icmp-type [ echo-reply echo-request time-exceeded unreachable source-quench router-advertisement parameter-problem ];
}
then {
policer management-1Mb;
count accept-icmp;
accept;
}
}
}
filter accept-ssh {
term accept-ssh {
from {
protocol tcp;
destination-port ssh;
}
then {
policer management-5Mb;
count accept-ssh;
accept;
}
}
term accept-https {
from {
destination-port https;
}
then accept;
}
}
filter accept-dns {
term accept-dns {
from {
source-prefix-list {
DNS-servers-v4;
}
destination-prefix-list {
LOCALS-v4;
}
protocol udp;
source-port 53;
}
then {
policer management-1Mb;
count accept-dns;
accept;
}
}
}
filter accept-ntp {
term accept-ntp {
from {
protocol udp;
port ntp;
}
then {
policer management-512kb;
count accept-ntp;
accept;
}
}
}
filter accept-common-services {
term protect-ICMP {
filter accept-icmp;
}
term protect-SSH {
filter accept-ssh;
}
term protect-NTP {
filter accept-ntp;
}
term protect-DNS {
filter accept-dns;
}
}
filter discard-all {
term discard-ip-options {
from {
ip-options any;
}
then {
count discard-ip-options;
log;
discard;
}
}
term discard-tcp {
from {
protocol tcp;
}
then {
count discard-tcp;
log;
discard;
}
}
term discard-udp {
from {
protocol udp;
}
then {
count discard-udp;
log;
discard;
}
}
term discard-icmp {
from {
destination-prefix-list {
LOCALS-v4;
}
protocol icmp;
}
then {
count discard-icmp;
log;
discard;
}
}
term discard-unknown {
then {
count discard-unknown;
log;
discard;
}
}
}
...
policer management-1Mb {
if-exceeding {
bandwidth-limit 1m;
burst-size-limit 625k;
}
then discard;
}
policer management-5Mb {
if-exceeding {
bandwidth-limit 5m;
burst-size-limit 625k;
}
then discard;
}
policer management-512kb {
if-exceeding {
bandwidth-limit 512k;
burst-size-limit 25k;
}
then discard;
}
policer management-128kb {
if-exceeding {
bandwidth-limit 128k;
burst-size-limit 12k;
}
then discard;
}
Это все работает как надо, но если вешать правила на ge-0/0/13, для ограничение например тех портов, которые не должны светится то и доступ в сети до этих портов пропадает, сервера анонсируются во внешний мир так:
- Код: Выделить всё
nat {
source {
pool SOURCE-NAT {
address {
xx.xx.xx.1/32;
}
}
pool MAIL {
address {
xx.xx.xx.11/32;
}
}
rule-set POOL-NAT {
from zone trust;
to interface [ ge-0/0/1.0 ge-0/0/2.0 ge-0/0/3.0 ge-0/0/4.0];
rule MAIL {
match {
source-address [ уу.уу.уу.уу/32 ];
}
then {
source-nat {
pool {
MAIL;
}
}
}
}
rule SNAT {
match {
source-address [ уу.уу.уу.уу/17 ];
}
then {
source-nat {
pool {
SOURCE-NAT;
}
}
}
}
}
}
destination {
pool MAIL {
address yy.yy.yy.yy/32;
}
rule-set R_ANT {
from zone untrust;
rule MAIL {
match {
destination-address xx.xx.xx.11/32;
}
then {
destination-nat {
pool {
MAIL;
}
}
}
}
}
}
policies {
from-zone untrust to-zone trust {
policy MAIL {
match {
source-address any;
destination-address MAIL_SERV;
application any;
}
then {
permit {
application-services {
idp;
}
}
}
}
zones {
security-zone trust {
tcp-rst;
address-book {
address MAIL_SERV yy.yy.yy.yy/32;
}
screen trust-screen;
host-inbound-traffic {
system-services {
all;
}
protocols {
all;
}
}
interfaces {
ge-0/0/13.0;
}
Вот собственно и вопрос, как настроить правила безопасности, что б в инет светились только те порты которые нужно? Ну собственно правила для файервола внутренних сетей не стал выкладывать, там в них фигурирует адрес сервера, что разрешено, все остальное в запрещено.
P.S. как вариант, уже после думал, создать таки эти правила и добавить в него исключения для внутренних наших сетей, но на сколько это правильно.