Well SELinux is about least privilege. we tend to use as much unique types as reasonably possible. there is one small correction though for EL5 and my example: el5 uses init_script_type() instead of init_script_file() so: init_script_type(ai_initrc_exec_t) On Thu, 2009-01-29 at 11:35 -0800, Vadym Chepkov wrote: > Thank you so much. > > Why do we need ai_initrc_exec_t though? All scripts in /etc/rc.d/init.d/ have context initrc_exec_t and it seems a proper approach to me. > > Sincerely yours, > Vadym Chepkov > > P.S. To my shame never used IRC in my life :( > > --- On Thu, 1/29/09, Dominick Grift <domg472@xxxxxxxxx> wrote: > > > From: Dominick Grift <domg472@xxxxxxxxx> > > Subject: Re: example of a domain with transition policy > > To: "Vadym Chepkov" <chepkov@xxxxxxxxx> > > Cc: fedora-selinux-list@xxxxxxxxxx > > Date: Thursday, January 29, 2009, 2:20 PM > > Lets assume we have an init script: /etc/rc.d/init.d/ai, a > > executable: /usr/sbin/ai > > > > first we create our file context file: > > > > mkdir ~/ai; cd ~/ai; > > echo "/etc/rc\.d/init\.d/ai -- > > gen_context(system_u:object_r:ai_initrc_exec_t, s0)" > > > ai.fc > > echo "/usr/sbin/ai -- > > gen_context(system_u:object_r:ai_exec_t, s0)" >> > > ai.fc > > > > this will take care of our file contexts. Now lets declare > > our module > > and some types to enforce: > > > > echo "policy_module(ai, 0.0.1)" > ai.te > > echo "type ai_initrc_exec_t;" >> ai.te > > echo "init_script_file(ai_initrc_exec_t)" > > >> ai.te > > echo "type ai_t;" >> ai.te > > echo "type ai_exec_t;" >> ai.te > > echo "init_daemon_domain(ai_t, ai_exec_t)" > > >> ai.te > > > > Now lets compile our module: > > > > make -f /usr/share/selinux/devel/Makefile > > > > Now lets install our module: > > > > sudo semodule -i ai.pp > > > > Now lets restore the file context of our executable file > > and the init > > script. > > > > restorecon -v /etc/rc.d/init.d/ai > > restorecon -v /usr/sbin/ai > > > > Now we have to create actual policy. We do this by testing. > > Since EL5 > > does not support permissive domains, we will have to put > > the system into > > permissive mode: setenforce 0 > > > > now lets start the daemon: > > > > sudo service ai start > > > > after some testing of the daemons functionility we stop the > > daemon: > > > > sudo service ai stop > > > > now we enforce selinux again: setenforce 1 > > > > ..and we check for avc denials and pipe those into > > audit2allow to > > translate raw avc denials to policy language: > > > > ausearch -m avc -ts today | audit2allow -R > > > > then we simply append the output to our ai.te file, > > recompile and > > reinstall. > > > > Thats about it in a nutshell. > > > > Ofcourse this example is over simplified. there are only > > two files owned > > by ai. in real life there are more files that need types > > (we would use > > rpm -ql to find those, and we would inspect the output of > > audit2allow -R > > to identify any file owned by ai that were created (like > > pid files , > > files in /tmp etc etc) > > > > Also audit2allow -R's output is not optimal so we would > > try to find > > optimal interfaces for the policy it may not have > > translated in a > > optimal way. > > > > If you have questions you can also join us on > > #fedora-selinux on > > irc.freenode.org. > > > > happy policy writing! > > > > Dominick > > > > On Thu, 2009-01-29 at 10:52 -0800, Vadym Chepkov wrote: > > > Hi, > > > > > > Could somebody give me a working example of a policy > > module with transition, please. I am trying to create a > > policy for a vendor product I have to use (Asset Insight). > > > The basic idea is to create domains ai_exec_t, ai_t, > > proper transition rules for initrc_exec_t -> initrc_t > > -> ai_exec_t -> ai_t. > > > Then I want to ai_t be unconfined (for the moment) so > > probably make ai_t as an alias of unconfined_t, since there > > is no "permissive domain" in Redhat5 yet, but I > > want to be able to see what needs to be added to .te file to > > make it work. There is no much documentation about writing > > policy in Redhat/Fedora, unfortunately, or maybe I am > > missing some. > > > Thank you. > > > > > > Sincerely yours, > > > Vadym Chepkov > > > > > > -- > > > fedora-selinux-list mailing list > > > fedora-selinux-list@xxxxxxxxxx > > > > > https://www.redhat.com/mailman/listinfo/fedora-selinux-list
Attachment:
signature.asc
Description: This is a digitally signed message part
-- fedora-selinux-list mailing list fedora-selinux-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-selinux-list