В статье рассматриваются аспекты защиты плоскости управления маршрутизаторов Huawei NE Series. Примеры приведены для NE40e, с программным обеспечением: VRP V800R008. На других типах маршрутизаторов (например NE5k) и с другой версией ПО, конфигурация может несколько отличаться.
Для более детального изучения данного вопроса, могу порекомендовать дополнительно ознакомиться с RFC 6192 (Protecting the router Control Plane).
В VRP существует ряд способов автоматической диагностики и защиты плоскости управления маршрутизаторов. Однако учитывая скудность и непрозрачность документации, я рекомендую все-таки придерживаться традиционного метода защиты: создания белых списков на необходимые протоколы и службы и закрытия остального трафика.
Основная секция политики выглядит следующим образом:
cpu-defend policy 1
process-sequence whitelist user-defined-flow blacklist
cp-acl ip-pool enable
whitelist disable
blacklist acl 3900
blacklist ipv6 acl 3950
application-apperceive disable
ip urpf loose
process-sequence определяет последовательность работы политики: белый список (который в нашем случае выключен), user-defined-flow, чёрный список (правило 3900 для IPv4 и 3950 для IPv6).
Учитывая, что мы будем определять разрешённые протоколы сами, весь же остальной трафик будет фильтроваться чёрным списком – необходимости в application-apperceive анализе нет.
Механизм URPf (Unicast Reverse Path Forwarding) включаем на консервативном loose уровне.
Чёрные списки, для IPv4 и IPv6 выглядят следующим образом:
acl number 3900
description --- ACL For IPv4 Discard ---
rule 5 deny tcp
rule 10 deny udp
rule 15 deny ip
#
acl ipv6 number 3950
description --- ACL For IPv6 Discard ---
rule 5 deny tcp
rule 10 deny udp
rule 15 deny ipv6
Политику необходимо применить на каждом слоту:
slot 1
cpu-defend-policy 1
#
slot 2
cpu-defend-policy 1
…
«По умолчанию» включены следующие механизмы защиты:
udp-packet-defend enable
fragment-flood enable
abnormal-packet-defend enable
tcpsyn-flood enable
attack-source-trace enable
Все неиспользуемые протоколы и службы рекомендуется дополнительно закрыть в секции ma-defend. Данная опция может быть включена, как глобально, так и по слотам. Например:
system-view
ma-defend global-policy
protocol OSPF deny
protocol RIP deny
или
system-view
ma-defend slot-policy 1
protocol … deny
Ниже описывается user-defined политика. Общие правила, собраны в таблице ниже. Значения по скорости\приоритету указаны, как пример и не претендуют на "истину в последней инстанции". Максимальное количество элементов в user-defined политике — 64.
Вид трафика | Скорость | Приоритет | Номер правила |
---|---|---|---|
BGP | 1 Mb/s | High | 3901 |
LDP | 1 Mb/s | High | 3902 |
IS-IS | N\a | N\a | N\a |
VRRP | 1 Mb/s | High | 3904 |
BFD | 1 Mb/s | High | 3905 |
MCAST | 1 Mb/s | High | 3906 |
SSH | 512 Kb/s | Middle | 3907 |
FTP | 5 Mb/s | Low | 3908 |
DNS | 512 Kb/s | Low | 3909 |
SNMP | 1 Mb/s | Middle | 3910 |
TACACS+ | 1 Mb/s | Low | 3911 |
NTP | 512 Kb/s | Low | 3912 |
ICMP, trace, lsp-ping | 512 Kb/s | Low | 3913 |
Далее рассмотрим ACL фильтры, для соответствующих протоколов\служб.
3901. Протокол BGP.
Правило, для фильтрации протокола BGP, может выглядеть либо в упрощённом виде:
acl number 3901
rule permit tcp destination-port eq bgp
rule permit tcp source-port eq bgp
либо же, для каждого пира отдельно:
acl ip-pool BGP-Peers
ip address 10.1.1.1 0.0.0.0
acl number 3901
rule permit tcp source-pool BGP-Peers 0 destination-port eq bgp
rule permit tcp source-pool BGP-Peers 0 source-port eq bgp
3902. Протокол LDP.
rule 5 permit tcp source-pool Lo0_P2P destination-port eq 646
rule 10 permit tcp source-pool Lo0_P2P source-port eq 646
rule 15 permit udp source-pool Lo0_P2P destination-port eq 646
rule 20 permit udp source-pool Lo0_P2P source-port eq 646
3904. VRRP
acl ip-pool VRRP_Peers
ip address 10.1.1.1 0.0.0.0
acl number 3904
rule permit 112 source-pool VRRP_Peers
3905. BFD
acl number 3343
rule permit udp source-pool Lo0_P2P destination-port eq 3784
rule permit udp source-pool Lo0_P2P source-port eq 3784
3906. All MCAST (IGMP, PIM, MSDP)
acl number 3906
rule permit 103
rule permit igmp
rule permit udp destination-port eq 639
rule permit udp source-port eq 639
rule permit tcp destination-port eq 639
rule permit tcp source-port eq 639
3907. SSH
acl number 3907
description ### SSH access ###
rule 5 permit tcp source-pool MGMT source-port eq 22
rule 10 permit tcp source-pool MGMT destination-port eq 22
rule 15 permit tcp source-pool MGMT destination-port eq 830
3908. FTP. FTP-data
acl port-pool ftp
eq 20
eq 21
acl number 3908
rule 10 permit tcp source-pool MGMT source-port-pool ftp
rule 15 permit tcp source-pool MGMT destination-port-pool ftp
3909. DNS
acl ip-pool DNS
ip address 1.1.1.1 0.0.0.0
ip address 8.8.8.8 0.0.0.0
acl number 3909
rule 5 permit udp source-pool DNS source-port eq dns
3910. SNMP
acl number 3909
rule 5 permit udp source-pool SNMP source-port eq snmp
rule 10 permit udp source-pool SNMP destination-port eq snmp
3911. TACACS+
acl number 3911
rule 5 permit tcp source-pool TACACS source-port eq tacacs
rule 10 permit udp source-pool TACACS source-port eq tacacs-ds
3912. NTP
acl number 3911
rule 5 permit udp source-pool NTP source-port eq ntp
rule 10 permit udp source-pool NTP destination-port eq ntp
3913. ICMP
acl number 3342
rule permit icmp icmp-type echo
rule permit icmp icmp-type echo-reply
rule permit icmp icmp-type ttl-exceeded
rule permit icmp icmp-type port-unreachable
rule permit icmp icmp-type Fragmentneed-DFset
rule permit icmp
rule permit udp destination-port range 33434 33678
rule permit udp destination-port eq 3503
3951. BGP for IPv6
acl ipv6 number 3951
rule 5 permit tcp destination-port eq bgp
3952. ICMPv6
acl ipv6 number 3952
rule 30 permit icmpv6
rule 35 permit udp destination-port range 33434 33678
Для применения листов, их нужно привязать к cpu-defend политике следующим образом:
cpu-defend policy 1
...
user-defined-flow 1 acl 3901
user-defined-flow 2 acl 3902
user-defined-flow 4 acl 3904
user-defined-flow 5 acl 3905
user-defined-flow 6 acl 3906
user-defined-flow 7 acl 3907
user-defined-flow 8 acl 3908
user-defined-flow 9 acl 3909
user-defined-flow 10 acl 3910
user-defined-flow 11 acl 3911
user-defined-flow 12 acl 3912
user-defined-flow 13 acl 3913
user-defined-flow 51 ipv6 acl 3951
user-defined-flow 52 ipv6 acl 3952
car blacklist cir 0 cbs 0
car user-defined-flow 1 cir 1000
car user-defined-flow 2 cir 1000
car user-defined-flow 4 cir 1000
car user-defined-flow 5 cir 1000
car user-defined-flow 6 cir 1000
car user-defined-flow 7 cir 512
car user-defined-flow 8 cir 5000
car user-defined-flow 9 cir 512
car user-defined-flow 10 cir 1000
car user-defined-flow 11 cir 1000
car user-defined-flow 12 cir 512
car user-defined-flow 13 cir 512
car user-defined-flow 51 cir 10000
car user-defined-flow 52 cir 512
priority user-defined-flow 1 high
priority user-defined-flow 2 high
priority user-defined-flow 4 high
priority user-defined-flow 5 high
priority user-defined-flow 6 high
priority user-defined-flow 7 middle
priority user-defined-flow 8 low
priority user-defined-flow 9 low
priority user-defined-flow 10 middle
priority user-defined-flow 11 low
priority user-defined-flow 12 low
priority user-defined-flow 13 low
priority user-defined-flow 51 high
priority user-defined-flow 52 low
для выставления предупреждений по трешхолдам, можно воспользоваться следующей функцией:
cpu-defend policy 1
...
alarm drop-rate user-defined-flow 7 threshold 100 interval 60
тут значение threshhold выставляется в пакетах, а интервал в сек.
Статистику по работе CoPP фильтров, можно посмотреть в секции display cpu-defend...
После выполнения настроек, дополнительно стоит просканировать маршрутизатор.
В заключение хочется отметить, что Huawei (как и любой современный вендор) предлагает все необходимые методы, для защиты плоскости управления своих маршрутизаторов. А периодически появляющиеся сообщения об найденных уязвимостях, показывают, что этими инструментами не стоит пренебрегать.