Help us understand the problem. What is going on with this article?

Power Systems Virtual Server on IBM Cloud (AIX) で IP フィルタリングを実装する

インターネットから Power Systems Virtual Server へのアクセス

  • 「External IP」を使ったインターネットアクセスは有効/無効を選択することができます。
  • 外部公開用途ではなく、管理用途での利用のみが想定されています。
  • 「External IP」は OS に直接割り当てられるのではなく、IBM Cloud (x86) 上に割り当てられます。「External IP」へのアクセスは、vSRX で NAT されて、IBM Cloud が管理する専用線経由で Power Systems Virtual Serverにアクセスされます。
  • 前段に FW が構成されており、SSH(22)、HTTPS(443)、Ping(no Port)、 IBM i 5250 terminal emulation with SSL (992) 以外の通信はブロックされています。

Network security
The public Power Systems™ Virtual Server network security architecture relies on a set of fixed firewall ports open on the Juniper vSRX firewalls:

  • 22 (SSH)
  • 443 (HTTPS)
  • 992 (IBM i5250 emulation SSL)
  • ICMP traffic

Kobito.WZjBN6.png

IP フィルタリングとは

管理用途での利用を想定した場合でも、拠点からアクセスのみ許可したいことはよくあるので、この機能の実装を確認します。

IP セキュリティー・フィーチャーのインストール
AIX の IP セキュリティー・フィーチャーは、個別にインストールしてロードすることができます。
インストールする必要があるのは、次のファイルセットです。

  • bos.net.ipsec.rte (カーネル IP セキュリティー環境用のランタイム環境とコマンド)
  • bos.msg.LANG.net.ipsec (LANG は指定する言語、例えば en_US)
  • bos.net.ipsec.keymgt
  • clic.rte (C 用の CryptoLite、 DES、triple DES および AES 暗号化用のファイルセット)

環境準備

Power Systems Virtual Server on IBM Cloud (AIX) のデフォルト構成を確認します。

# uname -M
IBM,9009-22A
# oslevel -s
7200-04-01-1939

以下の場合だと、「External IP」は内部で 192.168.2.164 に変換されるので、このアドレスをルールの記述に使用します。

Kobito.UV8xXu.png

また、インターネットからのアクセスには en0 が使われているので、このインターフェースをルールの記述に使用します。

# ifconfig -a
en0: flags=1e084863,814c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),LARGESEND,CHAIN>
        inet 192.168.2.164 netmask 0xfffffff0 broadcast 192.168.2.175
         tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
en1: flags=1e084863,814c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),LARGESEND,CHAIN>
        inet 192.168.200.10 netmask 0xffffff00 broadcast 192.168.200.255
         tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
en2: flags=1e084863,814c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),LARGESEND,CHAIN>
        inet6 fe80::c8f2:fdff:fe8b:1e3b/64
         tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
sit0: flags=8100041<UP,RUNNING,LINK0>
        inet6 ::/96
lo0: flags=e08084b,c0<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,LARGESEND,CHAIN>
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
        inet6 ::1%1/128
         tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1

IP フィルタリング機能の要件になっている bos.msg.LANG.net.ipsec はデフォルトでインストールされていないので、以下のコマンドで /usr/sys/inst.images からインストールします。

# installp -L -d /usr/sys/inst.images | grep bos.msg.en_US.net.ipsec
bos.msg.en_US:bos.msg.en_US.net.ipsec:7.2.4.0::I:C:::::N:IP Security Messages - U.S. English ::::0:1937:
# installp -acg -d /usr/sys/inst.images bos.msg.en_US.net.ipsec
# lslpp -Lc | grep "bos.msg.en_US.net.ipsec"
bos.msg.en_US:bos.msg.en_US.net.ipsec:7.2.4.0: : :C: :IP Security Messages - U.S. English : : : : : : :0:0:/:1937

その他のファイルセットは、デフォルトでインストールされていることが確認できます。

# lslpp -Lc | grep "bos.net.ipsec.*"
bos.net:bos.net.ipsec.keymgt:7.2.4.0: : :C: :IP Security Key Management : : : : : : :1:0:/:1937
bos.net:bos.net.ipsec.rte:7.2.4.0: : :C: :IP Security : : : : : : :1:0:/:1937
# lslpp -Lc | grep "clic.rte.*"
clic.rte:clic.rte.kernext:4.10.0.2: : :C: :CryptoLite for C Kernel: : : : : : :1:0:/:
clic.rte:clic.rte.lib:4.10.0.2: : :C: :CryptoLite for C Library: : : : : : :1:0:/:

IP フィルタリングログ設定

フィルタリングの挙動をログで確認できるように、事前に設定します。

# cp /etc/syslog.conf /etc/syslog.conf.bak
# echo "local4.debug /var/adm/ipsec.log" >> /etc/syslog.conf
# touch /var/adm/ipsec.log
# chmod 644 /var/adm/ipsec.log
# refresh -s syslogd
0513-095 The request for subsystem refresh was completed successfully.

IP フィルタリング設定

デバイス追加のコマンドで機能を有効化します。

# mkdev -c ipsec -t 4 
ipsec_v4 Available

デフォルトアクションを許可 (P) でルールを適用します。

# mkfilt -v 4 -u -z P
Default rule for IPv4 in ODM has been changed.
Successfully set default action to PERMIT

拠点クライアント(203.x.x.x/24 のグローバルIP)からSSHリクエストを許可するルールを作成します。

# genfilt \
-v 4 \
-a P \
-s 203.x.x.x \
-m 255.255.255.0 \
-d 192.168.2.164 \
-M 255.255.255.240 \
-g N \
-c tcp \
-o gt \
-p 1023 \
-O eq \
-P 22 \
-r L \
-w I \
-l N \
-f Y \
-i en0
Filter rule 3 for IPv4 has been added successfully.

SSHサーバーから拠点クライアント(203.x.x.x/24 のグローバルIP)への応答を許可するルールを作成します。

genfilt \
-v 4 \
-a P \
-s 192.168.2.164 \
-m 255.255.255.240 \
-d 203.x.x.x \
-M 255.255.255.0 \
-g N \
-c tcp/ack \
-o eq \
-p 22 \
-O gt \
-P 1023 \
-r L \
-w O \
-l N \
-f Y \
-i en0
Filter rule 4 for IPv4 has been added successfully.

上記以外のその他のアクセスを拒否し、ログを残すルールを作成します。

# genfilt \
-v 4 \
-a D \
-s 0 \
-m 0 \
-d 192.168.2.164 \
-M 255.255.255.240 \
-g N \
-c tcp \
-O eq \
-P 22 \
-r L \
-w I \
-l Y \
-f Y \
-i en0
Filter rule 5 for IPv4 has been added successfully.

以下のコマンドでルールのリスト表示が確認できます。

# lsfilt -v 4 -O
1|permit|0.0.0.0|0.0.0.0|0.0.0.0|0.0.0.0|no|udp|eq|4001|eq|4001|both|both|no|all packets|0|all|0|||Default Rule
2|*** Dynamic filter placement rule for IKE tunnels ***|no
3|permit|203.x.x.x|255.255.255.0|192.168.2.164|255.255.255.240|no|tcp|gt|1023|eq|22|local|inbound|no|all packets|0|en0|0|||
4|permit|192.168.2.164|255.255.255.240|203.x.x.x|255.255.255.0|no|tcp/ack|eq|22|gt|1023|local|outbound|no|all packets|0|en0|0|||
5|deny|0.0.0.0|0.0.0.0|192.168.2.164|255.255.255.240|no|tcp|any|0|eq|22|local|inbound|yes|all packets|0|en0|0|||
0|deny|0.0.0.0|0.0.0.0|0.0.0.0|0.0.0.0|yes|all|any|0|any|0|both|both|no|all packets|0|all|0|||Default Rule

/var/adm/ipsec.log にログ出力を開始します。

# mkfilt -v 4 -g start

デフォルトアクションを拒否 (D) でルールを適用します。
これまでに作成したルールもここで適用されるので注意してください。

# mkfilt -v 4 -u -z D
Default rule for IPv4 in ODM has been changed.
Successfully set default action to DENY

これで特定の拠点(203.x.x.x/24 のグローバルIP)からSSHアクセスのみ許可する実装ができました。
以下の DENY ログ (R:d) からも認可されていないアクセスを確認できます。

# tail -f /var/adm/ipsec.log
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: Filter rules updated at 08:57:01 on 02/14/20 
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: #:1 not known 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 (0) ??? 0 ??? 0  both both l=n f=n t=0 t_exp=0
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: #:2 PERMIT 203.x.x.x 255.255.255.0 192.168.2.164 255.255.255.240 tcp     gt  1023 eq  22 en0 local inbound l=n f=y t=0 t_exp=0
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: #:3 PERMIT 192.168.2.164 255.255.255.240 203.x.x.x 255.255.255.0 tcp/ack eq  22 gt  1023 en0 local outbound l=n f=y t=0 t_exp=0
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: #:4 DENY 0.0.0.0 0.0.0.0 192.168.2.164 255.255.255.240 tcp     any 0 eq  22 en0 local inbound l=y f=y t=0 t_exp=0
Feb 14 08:57:01 khayama-aix local4:notice : mkfilt: #:5 DENY 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 all any 0 any 0  both both l=n f=y t=0 t_exp=0
Feb 14 09:01:18 khayama-aix local4:info ipsec_logd: #:4 R:d  I:192.168.2.164 S:195.x.x.x D:192.168.2.164 P:tcp/ack SP:41713 DP:22 R:l I:en0 F:n T:0 L:56  
Feb 14 09:01:21 khayama-aix local4:info ipsec_logd: #:4 R:d  I:192.168.2.164 S:195.x.x.x D:192.168.2.164 P:tcp/ack SP:41713 DP:22 R:l I:en0 F:n T:0 L:56  
Feb 14 09:01:27 khayama-aix local4:info ipsec_logd: #:4 R:d  I:192.168.2.164 S:195.x.x.x D:192.168.2.164 P:tcp/ack SP:41713 DP:22 R:l I:en0 F:n T:0 L:52
Feb 14 09:05:11 khayama-aix local4:info ipsec_logd: #:4 R:d  I:192.168.2.164 S:202.x.x.x D:192.168.2.164 P:tcp/ack SP:34454 DP:22 R:l I:en0 F:n T:0 L:64  
Feb 14 09:05:19 khayama-aix local4:info last message repeated 3 times
Feb 14 09:16:48 khayama-aix local4:info ipsec_logd: #:4 R:d  I:192.168.2.164 S:121.x.x.x D:192.168.2.164 P:tcp/ack SP:65067 DP:22 R:l I:en0 F:n T:0 L:68  

IP フィルタリングでつながらなくなったら

ポータル画面からコンソールを起動できます。

Kobito.Ipc04U.png

root というユーザー名でログインして該当ルールを削除・適用しましょう。

Kobito.qNR9Tu.png

参考

ルール3のログをなしに変更
# chfilt -v 4 -n 3 -l N
Filter rule 3 for IPv4 has been changed successfully.
ルール4を削除
# rmfilt -v 4 -n 4
Filter rule 4 for IPv4 has been removed successfully.
ログ出力を停止
# mkfilt -v 4 -g stop
作成・変更したルールの適用
# mkfilt -v 4 -u
khayama
このサイトにおける掲載内容はあくまで私自身の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした