インターネットから 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
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
に変換されるので、このアドレスをルールの記述に使用します。
また、インターネットからのアクセスには 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 フィルタリングでつながらなくなったら
ポータル画面からコンソールを起動できます。
root
というユーザー名でログインして該当ルールを削除・適用しましょう。
参考
- AIX – Getting OS Versions | /bin/help LINUX REFERENCE
- Setting up a firewall with AIX TCP/IP filtering – IBM Developer
- Unix swing: Sample firewall in AIX
- 静的フィルター・ルール
- genfilt コマンド
# chfilt -v 4 -n 3 -l N
Filter rule 3 for IPv4 has been changed successfully.
# rmfilt -v 4 -n 4
Filter rule 4 for IPv4 has been removed successfully.
# mkfilt -v 4 -g stop
# mkfilt -v 4 -u