業務ネットワーク構築を疑似体験してきた(IPAワークショップ)
2018年12月26日にセキュリティキャンプ参加生向けのIPAワークショップがあったので行ってきました。
講師:金子 正人さん(IPAセキュリティ・キャンプグループ)
SEIL/x86で業務ネットワーク構築を疑似体験しながらIPsecの通信の仕組みを理解していきます。
SEIL/x86 とは
x86アーキテクチャベースの高機能ソフトウェアルータです。私は正直よくわかりません。
なぜSEIL?かと言うと学生なら無償(アカデミックライセンス)で利用できるからです。
ネットワーク構築の勉強するとき中古のルータ買うなどが一般だったらしいです。
色々な機能が実装できます。
- PPP/PPPoE
- ルーティング (スタティック、ダイナミック、ポリシーベース)
- VLAN (IEEE802.1Q 対応)
- ブリッジ
- VRRP (ルータ冗長化プロトコル)
- VPN (IPsec、L2TPv3、PPTP、SSTP など)
- IP トンネル (IPv4 over IPv4、IPv4 over IPv6 など)
- NAT/NAPT
- DHCP/DHCPv6
- QoS ファイアウォール機能 (MAC アドレスフィルタ、IP フィルタ)
- ほか
ネットワーク構成
今回は以下のような構成のネットワークを作ります。 私は受講者1です。
物理構成
机の上に用意されたサーバーとPCを、構成図の通りにLANケーブルで配線します。
SEIL/x86の基本設定
挿したら使える家庭用ネットワーク機器と違って業務用ネットワーク機器は設定をする必要があります。
設定用のPCとネットワーク機器を「シリアルコンソールケーブル」を使ってシリアルポートに接続します。
Macならばドライバをインストールしたのち、screen /dev/tty.usbserial 38400
で接続します。
WindowsはTera Termを使っていました。
以下、SEILテクニカルマニュアル のコマンドリファレンスを参照しながら設定をしていきます。
show config
や show status
のコマンドを使うと設定を確認できます。
ホスト名の設定
机に配られたポカリから命名しました。
# hostname "POCARISWEAT"
ログインパスワードの設定
# password admin algorithm blowfish
インターフェースの設定
LANポートとIPアドレスを対応づけます。 受講者1なので以下のようになります。
# interface lan0 address 10.0.1.1/28 # interface lan1 address 192.168.1.1/24
これで受講者3のWANへ疎通できます。
スタティックルートの設定
続いて、LANへ疎通させます。
# route add 192.168.2.0/24 10.0.1.2 # route add 192.168.3.0/24 10.0.1.3
パケットキャプチャで通信内容確認
WiresharkでWANを流れるパケットをキャプチャしてみます。
これはIPsecを使う前なので通信内容が丸見えです。
IPsec
さあ、ここからが本番です。
IPsecで通信を暗号化して盗聴や改ざんに強い通信にしましょう。
まず、一旦設定をリセットします。
load-from stdin
で最小限のコンフィグをロードして、save-to flashrom
で内臓フラッシュメモリ(startup-config)に保存します。
IPsecとは
VPNで利用される主な技術のひとつです。プロトコルと言うよりもフレームワークのようなものであり、通信の枠組みを規定しています。 改ざん検知や暗号化ができます。
IPsec通信全体の流れ
1.IKE-SA
鍵情報を安全に運ぶためのトンネルを作るフェーズです。 以下の5つのパラメータをあらかじめ決めて通信相手と同じ設定にします。
- 暗号化アルゴリズム
- 認証アルゴリズム
- SA のライフタイム
- ピアの認証方式
- Diffie-Hellman鍵交換のパラメータ情報
2.IPsec-SA
IPsecでの暗号化通信を行うトンネルを作るフェーズです。 以下の5つのパラメータをあらかじめ決めて通信相手と同じ設定にします。
- セキュリティプロトコル
- 暗号化アルゴリズム
- 認証アルゴリズム
- SA のライフタイム
- IPsec の通信モード
3.実際のIPsec通信(暗号化通信)
IPsecの設定
ルーティングベースIPsec(IPsecインタフェース)の設定手順 を見ながらIPsecを設定しました。
入力したコマンドは以下の通りです。
IPsecインタフェースを設定
# interface ipsec0 tunnel 10.0.1.1 10.0.1.2 # interface ipsec0 unnumbered
IPsecインタフェース向けの経路を設定
# route add 192.168.2.0/24 ipsec0
IKEプロポーザル・IPsec-SAプロポーザルの設定
ここで、あらかじめ決めた5つのパラメータを設定します。
# ike proposal add IKEP02 encryption aes hash sha1 authentication preshared-key dh-group modp1024 lifetime-of-time 12h # ike preshared-key add "10.0.1.2" "pocarisweat" # ipsec security-association proposal add SAP02 pfs-group modp1024 authentication-algorithm hmac-sha1 encryption-algorithm aes lifetime-of-time 6h
IKEピアの設定
# ike peer add PEER02 address 10.0.1.2 exchange-mode main proposals IKEP02 my-identifier address peers-identifier address initial-contact enable tunnel-interface enable # ike auto-initiation enable
IPsec-SAを設定する
# ipsec security-association add SA02 tunnel-interface ipsec0 ike SAP02 esp enable
疎通確認
これでping 192.168.2.1
が通るはずです。
うまくいかなかったらshow status ike
や show status ipsec
で設定を確認します。
パケットキャプチャで通信内容確認
再び、WiresharkでWANを流れるパケットをキャプチャしてみます。
ESPとはIPsecに使われるプロトコルであり、暗号化されていて中身はわかりません。
感想
ネットワーク構築はハードルが高く感じていたので、今回のWSのようにやり方を懇切丁寧に教えてもらえたのはありがたいです。