Linuxのファイアウォールiptablesを使って特定のユーザからの通信を禁止することが出来るんですね。知らなかったのでメモ。元ネタはここ。iptablesの機能なのでUbuntu, CentOS等のほとんどディストリビューションで利用可能です。
Linuxのmanページからピックアップすると、iptablesのownerモジュールを使うと、特定のユーザやコマンド等に作られたプロセスのパケットをフィルタリングできます。これはOUTPUTチェインで有効で、ICMP等のオーナ情報が無効なパケットには適用されません。
- --uid-owner <userid>
- --gid-owner <groupid>
- --pid-owner <processid>
- --sid-owner <sessionid>
- --cmd-owner <command name>
使いどころはいろいろ考えられるようで、なさそうな気もしますが、やはりゲストなユーザ(eg. 外部組織のユーザ)のアクセスを遮断したり制限したりするような使い道でしょうか。あとは子供からのアクセスを遮断するとかかな?覚えておいたら使えそうです。
-A OUTPUT -p tcp -m owner --uid-owner USERNAME -j DROP
-A OUTPUT -p udp -m owner --uid-owner USERNAME -j DROP
processidやコマンドなんかも指定できたり、グループで指定できたりもするので何かと使えそうな感じがします。またドロップではなくロギングしとけば、特定のユーザの通信をチェックできたりもしたりしますね。
それほど必要かどうかは別として、覚えておいて損はなさそうな機能です。