はじめに
近年、サイバー攻撃の高度化に伴い、ネットワークのセキュリティ対策として「マイクロセグメンテーション」が注目されています。従来のネットワークセグメンテーションは、VLAN や上位のファイアウォールを活用するものでしたが、マイクロセグメンテーションはホスト単位でのアクセス制御を実現するアプローチです。本記事では、コストを抑えつつ、すぐに実装できる方法について紹介します。
マイクロセグメンテーションとは
マイクロセグメンテーションは、ネットワークのセグメント単位の信頼ではなく、ホスト単位の信頼を基にしたセキュリティ設計です。NIST SP800-207 でもゼロトラストを実現する手法の一つとして紹介されており、特にラテラルムーブメント(内部での水平移動)を防ぐために有効です。
従来の方法では、VLAN や上位のファイアウォールによってセグメント間の通信を制御していましたが、それを前提にマイクロセグメンテーション的なアプローチを行うと、全てのホストを /30 でセグメント化し、/30 のセグメント間の通信制御を上位のファイアウォールなどで行うことになります。しかし、これは現実的ではなく、ルーティングの制御も煩雑となります。
また、マイクロセグメンテーションを効率的に管理するための SDN 製品もありますが、高価であり、比較的導入のハードルが高いことが現状です。
すぐにできるマイクロセグメンテーションの実装
最も簡単にマイクロセグメンテーションを実装するには、ホストファイアウォールを前提として IaC で統合的な管理を行うことです。
ホストファイアウォールと IaC
ホストファイアウォールは、Linux であれば iptables を使用できます(ここでは他の OS は除く)。
iptables を活用した実装例
例えば、特定のアプリケーションサーバー: 192.168.1.100 と DBサーバー: 192.168.1.200 の通信を制限し、許可されたサーバーのみがアクセスできるようにする場合、以下のような iptables ルールを設定できます。
iptables -A INPUT -s 192.168.1.100 -d 192.168.1.200 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -d 192.168.1.200 -p tcp --dport 3306 -j DROP
この設定により、DB サーバーは特定のアプリケーションサーバー以外からのアクセスを拒否するようになります。
上記は、INPUT だけの制御ですが、OUTPUT も制御するのが適切です。
Infrastructure as Code (IaC)
ホストごとに個別設定を行うのは運用負荷が高いため、Ansible などのInfrastructure as Code(IaC)ツールを活用すると、スケーラブルな運用が可能になります。
例えば、Ansible を使って複数のサーバーに統一的なファイアウォールルールを適用する Playbook の例を示します。
- name: Apply microsegmentation firewall rules
hosts: all
become: yes
tasks:
- name: Allow app server to access DB server
iptables:
chain: INPUT
source: "192.168.1.100"
destination: "192.168.1.200"
protocol: tcp
destination_port: 3306
jump: ACCEPT
- name: Block all other access to DB server
iptables:
chain: INPUT
source: "0.0.0.0/0"
destination: "192.168.1.200"
protocol: tcp
destination_port: 3306
jump: DROP
このように、Ansible を活用すれば、複数のホストに対して一貫したポリシーを適用できます。
クラウド環境でのマイクロセグメンテーション
クラウド環境では、AWS の Security Groups、Azure の Network Security Groups (NSG) など、クラウドネイティブな制御方法が存在します。
例えば、AWS の Security Group を活用すれば、ネットワークセグメントに依存せず、ID ベースのアクセス制御が可能です。クラウド環境でのマイクロセグメンテーションの手法を考慮することも重要です。
専用製品などの紹介
エージェント型ソリューションの活用
最近では、Cisco Tetration, Illumio, Guardicore などのエージェントベースのマイクロセグメンテーションソリューションが登場しています。
これらは、IP アドレスではなくアプリケーションやプロセス単位で通信制御を行うことが可能であり、特にクラウドやハイブリッド環境での運用に適しています。
ID ベースのアクセス制御
ゼロトラストの考え方では、IP アドレスではなく、ユーザーやデバイスの ID を基にアクセス制御を行うことが推奨されます。
例えば、Google の BeyondCorp や、ゼロトラスト・ネットワークアクセス (ZTNA) といった仕組みを活用すれば、VPN に依存せずに、安全なマイクロセグメンテーションを実現できます。
OS ベースのホストファイアウォールの限界
OS ベースのホストファイアウォールでは、仮に root 権限を奪取された場合、ファイアウォールルールを編集されると効果がないので、あくまで簡易的なものとして考えて使用してください。このため、理想的なのは SDN なのですが、いずれにしても OS のセキュリティパッチの適用は最も重要である点は変わりません。OS にセキュリティの問題があれば、どのようなファイアウォールも無力である点を認識することが重要です。
まとめ
マイクロセグメンテーションは、セグメント単位ではなくホスト単位の信頼モデルを構築することで、内部のラテラルムーブメントを防ぐ重要なセキュリティ対策です。しかし、専用の SDN 製品は高価で導入のハードルが高いため、まずはホストファイアウォールを活用したシンプルな実装から始めるのが有効です。
さらに、IaCを活用することで運用の手間を軽減し、より高度な管理を行うことができます。クラウド環境では Security Groups や IAM、ZTNA を活用し、エージェント型ソリューションを導入する選択肢もあります。
まずは、ホストファイアウォールによる実装から試してみてはいかがでしょうか?