Simplified Policyのネットワーク設定
ネットワークパーミッション統合の考察から、
Simplified Policyのallownet設定要素を根本的に作りなおした。
次のような設定項目を実装した。
これで、ネットワーク制御が、かなり使えるものになっている。
refpolicyのマクロより全然使いやすいはず。
audit2spdlを使えば、以下の設定要素を使ったポリシをログから生成可能だし。
Simplified Policyも、ようやく一つの区切りが見えてきた…
ソケットの利用を制御
allownet -protocol tcp|udp|raw|* -domain <domain> use; -domain <domain>は省略可能。
これはTCP/UDP/RAWソケットの使用を許可する。
"-domain"は省略可能(通常は省略)だが、これを使うと、
「あるドメインから引き継いだソケットだけを利用可能」のような設定ができる。
ポート番号の利用制御
allownet -protocol <protocol> -port <port number> <usage>; <protocol>はtcp,udpをコンマ区切りで指定可能。 -1023で,使われてないwellknownポート、 1024-で、非特権ポート全部、*で、全ポート、という指定が可能。 <usage>は、server,clientをコンマ区切りで指定。
例:
domain httpd_t;
allownet -protocol tcp -port 80,443 server;
→ httpd_tドメインがTCP80,443ポートでサーバとして振る舞うことが可能
domain hoge_t;
allownet -protocol udp,tcp -port * client;
→ hoge_tドメインが、全てのTCP/UDPポートのサービスにTCPクライアントとして接続可。
NICの利用制御
「あるNICだけに接続可能」という設定ができる。
allownet -protocol <プロトコル> -netif <NICの名前> <permission>; <permission>はsend,recv(送信、受信)
この設定要素はオプショナルで、デフォルト無効(つまり、NICベースのアクセス制御はデフォルトでは無効)
NICベースのアクセス制御をデフォルト有効にすると、カスタマイズが多く必要になってしまうので。
この設定要素を記述したドメインにだけ、NICベースのアクセス制御が有効になるようにしている。
例:
domain hoge_t;
allownet -protocol tcp,udp -netif eth0 send,recv;
→hoge_tは、eth0にパケットを送受信可能。eth1,loには送受信不可能。
なお、他のドメインには、NICベースのアクセス制御は働いてない。
node(IPアドレスのアクセス制御)
「あるIPアドレスだけにパケット送受信可能」という設定ができる。
allownet -protocol <プロトコル> -node <ipaddress> <permission>; <permission>はsend,recv,bind(送信、受信, bind(サーバとして振る舞うときに、bindシステムコールでアドレスを利用) <ipadress>は、<IPアドレス>/<ネットマスク>という書式。
この設定要素もオプショナルで、デフォルト無効。
例:
domain hoge_t;
allownet -protocol tcp,udp -node 192.168.0.0/255.255.255.0 send,recv;
hoge_tは、192.168.0ネットワークにだけパケットを送受信可。
なお、他のドメインには、IPアドレスベースのアクセス制御は働いてない。