ipsec_selinux(8)
πΈ NAME πΈ
okay so bestie, ipsec_selinux(8) is literally the SELinux policy page for the ipsec processes β aka Security Enhanced Linux policy for ipsec. iconic. π
π DESCRIPTION π
SELinux keeps the ipsec processes secure with flexible mandatory access control. no cap. β¨
The ipsec processes execute with the ipsec_t SELinux type. You can check if you have these processes running by executing the ps command with the -Z qualifier.
For example:
ps -eZ | grep ipsec_t
β¨ ENTRYPOINTS β¨
The ipsec_t SELinux type can be entered via the ipsec_exec_t file type.
The default entrypoint paths for the ipsec_t domain are the following:
/usr/libexec/strongimcv/.*
/usr/libexec/strongswan/.*
/usr/lib/ipsec/spi
/usr/lib/ipsec/pluto
/usr/lib/ipsec/eroute
/usr/libexec/ipsec/spi
/usr/bin/charon-systemd
/usr/libexec/ipsec/pluto
/usr/lib/ipsec/klipsdebug
/usr/libexec/ipsec/charon
/usr/libexec/ipsec/eroute
/usr/libexec/ipsec/addconn
/usr/libexec/ipsec/charon-nm
/usr/libexec/ipsec/klipsdebug
π¦ PROCESS TYPES π¦
SELinux defines process types (domains) for each process running on the system.
You can see the context of a process using the -Z option to ps.
Policy governs the access confined processes have to files. SELinux ipsec policy is very flexible allowing users to setup their ipsec processes in as secure a method as possible.
The following process types are defined for ipsec:
ipsec_t, ipsec_mgmt_t
Note:semanage permissive -a ipsec_tcan be used to make the process typeipsec_tpermissive. SELinux does not deny access to permissive process types, but the AVC (SELinux denials) messages are still generated. π«Ά
π BOOLEANS π
SELinux policy is customizable based on least access required. ipsec policy is extremely flexible and has several booleans that allow you to manipulate the policy and run ipsec with the tightest access possible.
daemons_dontaudit_schedulingβ if you want to dontaudit all daemons scheduling requests (setsched,sys_nice), you must turn this on. Enabled by default.setsebool -P daemons_dontaudit_scheduling 1fips_modeβ if you want to allow all domains to execute infips_mode, you must turn this on. Enabled by default.setsebool -P fips_mode 1kerberos_enabledβ if you want to allow confined applications to run with kerberos, you must turn this on. Enabled by default.setsebool -P kerberos_enabled 1nis_enabledβ if you want to allow system to run with NIS, you must turn this on. Disabled by default.setsebool -P nis_enabled 1use_ecryptfs_home_dirsβ if you want to support ecryptfs home directories, you must turn this on. Disabled by default.setsebool -P use_ecryptfs_home_dirs 1
π PORT TYPES π
SELinux defines port types to represent TCP and UDP ports.
You can see the types associated with a port by using the following command:
semanage port -l
Policy governs the access confined processes have to these ports. SELinux ipsec policy is very flexible allowing users to setup their ipsec processes in as secure a method as possible.
The following port types are defined for ipsec:
ipsecnat_port_t
Default Defined Ports:
tcp 4500
udp 4500
π MANAGED FILES π
The SELinux process type ipsec_t can manage files labeled with the following file types. The paths listed are the default paths for these file types. Note the processes UID still need to have DAC permissions.
cluster_conf_t
/etc/cluster(/.*)?
cluster_var_lib_t
/var/lib/pcsd(/.*)?
/var/lib/cluster(/.*)?
/var/lib/openais(/.*)?
/var/lib/pengine(/.*)?
/var/lib/corosync(/.*)?
/usr/lib/heartbeat(/.*)?
/var/lib/heartbeat(/.*)?
/var/lib/pacemaker(/.*)?
cluster_var_run_t
/run/crm(/.*)?
/run/cman_.*
/run/rsctmp(/.*)?
/run/aisexec.*
/run/heartbeat(/.*)?
/run/pcsd-ruby.socket
/run/corosync-qnetd(/.*)?
/run/corosync-qdevice(/.*)?
/run/pcsd.socket
/run/corosync.pid
/run/cpglockd.pid
/run/rgmanager.pid
/run/cluster/rgmanager.sk
faillog_t
/var/log/btmp.*
/run/faillock(/.*)?
/var/log/faillog.*
/var/log/tallylog.*
ipsec_conf_file_t
/etc/racoon(/.*)?
/etc/strongswan.conf
/etc/strongimcv(/.*)?
/etc/strongswan(/.*)?
/etc/strongswan.d(/.*)?
/etc/ipsec.conf
/etc/strongswan/ipsec.conf
ipsec_key_file_t
/etc/ipsec.d(/.*)?
/etc/racoon/certs(/.*)?
/etc/ipsec.secrets.*
/var/lib/ipsec/nss(/.*)?
/etc/strongswan/ipsec.d(/.*)?
/etc/strongswan/swanctl/rsa(/.*)?
/etc/strongswan/swanctl/pkcs.*
/etc/strongswan/swanctl/x509.*
/etc/strongswan/ipsec.secrets.*
/etc/strongswan/swanctl/ecdsa(/.*)?
/etc/strongswan/swanctl/bliss/(/.*)?
/etc/strongswan/swanctl/pubkey(/.*)?
/etc/strongswan/swanctl/private(/.*)?
/etc/racoon/psk.txt
ipsec_log_t
/var/log/pluto.log.*
ipsec_tmp_t
(no paths listed here)
ipsec_var_run_t
/run/pluto(/.*)?
/run/charon.*
/var/racoon(/.*)?
/run/strongswan(/.*)?
/run/racoon.pid
/run/charon.ctl
/run/charon.dck
/run/charon.vici
krb5_host_rcache_t
/var/tmp/krb5_0.rcache2
/var/cache/krb5rcache(/.*)?
/var/tmp/nfs_0
/var/tmp/DNS_25
/var/tmp/host_0
/var/tmp/imap_0
/var/tmp/HTTP_23
/var/tmp/HTTP_48
/var/tmp/ldap_55
/var/tmp/ldap_487
/var/tmp/ldapmap1_0
lastlog_t
/var/log/lastlog.*
/var/lib/lastlog(/.*)?
named_cache_t
/var/lib/softhsm(/.*)?
/var/lib/unbound(/.*)?
/var/lib/named/data(/.*)?
/var/lib/named/slaves(/.*)?
/var/lib/named/dynamic(/.*)?
/var/lib/named/chroot/var/tmp(/.*)?
/var/lib/named/chroot/var/named/data(/.*)?
/var/lib/named/chroot/var/named/slaves(/.*)?
/var/lib/named/chroot/var/named/dynamic(/.*)?
pkcs_slotd_lock_t
/run/lock/opencryptoki(/.*)?
pkcs_slotd_tmpfs_t
/dev/shm/var.lib.opencryptoki.*
pkcs_slotd_var_lib_t
/var/lib/opencryptoki(/.*)?
root_t
/sysroot/.aleph-version.json
/sysroot/ostree/deploy/.*-atomic/deploy(/.*)?
/
/initrd
/var/lib/ntp
security_t
/selinux
wtmpdb_journal_t
/var/lib/wtmpdb/wtmp.db-journal
π FILE CONTEXTS π
Okay bestie, real talk: SELinux is not out here vibing on β¨aestheticβ¨ alone. It literally needs every file to carry an extended attribute that tells it what type of file it is. No label, no entry β simple as that.
Wanna peek at what context a file already has? Just flex the -Z option on ls π
ls -Z
Policy is the thing that governs what confined processes are allowed to do with these files. And good news: the SELinux ipsec policy is super flexible β it lets you set up your ipsec processes in as secure a way as possible. Iconic behavior, honestly π«Ά
πΈ STANDARD FILE CONTEXT πΈ
SELinux defines the file context types for ipsec, and if you ever want to stash files with these types in some other path (main character energy: your own directory), you've gotta run the semanage command to specify the alternate labeling, then use restorecon to actually slap the labels onto disk. Like so:
semanage fcontext -a -t ipsec_exec_t '/srv/ipsec/content(/.*)?'
restorecon -R -v /srv/myipsec_content
Heads up: SELinux often uses regular expressions to specify labels that match multiple files. That's the whole /.* situation you see below β not just being extra π
So here's the full roster of file types defined for ipsec:
ipsec_conf_file_t
- Set files with the
ipsec_conf_file_ttype if you want to treat those files asipsecconf content.
Paths:
/etc/racoon(/.*)?, /etc/strongswan.conf, /etc/strongimcv(/.*)?,
/etc/strongswan(/.*)?, /etc/strongswan.d(/.*)?, /etc/ipsec.conf,
/etc/strongswan/ipsec.conf
ipsec_exec_t
- Set files with the
ipsec_exec_ttype if you want to transition an executable to theipsec_tdomain.
Paths:
/usr/libexec/strongimcv/.*, /usr/libexec/strongswan/.*,
/usr/lib/ipsec/spi, /usr/lib/ipsec/pluto, /usr/lib/ipsec/eroute,
/usr/libexec/ipsec/spi, /usr/bin/charon-systemd,
/usr/libexec/ipsec/pluto, /usr/lib/ipsec/klipsdebug,
/usr/libexec/ipsec/charon, /usr/libexec/ipsec/eroute,
/usr/libexec/ipsec/addconn, /usr/libexec/ipsec/charon-nm,
/usr/libexec/ipsec/klipsdebug
ipsec_initrc_exec_t
- Set files with the
ipsec_initrc_exec_ttype if you want to transition an executable to theipsec_initrc_tdomain.
Paths:
/etc/rc.d/init.d/ipsec, /etc/rc.d/init.d/racoon,
/etc/rc.d/init.d/strongswan
ipsec_key_file_t
- Set files with the
ipsec_key_file_ttype if you want to treat those files asipseckey content.
Paths:
/etc/ipsec.d(/.*)?, /etc/racoon/certs(/.*)?, /etc/ipsec.secrets.*,
/var/lib/ipsec/nss(/.*)?, /etc/strongswan/ipsec.d(/.*)?,
/etc/strongswan/swanctl/rsa(/.*)?, /etc/strongswan/swanctl/pkcs.*,
/etc/strongswan/swanctl/x509.*, /etc/strongswan/ipsec.secrets.*,
/etc/strongswan/swanctl/ecdsa(/.*)?,
/etc/strongswan/swanctl/bliss/(/.*)?,
/etc/strongswan/swanctl/pubkey(/.*)?,
/etc/strongswan/swanctl/private(/.*)?, /etc/racoon/psk.txt
ipsec_log_t
- Set files with the
ipsec_log_ttype if you want to treat the data asipseclog data β usually stored under the/var/logdirectory.
ipsec_mgmt_devpts_t
- Set files with the
ipsec_mgmt_devpts_ttype if you want to treat those files asipsecmgmt devpts data.
ipsec_mgmt_exec_t
- Set files with the
ipsec_mgmt_exec_ttype if you want to transition an executable to theipsec_mgmt_tdomain.
Paths:
/usr/bin/ipsec, /usr/bin/swanctl, /usr/bin/strongimcv,
/usr/bin/strongswan, /usr/lib/ipsec/_plutorun,
/usr/lib/ipsec/_plutoload, /usr/libexec/ipsec/_plutorun,
/usr/libexec/ipsec/_plutoload, /usr/libexec/nm-openswan-service,
/usr/libexec/nm-libreswan-service
ipsec_mgmt_lock_t
- Set files with the
ipsec_mgmt_lock_ttype if you want to treat those files asipsecmgmt lock data, stored under the/var/lockdirectory.
Paths:
/run/lock/subsys/ipsec, /run/lock/subsys/strongswan
ipsec_mgmt_unit_file_t
- Set files with the
ipsec_mgmt_unit_file_ttype if you want to treat those files asipsecmgmt unit content.
Paths:
/usr/lib/systemd/system/ipsec.*,
/usr/lib/systemd/system/strongimcv.*,
/usr/lib/systemd/system/strongswan.*,
/usr/lib/systemd/system/strongswan-swanctl.*
ipsec_mgmt_var_run_t
- Set files with the
ipsec_mgmt_var_run_ttype if you want to store theipsecmgmt files under the/runor/var/rundirectory.
Paths:
/run/pluto/ipsec.info, /run/pluto/ipsec_setup.pid
ipsec_tmp_t
- Set files with the
ipsec_tmp_ttype if you want to storeipsectemporary files in the/tmpdirectories.
ipsec_var_run_t
- Set files with the
ipsec_var_run_ttype if you want to store theipsecfiles under the/runor/var/rundirectory.
Paths:
/run/pluto(/.*)?, /run/charon.*, /var/racoon(/.*)?,
/run/strongswan(/.*)?, /run/racoon.pid, /run/charon.ctl,
/run/charon.dck, /run/charon.vici
Bestie, quick but important note: file context can be temporarily modified with thechconcommand. But if you want to permanently change the file context, you needsemanage fcontextβ that's the one that modifies the SELinux labeling database. And then you'll needrestoreconto actually apply the labels. Don't skip that last step, I'm begging π₯Ί
π¦ COMMANDS π¦
These are the tools you'll be reaching for, and yes they all slay:
semanage fcontextcan also be used to manipulate default file context mappings.semanage permissivecan also be used to manipulate whether or not a process type is permissive.semanage modulecan also be used to enable/disable/install/remove policy modules.semanage portcan also be used to manipulate the port definitions.semanage booleancan also be used to manipulate the booleans.system-config-selinuxis a GUI tool available to customize SELinux policy settings. (yes, a GUI, for when you want to click instead of type π )
π AUTHOR π
This manual page was auto-generated using sepolicy manpage. That's it, that's the author β the machine did it, and honestly? It ate π₯
β SEE ALSO β
Go read these next, iykyk:
selinux(8)ipsec(8)semanage(8)restorecon(8)chcon(1)sepolicy(8)setsebool(8)ipsec_mgmt_selinux(8)ipsec_mgmt_selinux(8)
(And yes, ipsec_mgmt_selinux(8) really is listed twice β the manpage said it twice, so I'm telling you twice. Twin energy π)
Okay that's the whole page, bestie β you made it to the end π This one's from the ipsec man page source, dated 26-10-06, and it's the ipsec_selinux(8) page. Go forth and label responsibly π§β¨
π¦ where this page comes from
- opensuse-leap 16.0: selinux-policy-doc 20250627+git412.dbf877ab7-160000.1.1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms