web-dev-qa-db-ja.com

SELinuxまたはAppArmorを使用して単一プロセスのネットワークアクセスを制限する

ネットワークにアクセスするPythonスクリプトがあり、ネットワークアクセスを拒否したい場合があります。SELinuxまたはAppArmorでこれを実現するにはどうすればよいですか?この特定のスクリプトを制限付きアクセス。

8
scythargon

AppArmorには、アプリケーションからのネットワーク接続をブロックする機能があります。私は自分でやったことはありませんが、その方法の詳細については AppArmorコミュニティページ および ネットワークルール ページを参照してください。

そのルックスから、deny networkディレクティブを使用すると、アプリケーションのすべてのネットワークアクセスをブロックできます。

2
Polynomial

SELinuxを有効にしている場合、デフォルトのアクションはアクセスを拒否することだったので、ネットワークアクセスを時々許可することでしたね。

私はあなたがこのような何かをしなければならないのではないかと思います serverfaultの回答 、これは単一プロセスのSE Linux設定httpdを含み、その設定をiptablesと組み合わせますネットワークアクセスを制御します。

timeアスペクトを追加するために、iptablesに time module があります。 link は、別のフォーラムでの実際の使用法を示しています。

AppArmorはすでによく答えられています:)

1
Mark Hillick

このケースのAppArmorプロファイルは次のとおりです。

profile nonetwork /path/to/exec {
  # Allow all rules...
  capability,
  network,
  mount,
  remount,
  umount,
  pivot_root,
  ptrace,
  signal,
  dbus,
  unix,
  file,
  # ...but no network
  deny network,
  deny capability net_admin,
  deny capability net_bind_service,
  deny capability net_broadcast,
  deny capability net_raw,
}

現在、すべてのLinuxディストリビューションが一部の機能をサポートしているわけではありません。たとえば、Debian 10はnetworkunixdbusルールをサポートしていません。したがって、このプロファイルはそのようなディストリビューションでは機能しません。

0
canondmajor