No edit summary |
No edit summary |
||
Line 16: | Line 16: | ||
* confined administrator - able to manage only a predefined set of services | * confined administrator - able to manage only a predefined set of services | ||
The purpose of test day is to test these SELinux users | The purpose of test day is to test these SELinux users in usual/specific use cases. | ||
== What's Needed to Be Able to Test == | == What's Needed to Be Able to Test == | ||
Line 53: | Line 53: | ||
The main goal is to test whether chosen confined user is able to do things which are allowed considering his/her SELinux role. And whether chosen confined user is not able to do things which are not allowed considering his/her role. For example if you log in as <code>xguest_u</code> and try to run <code>ping</code> or <code>sudo</code> in your favourite terminal you won't be able to run it. But if you won't be able to run '''Firefox''' then probably this is a bug. | The main goal is to test whether chosen confined user is able to do things which are allowed considering his/her SELinux role. And whether chosen confined user is not able to do things which are not allowed considering his/her role. For example if you log in as <code>xguest_u</code> and try to run <code>ping</code> or <code>sudo</code> in your favourite terminal you won't be able to run it. But if you won't be able to run '''Firefox''' then probably this is a bug. | ||
If you usually use another web browser than '''Firefox''', please continue to do so during the test day. Our intend is to test at least one program from each of the following groups: | |||
* mail clients (<code>mutt</code>, <code>alpine</code> etc.) | |||
* editors (<code>vim</code>, <code>emacs<code>, <code>nano</code> etc.) | |||
* networking tools (<code>ping</code>, <code>traceroute</code> etc.) | |||
* FTP clients | |||
* web browsers | |||
* audio / video players | |||
* samba mounting / tools | |||
* NFS mounting / tools | |||
* Java apps | |||
* office apps | |||
* printing / scanning tools | |||
* photo / camera manipulation | |||
* CD/DVD reading / writing | |||
* IM clients | |||
* flash players | |||
Issues found during the test day will help us to improve SELinux policy in future Fedora and RHEL releases. | |||
== How to Report Problems == | == How to Report Problems == |
Revision as of 08:52, 19 October 2009
Confined Users Test Day
- Devel contact: dwalsh, mgrepl
- QE contact: mmalik, ebenes
- IRC channel: #fedora-test-day on irc.freenode.net
What to Test?
Today's Fedora Test Day will focus on SELinux Confined Users - users which are assigned to a SELinux role and where the SELinux policy controls what the user can do/access on the system. Current confined user types with their purpose of use are:
guest_u
– Terminal login, nosetuid, nonetwork, noxwindows, noexec in home directory.xguest_u
– X Windows login and terminal login, nosetuid, nonetwork, noexec in home directory.user_u
– X Windows login and terminal login, nosetuid, noexec in home directory.staff_u
– X Windows login and terminal login, nosetuid exceptsudo
.- kiosk user - X Windows login and terminal login, nosetuid, nonetwork, noexec in home directory. NO password required. Home directory and
/tmp
get destroyed on logout. - confined administrator - able to manage only a predefined set of services
The purpose of test day is to test these SELinux users in usual/specific use cases.
What's Needed to Be Able to Test
You will need a fully updated Fedora 12 / Rawhide machine. Check if any of your repository files contains following lines or create a new repository file located in /etc/yum.repos.d/
with following content:
[rawhide] name=Fedora - Rawhide - Developmental packages for the next Fedora release failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/development/$basearch/os/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=$basearch enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-test-$basearch file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
You will need following packages installed on the machine. Please run yum install PACKAGE
as root to install them and check that their versions match:
selinux-policy-targeted-3.6.32-24.fc12
policycoreutils-gui-2.0.74-4.fc12
setroubleshoot-2.2.37-1.fc12
audit-2.0.1-1.fc12
xguest-1.0.7-7.fc12
As root run following commands to be able to record and see possible AVCs:
service auditd start service messagebus start service restorecond start setenforce 1 tail -f /var/log/audit/audit.log
How to Test
The main goal is to test whether chosen confined user is able to do things which are allowed considering his/her SELinux role. And whether chosen confined user is not able to do things which are not allowed considering his/her role. For example if you log in as xguest_u
and try to run ping
or sudo
in your favourite terminal you won't be able to run it. But if you won't be able to run Firefox then probably this is a bug.
If you usually use another web browser than Firefox, please continue to do so during the test day. Our intend is to test at least one program from each of the following groups:
- mail clients (
mutt
,alpine
etc.) - editors (
vim
,emacs
,
nano
etc.) - networking tools (
ping
,traceroute
etc.) - FTP clients
- web browsers
- audio / video players
- samba mounting / tools
- NFS mounting / tools
- Java apps
- office apps
- printing / scanning tools
- photo / camera manipulation
- CD/DVD reading / writing
- IM clients
- flash players
Issues found during the test day will help us to improve SELinux policy in future Fedora and RHEL releases.
How to Report Problems
Following steps in problem reporting are encouraged:
- If you encounter problems (e.g. appl. A did not start, appl. B failed to do what you wanted, appl. C works only partially) switch to permissive mode (
setenforce 0
) and repeat your action. Do not forget to switch back to enforcing mode (setenforce 1
) before next testing. Root shell is needed.
- Look at the end of
/var/log/audit/audit.log
and check if new AVC messages appeared. These messages should start with type=AVC
. The tail
command which is mentioned above provides this information. Root shell is needed.
- Paste the AVC message to IRC channel with a short description what you did and what happened or did not happen.
- Communicate with others on IRC channel to find out if they encountered the same problem.
- Look at the end of
/var/log/messages
and search for messages containing sealert
. Run sealert
with parameters as advised. Root shell is needed.
- File a bug in Red Hat Bugzilla (Classification: Fedora, Product: Fedora, Version: rawhide, Component: selinux-policy). Do not forget to supply the description of actions you did, the AVC message and the full output of
sealert
.
Test Cases
Here you can find a few test cases. Please run as many of them as possible. Below each test case you can see a table, where you should write your results. Please add a line with your username and list of tests you ran/skipped into the table. The table could look this way:
User
Passed
Failed
Skipped
References
User:mmalik
G.1 G.2
B.1 B.2 B.3
G.3 G.4
guest_u
As root set up a server only machine, with Apache service (yum install httpd
). Configure Apache in such a way that user home directories are accessible. Make sure Apache service is running (service httpd start
). Add an user which can log in as guest_u
(useradd -Z guest_u USERNAME
). Create a directory named /secrets
. Install MySQL (yum install mysql-server
). Make sure MySQL service is running (service mysqld start
) and the database is world readable.
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
scp
files to home directory and public_html
directory.
- Copy files to
public_html
directory.
- Verify that the content is viewable via Apache.
- Bad Test - try to do evil
- Try to
ping
off the machine.
- Try any network protocol, try to get off the machine (ssh, sendmail, rsh, telnet etc.)
- Copy an executable into home directory and try to execute it.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
User
Passed
Failed
Skipped
References
xguest_u
As root set up a client machine, with network access. Add an user which can log in as xguest_u
(useradd -Z xguest_u USERNAME
). Create a directory named /secrets
. Install MySQL (yum install mysql-server
). Make sure MySQL service is running (service mysqld start
) and the database is world readable.
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
- Verify Firefox works and can access the network. Try to load several sites like http://www.ford.com to verify that flash works.
- Plug in USB disk and make sure
xguest_u
user can read/write the disk.
- Plug in USB camera and make sure it works.
- Plug in other USB devices.
- Verify Network Manager works.
- Verify printing from Firefox and from the desktop works.
- Bad Test - try to do evil
- Try to
ping
off the machine.
- Try any network protocol, try to get off the machine (ssh, sendmail, rsh, telnet etc.)
- Copy an executable into home directory and try to execute it.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
User
Passed
Failed
Skipped
References
user_u
As root set up a client machine, with network access. Add an user which can log in as user_u
(useradd -Z user_u USERNAME
). Create a directory named /secrets
. Install MySQL (yum install mysql-server
). Make sure MySQL service is running (service mysqld start
) and the database is world readable.
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory
- Verify Firefox works and can access the network. Try to load several sites like http://www.ford.com to verify flash works.
- Verify other network protocols work (aol, ssh, mail etc.)
- Plug in USB disk and make sure
user_u
user can read/write disk.
- Plug in USB camera and make sure it works.
- Plug in other USB devices.
- Verify Network Manager works.
- Verify printing from Firefox and from the desktop works.
- Bad Test - try to do evil
- Try to
ping
off the machine.
- Try to break into the root account via
su
, sudo
.
- Copy an executable into home directory and try to execute it.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
User
Passed
Failed
Skipped
References
staff_u
As root set up a client machine, with network access. Add an user which can log in as staff_u
(useradd -Z staff_u USERNAME
). Create a directory named /secrets
. Install MySQL (yum install mysql-server
). Make sure MySQL service is running (service mysqld start
) and the database is world readable.
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
- Verify Firefox works and can access the network. Try to load several sites like http://www.ford.com to verify flash works.
- Verify other network protocols work (aol, ssh, mail etc.)
- Plug in USB disk and make sure
staff_u
user can read/write disk.
- Plug in USB camera and make sure it works.
- Plug in other USB devices.
- Verify Network Manager works.
- Verify printing from Firefox and from the desktop works.
- Try to
ping
off the machine.
- Copy an executable into home directory and try to execute it.
- Set up
sudo
and SELinux to allow staff_t
to become unconfined_t
via sudo
.
- Bad Test - try to do evil
- Try to break into the root account via
sudo
.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
User
Passed
Failed
Skipped
References
Kiosk user
As root set up a client machine, with network access. Make sure xguest
package is installed (yum install xguest
).
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
- Verify Firefox works and can access the network. Try to load several sites like http://www.ford.com to verify flash works.
- Plug in USB disk and make sure the kiosk user can read/write the disk.
- Plug in USB camera and make sure it works.
- Plug in other USB devices.
- Verify that Network Manager works.
- Verify printing from Firefox and from the desktop works.
- Logout and login to verify that home directory disappeared.
- Verify that password is not required.
- Bad Test - try to do evil
- Try to
ping
off the machine.
- Try any network protocol, try to get off the machine (ssh, sendmail, telnet, rsh etc.)
- Copy an executable into home directory and try to execute it.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
- Verify that you can not
ssh
into the machine as xguest_u
.
User
Passed
Failed
Skipped
References
Confined administrator
As root set up a client machine, with network access. Build policy for web_db_admin_t
. Add an user which can log in as staff_u
(useradd -Z staff_u USERNAME
). Set up a transition from staff_t
to web_db_admin_t
. Set up sudo
to make this happen automatically. Create a directory named /secrets
and install MySQL (yum install mysql-server
). Make sure MySQL is running (service mysqld start
) and the database is world readable. Install Apache (yum install httpd
) and make sure the service is running (service httpd start
).
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
- Verify Firefox works and can access the network. Try to load several sites like http://www.ford.com to verify flash works.
- Verify other network protocols work (aol, ssh, mail etc.)
- Plug in USB disk and make sure the confined administrator can read/write the disk.
- Plug in USB camera and make sure it works.
- Plug in other USB devices.
- Verify Network Manager works.
- Verify printing from Firefox and from the desktop works.
- Try to
ping
off the machine.
- Copy an executable into home directory and try to execute it.
- Set up
sudo
and SELinux to allow staff_t
to become unconfined_t
via sudo
.
- Execute
sudo sh
and make sure you end up as web_db_adm_t
.
- Try to edit
/var/www/html
directory and some of the MySQL directories.
- Try to stop and start MySQL and Apache (
service NAME start
and service NAME stop
).
- Bad Test - try to do evil
- Try to break into the root account via
su
.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
- As
web_db_adm_t
try to add an user, modify files in /usr/share
.
User
Passed
Failed
Skipped
References
Guest user that can send an email
As root set up a server machine, with network access. Build policy for sendmail_user_t
. Add an user which can log in as sendmail_user_u
(useradd -Z sendmail_user_u USERNAME
).
Log in to the machine and try the following:
- Good Test - try to behave correctly
- Edit files in home directory.
- Verify you can send a mail as this user.
- Bad Test - try to do evil
- Try to break into the root account via
sudo
.
- Try to read a file in the
/secrets
directory.
- Try to read the MySQL database (
mysqlshow
).
User
Passed
Failed
Skipped
References
Links
- http://docs.fedoraproject.org/selinux-user-guide/f10/en-US/sect-Security-Enhanced_Linux-Targeted_Policy-Confined_and_Unconfined_Users.html
- http://magazine.redhat.com/2008/07/02/writing-policy-for-confined-selinux-users/
- http://www.linuxtopia.org/online_books/fedora_selinux_guides/fedora_10_selinux_user_guide/fedora_10_selinux_sect-Security-Enhanced_Linux-Targeted_Policy-Confined_and_Unconfined_Users.html
- http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-one-confined.html