Glücklicherweise erzeugt das Tool nicht nur das binäre Modul, sondern auch die Sourcen dazu. Das nutze ich dazu, um mir die Möglichkeit offenzuhalten, den Zugriff auf den IRC-Port mittels eines Booleans dynamisch aus- und einzuschalten. Ich erweitere also die von
»audit2allow
«
erzeugte Type-Enforcement-Datei um die entsprechenden Anweisungen für ein Boolean. Ist das RPM-Paket
»selinux-policy
«
installiert, befindet sich auf dem Fedora-System im Ordner
»/usr/share/selinux/devel
«
ein Makefile, mit dessen Hilfe ich die Source-Dateien sehr einfach in ein neues, binäres Policy-Modul wandeln kann (
Listing 1
).
Listing 1
Makefile
01 # make -f /usr/share/selinux/devel/Makefile 02 Compiling targeted xguest_irc module 03 /usr/bin/checkmodule: loading policy configuration from tmp/xguest_irc.tmp 04 /usr/bin/checkmodule: policy configuration loaded 05 /usr/bin/checkmodule: writing binary representation (version 10) to 06 tmp/xguest_irc.mod 07 Creating targeted xguest_irc.pp policy package 08 rm tmp/xguest_irc.mod.fc tmp/xguest_irc.mod
Anschließend lade ich das so erzeugte Modul zum SE-Linux-Standardregelwerk hinzu:
semodule -i xguest_irc.pp
Der folgende Befehl zeigt an, dass nun eine entsprechende Regel auf dem System bekannt ist:
$ sesearch -A -s xguest_t -t ircd_port_t Found 1 semantic av rules: allow xguest_t ircd_port_t : tcp_socketname_connect ;
Diese Policy läuft nun schon eine Zeitlang auf dem Familien-Rechner, und bisher hat sich noch niemand beschwert. Der Zugriff auf das Web und die Kommunikation mit den Kumpels über IRC klappt weiterhin ohne Probleme. Sollte jetzt irgendein Programm versuchen, sich ungewollten Zugriff auf das Netzwerk zu verschaffen, wird dies jetzt wirkungsvoll verhindert. Dank der dynamisch gehaltenen Policy bin ich nun sogar in der Lage, den Zugriff auf die IRC-Server zu deaktivieren, sollte die häusliche Situation dies einmal erfordern:
setsebool xguest_use_irc off
Zum Schluss nun noch einmal der komplette Aufruf von
»audit2allow
«
mit dem von mir manuell abgeänderten Policy-Modul für den Zugriff auf einen IRC-Server (
Listing 2
).
Listing 2
Policy-Modul
01 # grep xchat /var/log/audit/audit.log | audit2allow -R -M xguest_irc 02 03 policy_module(xguest_irc,1.0.0) 04 05 require { 06 type xguest_t; 07 } 08 09 ## <desc> 10 ## <p>a 11 ## Allow xguest users to use IRC 12 ## </p> 13 ## </desc> 14 gen_tunable(xguest_use_irc, true) 15 16 tunable_policy(`xguest_use_irc',` 17 corenet_tcp_connect_ircd_port(xguest_t) 18 '