ネットワークにアクセスするPythonスクリプトがあり、ネットワークアクセスを拒否したい場合があります。SELinuxまたはAppArmorでこれを実現するにはどうすればよいですか?この特定のスクリプトを制限付きアクセス。
AppArmorには、アプリケーションからのネットワーク接続をブロックする機能があります。私は自分でやったことはありませんが、その方法の詳細については AppArmorコミュニティページ および ネットワークルール ページを参照してください。
そのルックスから、deny network
ディレクティブを使用すると、アプリケーションのすべてのネットワークアクセスをブロックできます。
SELinuxを有効にしている場合、デフォルトのアクションはアクセスを拒否することだったので、ネットワークアクセスを時々許可することでしたね。
私はあなたがこのような何かをしなければならないのではないかと思います serverfaultの回答 、これは単一プロセスのSE Linux設定httpd
を含み、その設定をiptables
と組み合わせますネットワークアクセスを制御します。
time
アスペクトを追加するために、iptablesに time
module があります。 link は、別のフォーラムでの実際の使用法を示しています。
AppArmorはすでによく答えられています:)
このケースの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はnetwork
、unix
、dbus
ルールをサポートしていません。したがって、このプロファイルはそのようなディストリビューションでは機能しません。