NEC IXのACL(ファイアウォール)設定

スポンサーリンク

NEC IXはNATを有効にする場合、インターネットからの接続は全て拒否されるネットワーク初学者に優しい仕様になっています。ですので、場合によってはファイアウォール(ACL)を設定する必要はありません。ですが、「LANからWAN方向へのOutBoundセキュリティを実装したい」「WANからの接続を許可するNATP serviceを使用している」という状況ではファイアウォール(ACL)の実装が必要になります。

NEC IXで実装されているACLは「ステートレスファイアウォール」に相当する機能です。戻り通信を明示的に許可する必要があります。戻り通信を動的に許可する方法として「Dynamic ACL」と呼ばれる機能がNEC IXには備わっていますが、私が手元にあるバージョンではDynamic ACLは意図せぬ通信まで許可する挙動でした(最新バージョンではバグ修正されている可能性はあります)

設定まとめ

コマンド一覧

ACLに関するコマンド一覧は以下の通りです。

Router(config)# ip access-list <acl_name> {permit|deny} tcp src <src> dest <dest> dport eq <dport>
Router(config)# ip access-list <acl_name> {permit|deny} udp src <src> dest <dest> dport eq <dport>
Router(config)# ip access-list <acl_name> {permit|deny} icmp src <src> dest <dest>
Router(config-GigaEthernet0.0)# ip filter <acl_name> 1 {in|out}
Router(config-GigaEthernet0.0)# ip filter <acl_name> 1 {in|out}

ACLの定義

ACLを定義する構文は以下の通りです。TCP, UDP, ICMPそれぞれの使用頻度の高い構文は以下の通りです。

ACLはtcp flag, tosなど様々なパラメタを用いた定義が可能です。以下は使用可能なパラメタの極一部である事を留意ください。

Router(config)# ip access-list <acl_name> {permit|deny} tcp src <src> dest <dest> dport eq <dport>
Router(config)# ip access-list <acl_name> {permit|deny} udp src <src> dest <dest> dport eq <dport>
Router(config)# ip access-list <acl_name> {permit|deny} icmp src <src> dest <dest>

シーケンス番号の運用

他のルータ機器と異なり、NEC IXのACLはシーケンス番号を指定する事ができません。NEC IXはACLの設定を入力した順にアクセスリストが作成されます。操作例は以下のようになります。

Router(config)# ip access-list test permit ip src 1.1.1.1/32 dest any 
Router(config)# ip access-list test permit ip src 2.2.2.2/32 dest any 
Router(config)# ip access-list test deny ip src any dest any
Router(config)# 
Router(config)# 
Router(config)# show ip access-list test
IPv4 access list test - 3 entries, 0 hits, 0 refs
Codes: p - Permit, d - Deny
p  1.1.1.1/32 > any
     ip, tos any, 0 hits
p  2.2.2.2/32 > any
     ip, tos any, 0 hits
d  any > any
     ip, tos any, 0 hits
Router(config)# 

NEC IXはACLに対してシーケンス番号を適用する事はできませんが、インターフェースに対する適用時にシーケンス番号を設定する事ができます。ですので、以下の設定は書き方は異なるものの全く同じ挙動です。

ip access-list test permit ip src 1.1.1.1/32 dest any 
ip access-list test permit ip src 2.2.2.2/32 dest any 
ip access-list test deny ip src any dest any
!
interface GigaEthernet0.0 
  ip filter test 1 in
ip access-list test01 permit ip src 1.1.1.1/32 dest any 
ip access-list test02 permit ip src 2.2.2.2/32 dest any 
ip access-list test03 deny ip src any dest any
!
interface GigaEthernet0.0 
  ip filter test01 1 in
  ip filter test02 2 in
  ip filter test03 3 in

前者の運用ならばACLをまとめて削除できるので操作は楽かもしれません。後者の運用ならばACLを1行ずつメンテナンスできるため、設定の手間は多いものの通信断なしの移行作業ができるかもしれません。

両者の書き方はメリット・デメリットがありますので、組織にあった運用方法を選択してください。

動作確認

動作確認の構成

以下の環境で動作確認を行います。検証の都合上、実際のインターネットではなく擬似的なインターネットを使用します。

+-----------------+   +-----------------+
| Rocky Linux 8.4 |   | Rocky Linux 8.4 |
|      host200    |   |      host201    |
+-------+---------+   +-------+---------+
   eth0 | .200           eth0 | .201
        |                     |
        +-----------+---------+
                    |
                    |
                    | 200.0.0.0/24
                    | 
              Gi0.0 | .1
          +---------+-------+ 
          |   NEC IX 2015   | 
          |       R1        |
          +---------+-------+
              Gi1.0 | .254
                    |
                    | 192.168.1.0/24
                    |
             ens192 | .dhcp
          +---------+-------+
          | Rocky Linux 8.4 |
          |      host100    |
          +-----------------+

初期設定

IX2015の初期設定は以下の通りとします。設定はIPアドレスのみです。

R1 : NEC IX 2015
Current configuration : 741 bytes

! NEC Portable Internetwork Core Operating System Software
! IX Series IX2105 (magellan-sec) Software, Version 8.10.11, RELEASE SOFTWARE
! Compiled Aug 02-Fri-2013 13:57:45 JST #2
! Current time Nov 20-Sat-2021 14:28:04 JST
!
!
hostname Router
timezone +09 00
!
!
!
!
!
!
!
!
!
logging buffered 131072
logging subsystem all warn
logging timestamp datetime
!
!       
!
!
!
!
!
!
!
!
!
!
telnet-server ip enable
!
!
!
!
!
!
!
!
!
device GigaEthernet0
!
device GigaEthernet1
!
interface GigaEthernet0.0
  ip address 200.0.0.1/24
  no shutdown
!
interface GigaEthernet1.0
  ip address 192.168.1.254/24
  no shutdown
!
interface Loopback0.0
  no ip address
!
interface Null0.0
  no ip address

動作確認 (1) OutBoundセキュリティ

NATを有効にします。

[R1:IX2015]
interface GigaEthernet0.0
  ip napt enable 

この状況でWAN方向へのACLの動作確認をしてみましょう。検証シナリオとして、host201以外へのsshを禁止する方法を考えます。設定例は以下の通りです。

[R1:IX2015]
ip access-list g00_out permit tcp src any dest 200.0.0.201/32 dport eq 22
ip access-list g00_out deny tcp src any dest any dport eq 22
ip access-list g00_out permit ip src any dest any
!
interface GigaEthernet0.0
  ip filter g00_out 1 out

host200(200.0.0.200)へのsshが拒否され、host201(200.0.0.201)へのsshが許可される事を確認します。

[host100:RockyLinux8.4]
[root@host100 ~]# ssh 200.0.0.200
ssh: connect to host 200.0.0.200 port 22: Connection timed out
[root@host100 ~]# 
[root@host100 ~]# 
[root@host100 ~]# 
[root@host100 ~]# ssh 200.0.0.201
Warning: Permanently added '200.0.0.201' (ECDSA) to the list of known hosts.
Last login: Sat Nov 20 15:57:11 2021 from 200.0.0.1
[root@rocky201 ~]#

動作確認 (2) NATP Serviceに対する対策

NAPT serviceはWAN側からのtelnet, sshなどを許容する設定です。この設定はインターネットに対してtelnet, sshを公開する事になりますので、セキュリティ対策と併せた検討が必要になります。

telnet, sshなどをWAN方向から許可する設定を入れます。

[R1:IX2015]
telnet-server ip enable
ssh-server ip enable
http-server ip enable
!
pki private-key generate rsa
http-server username admin
!
interface GigaEthernet0.0
  ip napt enable 
  ip napt service ping 200.0.0.1
  ip napt service telnet 200.0.0.1
  ip napt service ssh 200.0.0.1 
  ip napt service http 200.0.0.1

この状況で、host201(200.0.0.201)からのhttpのみを許可する設定を投入します。

[R1:IX2015]
ip access-list g00_in permit tcp src 200.0.0.201/32 dest any dport eq 80
ip access-list g00_in deny tcp src any dest any dport eq 80
ip access-list g00_in permit ip src any dest any
!
interface GigaEthernet0.0
  ip filter g00_in 1 in

host200(200.0.0.200)からのhttpは許容されないものの、host201(200.0.0.201)からのhttpが許可される事を確認します。

[host200:RockyLinux8.4]
[root@rocky200 ~]# curl --connect-timeout 3 -I http://200.0.0.1
curl: (28) Connection timed out after 3001 milliseconds
[root@rocky200 ~]# 
[host201:RockyLinux8.4]
[root@rocky201 ~]# curl --connect-timeout 3 -I http://200.0.0.1
HTTP/1.1 302 Found
Cache-Control: no-cache
Connection: close
Date: Sat, 20 Nov 2021 06:44:02 GMT
Location: /guest_top.html
Server: IX Series IX2105 (magellan-sec) Software, Version 8.10.11, RELEASE SOFTWARE
Allow: GET, HEAD, POST
Content-Length: 0
Content-Type: text/html; charset=EUC-JP

[root@rocky201 ~]# 
タイトルとURLをコピーしました