SlideShare a Scribd company logo
Jozi LUG - SELinux




Introduction to Security Enhanced Linux
            26th March 2012
              Sponsored by
            LPI South Africa
Topics



●   What is SELinux?
●   Computer Security Models
●   Mandatory Access Control & Discretionary
    Access Control
●   SELinux Policy
●   Object Classes and actions/permissions
Topics


●   Security Context
●   File Security Context
●   Troubleshooting & Tools
●   SELinux Booleans
●   SELinux Managing Ports
●   SELinux Writing Policy
What is SELinux


●   A mechanism for supporting mandatory
    access control (mac),role based access
    control (rbac) & multi-level security (msl/mcs)
●   Implemented as a Linux Security Module(LSM)
●   LSM allows kernel to support different security
    models used by:
       ●   AppArmor,Smack,SELinux
Computer Security Models


●   Three security models possible with SELinux
       ●   MLS/MCS – multilevel security, multi category
            security. Mainly about file access. Every
            subject must have clearance level and also
            every file (not covered) Top Secret, Secret,
            Confidential and Unclassified
       ●   RBAC – role base access control, how users
            transition between roles and domains to which
            roles have rights, roles aggregate permissions
Computer Security Models


       ●   Mandatory Access Control via Type
            Enforcement – First step before MLS/MCS.
            Good for daemons, services
●   This presentations focuses on MAC via TE in
    SELinux. Although other security models can
    be used they are too restrictive for most
    situation there limited TE used. MAC mainly
    useful for daemons and processes not users
Mandatory Access Control Definition


●   Mandatory Access Control (MAC) – security
    policy sets access controls and cannot be
    changed by system users or processes,
●   Discretionary Access Control (DAC) –
    underlying unix permissions can be changed at
    the discretion of the file owner
Mandatory/Discretionary Access
               Control

●   DAC makes system vulnerable, users can
    change permissions and no protection from
    broken software, i.e. process has complete
    control over all resources owned by user,
●   MAC - provides control over interactions of
    software by defined policies and does not allow
    users to do anything that breaks these policies.
    Prevents compromised processes from
    affecting other processes and files
Mandatory Access Control


●   Subject performs actions on an object
●   Subject always a process
●   Object can be file, device,users,
    processes,sockets,x_cursor..
●   Action is a system function call, i.e
    permissions
How is MAC Implemented?


●   How is MAC implemented?
       ●   Security context given to objects and
            processes aka labeling for file system
       ●   A Security context just free format strings “label”
       ●   By policy file which contain rules about what
            domains/type enforcements subject and
            object must have to allow requested action.
            I.e provides meaning to security context
            strings. Policies limit what a daemon can
            access and how
SELinux Policy


●   Rules for how source context of subject
    evaluated against target security context of
    object
●   By default if not defined, then deny action.
    Difficult for general purpose computing. To
    improve use less restrictive policy provided,
SELinux Policy


●   Two policies packages –
        ●   Targeted – doesn't use users & roles, only
             restricts certain services, uses type
             enforcement only. Unaffected subjects and
             objects run in unconfined_t domain
        ●   Strict – deny all by default lots of tweaking
●   We will look at a policy file later
Objects Classes


●   Object classes (categories) – more then 70@
●   Object classes have set of permissions
    (actions)
            –   dir,
            –   socket
            –   tcp_socket
            –   filesystem
            –   node
            –   x_cursor
Object Class Permissions (Actions)


●   Each object class has its list of permissions or
    actions e.g. dir: (see slide on seinfo later)
       ●   getattr/setattr,
       ●   unlink
       ●   execute
       ●   read
       ●   search
       ●   rmdir
Security Context


●   Security Context or labels set of security
    attributes associated with a subject or an object
●   <user>:<role>:<type>
●   e.g system_u:object_r:httpd_exec_t
       ●   system_u – standard for system daemon
       ●   object_r standard for system objects such as
            devices and files
       ●   Targets policy – unrestricted_u, unrestricted_r
Security Context


●   User – individual or process, SELinux
    maintains own list of users. For subjects the
    user is the user the process is run as, for
    objects its the owner of the object,
●   Role – similar to group, but user can only have
    1 role at a time, can switch roles if authorised
    to do so
●   Type/Domain -Type used for files, domain
    used for processes. Manages access control
Security Context


●   Standard command come with add -Z option to
    see security context
       ●   ls -Z
       ●   ps -Z
       ●   netstat -Z
File Security Context


●   Most common SELinux problem – file labels
        ●   restorecon – restores defined context for a file
        ●   chcon -t $tye ${file|dir} name – temporary
        ●   semanage fcontext -a -t $type ${file|dir} name
●   /etc/selinux/targeted/contexts/files/files_contexts
Troubleshooting & Tools



●   /var/log/audit/audit.log
●   Create policy files from audit2allow
●   avc = access vector cache
SELinux Tools


●   setroubleshooter – can help with friendlier
    error messages and suggestions of how to fix
    the problem
●   “cat /var/log/audit/audit.log | sedispatch” → will
    send the error messages to setroubleshooter
    for lookup & formatting
SELinux Tools


●   Seinfo
       ●   List all classes “seinfo -c”
       ●   List all permissions for a class “seinfo -cdir -x”
                for dir premissions/actions
       ●   List all types with permissions “seinfo -txx -x”
       ●   List all users/roles with permissions “seinfo -{u|
             r}xx -x”
       ●   List all port context “seinfo --portcon”
SELinux - Booleans


●   Booleans
       ●   getsebool -a
       ●   semanage boolean -l
       ●   setsebool xxx on| off
       ●   setsebool -P xxx on|off
Manage Ports


●   semanage port -l
●   Add a port
       ●   semanage port -at [-p proto] port |port-range
●   Delete a port
       ●   semanage port -dt [-p proto] port|port-range
Writing SELinux Policy


●   The policy is compiled in user space
●   The m4 macro preprocessor is used prior to
    compilation (optional)
●   The initial policy binary is loaded by init at boot
●   Policy modules (binaries) can be loaded and
    unloaded at any time
Writing SELinux Policy


●   “cat /var/log/audit/audit.log | audit2allow -m
    mymod > mymod.te
●   checkmodule -M -m -o mymod.mod mymod.te
●   semodule package -o mymod.pp -m
    mymod.mod
●   semodule -i mymod.p
Questions?


●   Visit us at
              –   www.JumpingBean.co.za
              –   www.LinuxCertification.co.za

More Related Content

PDF
Overview of NSA Security Enhanced Linux - FOSS.IN/2005
PPTX
Operations Security
PDF
Introduction to Embedded Systems
PPTX
Google Glass in a Programmer's View
PDF
Secrets of a linux ninja Software Freedom Day 2013 Johannesburg, South Africa
PPTX
Google Glass What Is it
PDF
IPv6 How To Set Up a Linux IPv6 Lan
Overview of NSA Security Enhanced Linux - FOSS.IN/2005
Operations Security
Introduction to Embedded Systems
Google Glass in a Programmer's View
Secrets of a linux ninja Software Freedom Day 2013 Johannesburg, South Africa
Google Glass What Is it
IPv6 How To Set Up a Linux IPv6 Lan

Similar to SELinux Johannesburg Linux User Group (JoziJUg) (20)

PDF
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
PPTX
SE Linux
PPTX
SELinux_@gnu_group_meetup
ODP
chroot and SELinux
PPTX
Security Enhanced Linux Overview
PDF
SELinux Kernel Internals and Architecture - FOSS.IN/2005
PDF
The State of Security Enhanced Linux - FOSS.IN/2007
PDF
Linux Kernel Security Overview - KCA 2009
PPT
Introduction To SELinux
PDF
SELinux Project Overview - Linux Foundation Japan Symposium 2008
ODP
SELinux for Everyday Users
PDF
Your First Guide to "secure Linux"
PDF
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
ODP
SELinux Basic Usage
PPTX
Linux security
PPTX
PDF
MR201406 A Re-introduction to SELinux
PDF
SELinux workshop
PDF
Linux Security Crash Course
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
SE Linux
SELinux_@gnu_group_meetup
chroot and SELinux
Security Enhanced Linux Overview
SELinux Kernel Internals and Architecture - FOSS.IN/2005
The State of Security Enhanced Linux - FOSS.IN/2007
Linux Kernel Security Overview - KCA 2009
Introduction To SELinux
SELinux Project Overview - Linux Foundation Japan Symposium 2008
SELinux for Everyday Users
Your First Guide to "secure Linux"
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
SELinux Basic Usage
Linux security
MR201406 A Re-introduction to SELinux
SELinux workshop
Linux Security Crash Course
Ad

More from Jumping Bean (13)

PDF
DevOpsDaysCPT Ansible Infrastrucutre as Code 2017
PDF
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
PDF
React - The JavaScript Library for User Interfaces
PDF
HTML 5 & The Modern Web
PDF
Building games-with-libgdx
PDF
Linux Containers & Docker
PDF
Introduction to Web Sockets
PDF
M-Learning application development with open source
PDF
Introduction to AngularJS
PDF
Introduction to Android Development
PDF
Glassfish An Introduction
PDF
Java logging
PDF
IPv6 - Jozi Linux User Group Presentation
DevOpsDaysCPT Ansible Infrastrucutre as Code 2017
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
React - The JavaScript Library for User Interfaces
HTML 5 & The Modern Web
Building games-with-libgdx
Linux Containers & Docker
Introduction to Web Sockets
M-Learning application development with open source
Introduction to AngularJS
Introduction to Android Development
Glassfish An Introduction
Java logging
IPv6 - Jozi Linux User Group Presentation
Ad

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
Cloud computing and distributed systems.
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
Teaching material agriculture food technology
PDF
cuic standard and advanced reporting.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Cloud computing and distributed systems.
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
The Rise and Fall of 3GPP – Time for a Sabbatical?
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Advanced methodologies resolving dimensionality complications for autism neur...
Unlocking AI with Model Context Protocol (MCP)
Teaching material agriculture food technology
cuic standard and advanced reporting.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Dropbox Q2 2025 Financial Results & Investor Presentation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectral efficient network and resource selection model in 5G networks
Diabetes mellitus diagnosis method based random forest with bat algorithm
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
Understanding_Digital_Forensics_Presentation.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
20250228 LYD VKU AI Blended-Learning.pptx

SELinux Johannesburg Linux User Group (JoziJUg)

  • 1. Jozi LUG - SELinux Introduction to Security Enhanced Linux 26th March 2012 Sponsored by LPI South Africa
  • 2. Topics ● What is SELinux? ● Computer Security Models ● Mandatory Access Control & Discretionary Access Control ● SELinux Policy ● Object Classes and actions/permissions
  • 3. Topics ● Security Context ● File Security Context ● Troubleshooting & Tools ● SELinux Booleans ● SELinux Managing Ports ● SELinux Writing Policy
  • 4. What is SELinux ● A mechanism for supporting mandatory access control (mac),role based access control (rbac) & multi-level security (msl/mcs) ● Implemented as a Linux Security Module(LSM) ● LSM allows kernel to support different security models used by: ● AppArmor,Smack,SELinux
  • 5. Computer Security Models ● Three security models possible with SELinux ● MLS/MCS – multilevel security, multi category security. Mainly about file access. Every subject must have clearance level and also every file (not covered) Top Secret, Secret, Confidential and Unclassified ● RBAC – role base access control, how users transition between roles and domains to which roles have rights, roles aggregate permissions
  • 6. Computer Security Models ● Mandatory Access Control via Type Enforcement – First step before MLS/MCS. Good for daemons, services ● This presentations focuses on MAC via TE in SELinux. Although other security models can be used they are too restrictive for most situation there limited TE used. MAC mainly useful for daemons and processes not users
  • 7. Mandatory Access Control Definition ● Mandatory Access Control (MAC) – security policy sets access controls and cannot be changed by system users or processes, ● Discretionary Access Control (DAC) – underlying unix permissions can be changed at the discretion of the file owner
  • 8. Mandatory/Discretionary Access Control ● DAC makes system vulnerable, users can change permissions and no protection from broken software, i.e. process has complete control over all resources owned by user, ● MAC - provides control over interactions of software by defined policies and does not allow users to do anything that breaks these policies. Prevents compromised processes from affecting other processes and files
  • 9. Mandatory Access Control ● Subject performs actions on an object ● Subject always a process ● Object can be file, device,users, processes,sockets,x_cursor.. ● Action is a system function call, i.e permissions
  • 10. How is MAC Implemented? ● How is MAC implemented? ● Security context given to objects and processes aka labeling for file system ● A Security context just free format strings “label” ● By policy file which contain rules about what domains/type enforcements subject and object must have to allow requested action. I.e provides meaning to security context strings. Policies limit what a daemon can access and how
  • 11. SELinux Policy ● Rules for how source context of subject evaluated against target security context of object ● By default if not defined, then deny action. Difficult for general purpose computing. To improve use less restrictive policy provided,
  • 12. SELinux Policy ● Two policies packages – ● Targeted – doesn't use users & roles, only restricts certain services, uses type enforcement only. Unaffected subjects and objects run in unconfined_t domain ● Strict – deny all by default lots of tweaking ● We will look at a policy file later
  • 13. Objects Classes ● Object classes (categories) – more then 70@ ● Object classes have set of permissions (actions) – dir, – socket – tcp_socket – filesystem – node – x_cursor
  • 14. Object Class Permissions (Actions) ● Each object class has its list of permissions or actions e.g. dir: (see slide on seinfo later) ● getattr/setattr, ● unlink ● execute ● read ● search ● rmdir
  • 15. Security Context ● Security Context or labels set of security attributes associated with a subject or an object ● <user>:<role>:<type> ● e.g system_u:object_r:httpd_exec_t ● system_u – standard for system daemon ● object_r standard for system objects such as devices and files ● Targets policy – unrestricted_u, unrestricted_r
  • 16. Security Context ● User – individual or process, SELinux maintains own list of users. For subjects the user is the user the process is run as, for objects its the owner of the object, ● Role – similar to group, but user can only have 1 role at a time, can switch roles if authorised to do so ● Type/Domain -Type used for files, domain used for processes. Manages access control
  • 17. Security Context ● Standard command come with add -Z option to see security context ● ls -Z ● ps -Z ● netstat -Z
  • 18. File Security Context ● Most common SELinux problem – file labels ● restorecon – restores defined context for a file ● chcon -t $tye ${file|dir} name – temporary ● semanage fcontext -a -t $type ${file|dir} name ● /etc/selinux/targeted/contexts/files/files_contexts
  • 19. Troubleshooting & Tools ● /var/log/audit/audit.log ● Create policy files from audit2allow ● avc = access vector cache
  • 20. SELinux Tools ● setroubleshooter – can help with friendlier error messages and suggestions of how to fix the problem ● “cat /var/log/audit/audit.log | sedispatch” → will send the error messages to setroubleshooter for lookup & formatting
  • 21. SELinux Tools ● Seinfo ● List all classes “seinfo -c” ● List all permissions for a class “seinfo -cdir -x” for dir premissions/actions ● List all types with permissions “seinfo -txx -x” ● List all users/roles with permissions “seinfo -{u| r}xx -x” ● List all port context “seinfo --portcon”
  • 22. SELinux - Booleans ● Booleans ● getsebool -a ● semanage boolean -l ● setsebool xxx on| off ● setsebool -P xxx on|off
  • 23. Manage Ports ● semanage port -l ● Add a port ● semanage port -at [-p proto] port |port-range ● Delete a port ● semanage port -dt [-p proto] port|port-range
  • 24. Writing SELinux Policy ● The policy is compiled in user space ● The m4 macro preprocessor is used prior to compilation (optional) ● The initial policy binary is loaded by init at boot ● Policy modules (binaries) can be loaded and unloaded at any time
  • 25. Writing SELinux Policy ● “cat /var/log/audit/audit.log | audit2allow -m mymod > mymod.te ● checkmodule -M -m -o mymod.mod mymod.te ● semodule package -o mymod.pp -m mymod.mod ● semodule -i mymod.p
  • 26. Questions? ● Visit us at – www.JumpingBean.co.za – www.LinuxCertification.co.za