最終回 SECMARKによるネットワークの取り扱い方法


古田 真己
サイオステクノロジー株式会社
2007/2/14

 Red Hat Enterprise Linux 5のベータ版がリリースされ、そろそろ正式リリースが間近となりました。前回までは、ファイルシステムとプロセスに対するアクセス制御方法である、MLSとMCSについて説明しました。

 今回はiptablesを使用し、SELinuxによってネットワークに対するアクセス制御を行うための仕組みと方法について、Fedora Coreの開発版である、Rawhideを使用して説明します。

 ネットワークとSELinux

 SELinuxから制御可能なネットワーク要素として、入ってくるパケットと出ていくパケットがあります。この2つの取り扱いはそれぞれ以下のようになっています。

●xfrm(IPsec) over TCP/IP

 SELinuxのラベルを付けたホスト間の通信を、IPsecを使用して暗号化します。パケット処理にはxfrmフレームワークを使用し、カーネルの取り扱うソケットバッファ(sk_buff構造体)に対して制御を行います。

●iptables/SECMARK

 ネットワークパケットがホストに届いたときに、iptablesを使用してマークを付け、ホスト上のプロセスからのアクセス制御を行います。パケット処理にはnetfilterフレームワークを使用し、カーネルの取り扱うソケットバッファ(sk_buff構造体)に対して制御を行います。

 iptablesとnetfilter

 SECMARKはnetfilterフレームワークを使用したSELinuxによるネットワーク制御のための仕組みです。つまり、SECMARKによるラベル付けを行うためには、iptablesを使用します。

●netfilterの拡張とnetfilterモジュール

 iptables/SECMARKは“iptables→netfilter→netlink→sk_buff”のようにネットワークを取り扱います。“netlink→sk_buff”間はすでにある仕組みとして実現されていますから、SECMARKの拡張はnetfilterから始まります。

 SECMARKはMARKに似ています。異なる点としては、MARKではマークした対象パケットをネットワークの処理のみで使用しますが、SECMARKではSELinuxのアクセス制御でそれを使用します。

●CONNTRACKフレームワーク

 iptablesはコネクションを追跡してSECMARKを使うために、netlinkの複雑なコネクションを追跡するためのCONNTRACKフレームワークを、CONNSECMARKに使用します。CONNTRACKを使用したものには前述のMARKに似たCONNMARKがあり、これはip_conntrack_ftpや、ip_conntrack_ircなど、IPヘッダ以外で接続先が決定されるような“複雑な”プロトコルで、コネクション追跡に使われます。

 CONNSECMARKはCONNTRACK − Connection Trackingのパケットに対するマッチング機能を使用して、ネットワーク上から流れてきたパケットからコネクションに、またコネクションからパケットにSELinuxで使用するセキュリティマークを付けます。

 SELinux環境のセットアップ

 前回の手順を参考にRawhideを作ります。簡単な手順は以下のように段階的に“yum upgrade”を実行していくことです。

  1. Fedora Core 6をインストールする
  2. “yum upgrade”を実行して、パッケージを最新にアップデートする Rawhideのfedora-releaseパッケージをdownload.fedora.redhat.com(またはそのミラーサイト)のFTPサーバから取得してインストールする
  3. “yum upgrade”でRawhideにアップデートする

 準備が整ったら、次に進みます。

1/3

Index
SECMARKによるネットワークの取り扱い方法
Page1
ネットワークとSELinux
iptablesとnetfilter
SELinux環境のセットアップ
  Page2
SECMARKとCONNSECMARK
SECMARK/CONNSECMARKを使ってみる
  Page3
SELinuxの今後


Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間