Curs: | SeguretatXarxesInformàtiques |
Fitxers: | No hi ha fitxers |
Repositori SVN: | https://[email protected]/svn/iceupc/SeguretatXarxesInformàtiques |
Usuari: | anonymous |
Paraula de pas: | sense paraula de pas |
Autors: | Sergi Tur Badenas |
AppArmor és una implementació d'un modul de seguretat de Linux basat control d'accés per noms.
AppArmor confina/limita l'accés de programes individuals a un conjunt de fitxers i capacitats POSIX.
Es planteja com una alternativa a SELinux.
Està inclòs per defecte als kernels de Linux des de la Gutsy (7.10).
$ dpkg -l | grep apparmor ii apparmor 2.3+1289-0ubuntu14 User-space parser utility for AppArmor ii apparmor-utils 2.3+1289-0ubuntu14 Utilities for controlling AppArmor ii libapparmor-perl 2.3+1289-0ubuntu14 AppArmor library Perl bindings ii libapparmor1 2.3+1289-0ubuntu14 changehat AppArmor library
$ dpkg -L apparmor-utils | grep bin /usr/sbin /usr/sbin/genprof /usr/sbin/logprof /usr/sbin/autodep /usr/sbin/audit /usr/sbin/complain /usr/sbin/enforce /usr/sbin/unconfined /usr/sbin/apparmor_status /usr/sbin/aa-status /usr/sbin/aa-audit /usr/sbin/aa-autodep /usr/sbin/aa-complain /usr/sbin/aa-enforce /usr/sbin/aa-genprof /usr/sbin/aa-logprof /usr/sbin/aa-unconfined
Els perfils es troben a la carpeta:
$ /etc/apparmor.d
Per exemple, en una Jaunty Jackalope podem trobar:
$ ls abstractions disable force-complain gdm-guest-session sbin.dhclient3 tunables usr.sbin.cupsd usr.sbin.tcpdump
Per exemple la línia:
/etc/apache2/conf.d/apache2-manual.conf r
Indica que l'aplicació a la que s'aplica aquest perfil només té accés de lectura al fitxer /etc/apache2/conf.d/apache2-manual.conf
Podem utilitzar la comanda genprof, proporcionada pel paquet apparmor-utils:
$ which genprof /usr/sbin/genprof $ dpkg -S /usr/sbin/genprof apparmor-utils: /usr/sbin/genprof
Per exemple si volem crear un perfil per a Firefox:
$ which firefox /usr/bin/firefox $ sudo genprof /usr/bin/firefox Setting /usr/lib/firefox-3.0.10/firefox.sh to complain mode. Please start the application to be profiled in another window and exercise its functionality now. Once completed, select the "Scan" button below in order to scan the system logs for AppArmor events. For each AppArmor event, you will be given the opportunity to choose whether the access should be allowed or denied. Profiling: /usr/lib/firefox-3.0.10/firefox.sh [(S)can system log for SubDomain events] / (F)inish
L'aplicació queda a la espera... Ara cal executar una nova instància de firefox (no es pot utilitzar una instància existent). Feu-ho en una nova terminal:
$ firefox
Utilitzeu Firefox de forma normal durant una estona. Un cop acabeu, torneu a la finestra on heu executat genprof i premeu la tecla S:
[(S)can system log for SubDomain events] / (F)inish Reading log entries from /var/log/messages. Updating AppArmor profiles in /etc/apparmor.d. Profile: /usr/lib/firefox-3.0.10/firefox.sh Execute: /usr/bin/basename Severity: unknown (I)nherit / (P)rofile / (C)hild / (N)ame / (U)nconfined / (X)ix / (D)eny / Abo(r)t / (F)inish Use of uninitialized value $ans in hash element at /usr/share/perl5/Immunix/SubDomain.pm line 6511. Use of uninitialized value $ans in pattern match (m//) at /usr/share/perl5/Immunix/SubDomain.pm line 6511. Profile: /usr/lib/firefox-3.0.10/firefox.sh Execute: /usr/bin/basename Severity: unknown (I)nherit / (P)rofile / (C)hild / (N)ame / (U)nconfined / (X)ix / (D)eny / Abo(r)t / (F)inish
Per cada acció podeu decidir quina opció duu a terme (per exemple denegar amb la tecla D). Genprof us anirà ensenyant una a una les accions i fitxers als quals ha accedit Firefox.
Si denegueu les accions (tecla D) us sortirà un missatge:
= Changed Local Profiles = The following local profiles were changed. Would you like to save them? [1 - /usr/lib/firefox-3.0.10/firefox.sh] (S)ave Changes / [(V)iew Changes] / Abo(r)t
Ara premeu S per salvar el perfil:
Writing updated profile for /usr/lib/firefox-3.0.10/firefox.sh. Profiling: /usr/lib/firefox-3.0.10/firefox.sh [(S)can system log for SubDomain events] / (F)inish
I premeu F (finish). Consulteu el nou perfil creat:
$ cat /etc/apparmor.d/usr.lib.firefox-3.0.10.firefox.sh # Last Modified: Sun May 24 21:41:59 2009 #include <tunables/global> /usr/lib/firefox-3.0.10/firefox.sh { #include <abstractions/base> deny /usr/bin/basename r, deny /usr/lib/firefox-3.0.10/firefox x, /bin/dash rix, /usr/bin/basename ix, }
Si executeu Firefox:
$ firefox Killed /usr/bin/firefox: 39: readlink: Permission denied Killed /usr/bin/firefox: 39: dirname: Permission denied Killed exec: 142: /usr/lib/firefox-3.0.10/: Permission denied
Per [#Desactivar un perfil|desactivar les restriccions]:
$ sudo ln -s /etc/apparmor.d/usr.lib.firefox-3.0.10.firefox.sh /etc/apparmor.d/disable/ $ sudo apparmor_parser -R < /etc/apparmor.d/usr.lib.firefox-3.0.10.firefox.sh Removal succeeded for "/usr/lib/firefox-3.0.10/firefox.sh".
Recursos:
$ sudo rm /etc/apparmor.d/disable/profile.name $ sudo apparmor_parser -r < /etc/apparmor.d/profile.name
Exemple:
$ sudo rm /etc/apparmor.d/disable/bin.ping $ sudo apparmor_parser -r < /etc/apparmor.d/bin.ping
Carpeta:
/var/log/apparmor/
Està buida per defecte?
La opció Z de la comanda ps mostra una columna amb informació de seguretat. Del manual (man ps):
... Z Add a column of security data. Identical to -M. (for SE Linux) ...
$ ping localhost >/dev/null & [2] 26042 $ sudo ps aZ | grep ping unconfined 25907 pts/7 S 0:00 ping localhost unconfined 26042 pts/7 S 0:00 ping localhost unconfined 26044 pts/7 S+ 0:00 grep ping
$ sudo invoke-rc.d apparmor stop $ sudo update-rc.d -f apparmor remove
$ sudo invoke-rc.d apparmor start $ sudo update-rc.d apparmor start 37 S .
$ sudo invoke-rc.d apparmor reload
$ sudo apparmor_parser -r < /etc/apparmor.d/profile.name
Text en cursiva
Serveix per depurar un perfil. No denega res a l'aplicació controlada, només registra els esdeveniments:
$ sudo aa-complain /path/to/bin
Per exemple:
$ sudo aa-complain /usr/bin/firefox
$ sudo aa-enforce /path/to/bin
$ sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ $ sudo apparmor_parser -R < /etc/apparmor.d/profile.name
Exemple:
$ sudo ln -s /etc/apparmor.d/usr.lib.firefox-3.0.10.firefox.sh /etc/apparmor.d/disable/ $ sudo apparmor_parser -R < /etc/apparmor.d/usr.lib.firefox-3.0.10.firefox.sh Removal succeeded for "/usr/lib/firefox-3.0.10/firefox.sh".
$ sudo apparmor_status apparmor module is loaded. 8 profiles are loaded. 8 profiles are in enforce mode. /usr/lib/connman/scripts/dhclient-script /usr/share/gdm/guest-session/Xsession /usr/sbin/tcpdump /usr/lib/cups/backend/cups-pdf /sbin/dhclient3 /usr/sbin/cupsd /sbin/dhclient-script /usr/lib/NetworkManager/nm-dhcp-client.action 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode : /sbin/dhclient3 (3138) /usr/sbin/cupsd (2870) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.