333.2 強制アクセス制御
課題 333: Access Control
333.2 強制アクセス制御
LPIC303の試験範囲である主題331~335まであるうちの「333 Access Control」から「333.2 強制アクセス制御」についてのまとめ
総重量:5
説明:
Linuxの強制アクセス制御(MAC: mandatory access control)の知識がある 特にSELinux全体の知識がある。Linuxの他の強制アクセス制御の知識も必要である。これには、システムの主な機能が含まれるが、設定や利用に関しては含まれない。主要な知識範囲:
Type Enforcement・ロールベースアクセス制御(RBAC: role based access control)・強制アクセス制御・任意アクセス制御の概念を理解している。
SELinuxを管理・設定する。
AppArmorとSmackの知識
重要なファイル、用語、ユーティリティ:
getenforce
setenforce
selinuxenabled
getsebool
setsebool
togglesebool
fixfiles
restorecon
setfiles
newrole
setcon
runcon
chcon
semanage
sestatus
seinfo
apol
seaudit
audit2why
audit2allow
/etc/selinux/*
Type Enforcement・ロールベースアクセス制御(RBAC: role based access control)・強制アクセス制御・任意アクセス制御の概念を理解している。
Type Enforcement
プロセスレベルのリソース制限機能
RBAC
RBAC: role based access control / ロールベースアクセス制御
強制アクセス制御
MAC:Mandatory Access Control
管理者によって設定されるアクセス制御
SELinux
AppArmor
Smack
任意アクセス制御
DAC:Discretionary Access Control
利用者によって設定されるアクセス制御
chmod, chown
setfacl, getfacl
setfattr, getfattr
SELinuxを管理・設定する
SELinux
RedHat系ディストリビューションで使われている強制アクセス制御
セキュリティコンテキストをファイルの拡張属性として保持する
ファイルの拡張属性に対応していないファイルシステムでは利用不可
パッケージ
setools-console
policycoreutils
libselinux-utils
操作系コマンド
getenforce(libselinux-utils)
現在の動作モードの表示setenforce(libselinux-utils)
動作モードの一時的な変更selinuxenabled(libselinux-utils)
SELinuxが有効かどうかを数値で返すgetsebool(libselinux-utils)
真偽値で示されるポリシーの状態取得setsebool(policycoreutils)
真偽値で示されるポリシーの設定togglesebool(libselinux-utils)
真偽値で示されるポリシーの変更fixfiles
SELinuxの設定ファイルに従ってすべてのファイルにラベルを付与するsetfiles(policycoreutils)
指定された設定ファイルに従ってファイルにラベルを付与するrestorecon(policycoreutils)
セキュリティコンテキストを復元するnewrole
指定したロールに変更してシェルを起動するsetcon
???runcon
指定されたセキュリティコンテキストでコマンドを実行するchcon
ファイルやディレクトリのセキュリティコンテキストを変更するsemanage(policycoreutils-python)
SELinuxに関する各種操作を行うsestatus
SELinuxの状況を表示するseinfo(setools-console)
SELinuxの各種情報を表示するsecon(policycoreutils)
SELinuxのコンテキストを表示(See)semodule(policycoreutils)
load_policy(policycoreutils)
avcstat(libselinux-utils)
matchpathcon(libselinux-utils)
selinuxconlist(libselinux-utils)
selinuxdefcon(libselinux-utils)
setools-console パッケージ
sesearch(setools-console)
sechecker(setools-console)
findcon(setools-console)
replcon(setools-console)
indexcon(setools-console)
chcat(policycoreutils-python)
解析系コマンド
apol(setools-console/setools-gui)
SELinuxのポリシーを分析するGUIツールseaudit(setools-console/setools-gui)
SELinuxの監査ログ(auditlog)を分析するGUIツールaudit2why(policycoreutils-python)
アクセス拒否が発生した原因と解決方法を提示するaudit2allow(policycoreutils-python)
アクセス拒否が生じないルールを提示するsediff(setools-console/setools-gui)
seaudit-report(setools-console)
監査ログ(auditlog)のSELinux用のレポートを作成する
設定ファイル
/etc/selinux/
[root@rocky9 ~]#
[root@rocky9 ~]# cd /etc/selinux
[root@rocky9 selinux]# pwd
/etc/selinux
[root@rocky9 selinux]#
[root@rocky9 selinux]# tree
.
├── config
├── semanage.conf
└── targeted
├── booleans.subs_dist
├── contexts
│ ├── customizable_types
│ ├── dbus_contexts
│ ├── default_contexts
│ ├── default_type
│ ├── failsafe_context
│ ├── files
│ │ ├── file_contexts
│ │ ├── file_contexts.bin
│ │ ├── file_contexts.homedirs
│ │ ├── file_contexts.homedirs.bin
│ │ ├── file_contexts.local
│ │ ├── file_contexts.subs
│ │ ├── file_contexts.subs_dist
│ │ └── media
│ ├── initrc_context
│ ├── lxc_contexts
│ ├── openssh_contexts
│ ├── removable_context
│ ├── securetty_types
│ ├── sepgsql_contexts
│ ├── snapperd_contexts
│ ├── systemd_contexts
│ ├── userhelper_context
│ ├── users
│ │ ├── guest_u
│ │ ├── root
│ │ ├── staff_u
│ │ ├── sysadm_u
│ │ ├── unconfined_u
│ │ ├── user_u
│ │ └── xguest_u
│ ├── virtual_domain_context
│ ├── virtual_image_context
│ └── x_contexts
├── logins
├── policy
│ └── policy.33
├── setrans.conf
└── seusers
6 directories, 38 files
[root@rocky9 selinux]#
参考
Security-Enhanced Linux Red Hat Enterprise Linux 6 | Red Hat Customer Portal
SELinux ユーザーおよび管理者のガイド Red Hat Enterprise Linux 7 | Red Hat Customer Portal
AppArmorとSmackの知識
AppArmor
Ubuntuで使われる強制アクセス制御
SELinux よりもシンプルで使いやすい
プロファイルを使ってアプリケーションを制御する
セキュリティコンテキストをファイルパスで保持する
拡張属性に対応していないファイルシステムでも利用可能
AppArmor:パッケージ
apparmor
libapparmor1
apparmor-profiles
apparmor-utils
python3-apparmor
python3-libapparmor
AppArmor:コマンド
aa-audit
aa-autodep
aa-cleanprof
aa-complain
complain mode に変更するaa-decode
aa-disable
disable に変更するaa-easyprof
aa-enabled
aa-enforce
disable または complain mode から enforce mode に変更するaa-exec
aa-features-abi
aa-genprof
プロファイルを作成するaa-logprof
aa-mergeprof
プロファイルをマージするaa-remove-unknown
aa-status
現在のAppArmorの状態を確認する
apparmor_status と同じaa-teardown
aa-unconfined
aa-update-browser
apparmor_parser
apparmor_status
現在のAppArmorの状態を確認する
aa-statusと同じ
AppArmor:設定ファイル
root@lpic303-ubuntu35:~#
root@lpic303-ubuntu35:~# tree /etc/apparmor.d/
/etc/apparmor.d/
├── abi
│ ├── 3.0
│ ├── kernel-5.4-outoftree-network
│ └── kernel-5.4-vanilla
├── abstractions
│ ├── X
│ ├── apache2-common
│ ├── apparmor_api
│ │ ├── change_profile
│ │ ├── examine
│ │ ├── find_mountpoint
│ │ ├── introspect
│ │ └── is_enabled
│ ├── aspell
│ ├── audio
│ ├── authentication
│ ├── base
│ ├── bash
│ ├── consoles
│ ├── crypto
│ ├── cups-client
│ ├── dbus
│ ├── dbus-accessibility
│ ├── dbus-accessibility-strict
│ ├── dbus-network-manager-strict
│ ├── dbus-session
│ ├── dbus-session-strict
│ ├── dbus-strict
│ ├── dconf
│ ├── dovecot-common
│ ├── dri-common
│ ├── dri-enumerate
│ ├── enchant
│ ├── exo-open
│ ├── fcitx
│ ├── fcitx-strict
│ ├── fonts
│ ├── freedesktop.org
│ ├── gio-open
│ ├── gnome
│ ├── gnupg
│ ├── gtk
│ ├── gvfs-open
│ ├── hosts_access
│ ├── ibus
│ ├── kde
│ ├── kde-globals-write
│ ├── kde-icon-cache-write
│ ├── kde-language-write
│ ├── kde-open5
│ ├── kerberosclient
│ ├── ldapclient
│ ├── libpam-systemd
│ ├── likewise
│ ├── mdns
│ ├── mesa
│ ├── mir
│ ├── mozc
│ ├── mysql
│ ├── nameservice
│ ├── nis
│ ├── nss-systemd
│ ├── nvidia
│ ├── opencl
│ ├── opencl-common
│ ├── opencl-intel
│ ├── opencl-mesa
│ ├── opencl-nvidia
│ ├── opencl-pocl
│ ├── openssl
│ ├── orbit2
│ ├── p11-kit
│ ├── perl
│ ├── php
│ ├── php-worker
│ ├── php5
│ ├── postfix-common
│ ├── private-files
│ ├── private-files-strict
│ ├── python
│ ├── qt5
│ ├── qt5-compose-cache-write
│ ├── qt5-settings-write
│ ├── recent-documents-write
│ ├── ruby
│ ├── samba
│ ├── smbpass
│ ├── snap_browsers
│ ├── ssl_certs
│ ├── ssl_keys
│ ├── svn-repositories
│ ├── ubuntu-bittorrent-clients
│ ├── ubuntu-browsers
│ ├── ubuntu-browsers.d
│ │ ├── chromium-browser
│ │ ├── java
│ │ ├── kde
│ │ ├── mailto
│ │ ├── multimedia
│ │ ├── plugins-common
│ │ ├── productivity
│ │ ├── text-editors
│ │ ├── ubuntu-integration
│ │ ├── ubuntu-integration-xul
│ │ └── user-files
│ ├── ubuntu-console-browsers
│ ├── ubuntu-console-email
│ ├── ubuntu-email
│ ├── ubuntu-feed-readers
│ ├── ubuntu-gnome-terminal
│ ├── ubuntu-helpers
│ ├── ubuntu-konsole
│ ├── ubuntu-media-players
│ ├── ubuntu-unity7-base
│ ├── ubuntu-unity7-launcher
│ ├── ubuntu-unity7-messaging
│ ├── ubuntu-xterm
│ ├── user-download
│ ├── user-mail
│ ├── user-manpages
│ ├── user-tmp
│ ├── user-write
│ ├── video
│ ├── vulkan
│ ├── wayland
│ ├── web-data
│ ├── winbind
│ ├── wutmp
│ ├── xad
│ ├── xdg-desktop
│ └── xdg-open
├── apache2.d
│ └── phpsysinfo
├── bin.ping
├── disable
│ └── usr.sbin.rsyslogd -> /etc/apparmor.d/usr.sbin.rsyslogd
├── force-complain
├── local
│ ├── README
│ ├── bin.ping
│ ├── lsb_release
│ ├── nvidia_modprobe
│ ├── php-fpm
│ ├── samba-bgqd
│ ├── sbin.dhclient
│ ├── sbin.klogd
│ ├── sbin.syslog-ng
│ ├── sbin.syslogd
│ ├── usr.bin.man
│ ├── usr.bin.tcpdump
│ ├── usr.lib.snapd.snap-confine.real
│ ├── usr.sbin.avahi-daemon
│ ├── usr.sbin.dnsmasq
│ ├── usr.sbin.identd
│ ├── usr.sbin.mdnsd
│ ├── usr.sbin.nmbd
│ ├── usr.sbin.nscd
│ ├── usr.sbin.rsyslogd
│ ├── usr.sbin.smbd
│ ├── usr.sbin.smbldap-useradd
│ └── usr.sbin.traceroute
├── lsb_release
├── nvidia_modprobe
├── php-fpm
├── samba-bgqd
├── sbin.dhclient
├── sbin.klogd
├── sbin.syslog-ng
├── sbin.syslogd
├── tunables
│ ├── alias
│ ├── apparmorfs
│ ├── dovecot
│ ├── etc
│ ├── global
│ ├── home
│ ├── home.d
│ │ ├── site.local
│ │ └── ubuntu
│ ├── kernelvars
│ ├── multiarch
│ ├── multiarch.d
│ │ └── site.local
│ ├── proc
│ ├── run
│ ├── securityfs
│ ├── share
│ ├── sys
│ ├── xdg-user-dirs
│ └── xdg-user-dirs.d
│ └── site.local
├── usr.bin.man
├── usr.bin.tcpdump
├── usr.lib.snapd.snap-confine.real
├── usr.sbin.avahi-daemon
├── usr.sbin.dnsmasq
├── usr.sbin.identd
├── usr.sbin.mdnsd
├── usr.sbin.nmbd
├── usr.sbin.nscd
├── usr.sbin.rsyslogd
├── usr.sbin.smbd
├── usr.sbin.smbldap-useradd
└── usr.sbin.traceroute
12 directories, 192 files
root@lpic303-ubuntu35:~#
Smack/SMACK
Simplified Mandatory Access Control Kernel
設定がシンプル
セキュリティコンテキストをファイルの拡張属性として保持する
ファイルの拡張属性に対応していないファイルシステムでは利用不可
参考
この記事が気に入ったらサポートをしてみませんか?