ネットワークパーミッション統合

野球が盛り上がっているようだが、テレビで見れんので、
ネットワークパーミッション統合の設計。

  • ソケット、IPアドレス(node), NIC(netif)というオブジェクトが存在
  • 「サーバー」「クライアント」というふるまいがある

という点から(詳細は省略)、以下のように設計。
結果的にAppArmorのネットワークパーミッションと似た設計になっている。
#LSM使ってるからかも。。

ソケットのレイヤーのパーミッション統合

  • ポート番号のサービスを提供するサーバー

allownet -tcp|-udp|-raw -server |ポート番号|;

  • ポート番号のサービスを利用するクライアント

allownet -tcp|-udp|-raw -client |ポート番号|;

例:
allownet -tcp -client 80;
リモートの80番ポートにTCP接続可能

node,netifレイヤーのパーミッション統合

allownet -tcp|-udp|-raw -node |IPアドレス| send|recv|bind;
bindは、ローカルアドレスを使って接続待ちをする。一台のマシンに複数のIPアドレスが割り当てられている時のみに有効。

  • NICに送信または受信

allownet -tcp|-udp|-raw -nic |NIC名| send|recv;

node,netifレイヤーのアクセス制御は「オプション」扱い
にする。つまり、デフォルト許可で、明示的に指定した時だけ設定される。
node,netifはラベル自動生成の実装が面倒そうだなぁ。。

が、これを作れば、パーミッション統合の考察も一段落。