CentOSをSELinuxのstrictモードで動かしてみよう(その2)
だいぶ経ちましたが、前回からの続きです。
再びログイン
まずは
とりあえずターミナルからsshでログインしてrootにsuしたら
$ su - パスワード: -bash: /root/.bash_profile: 許可がありません -bash-3.2#
と言われてしまいました。
では現状確認
次は
それではとコンソールからrootでログインしてロールを確認
# id -Z root:sysadm_r:sysadm_t:SystemLow-SystemHigh
…こっちは普通によさそう
(よく理解できてませんが)どうやらこの辺の違いが挙動に表れていると思われます。
今回の目標
ということで、一旦下が出来るようにすることを目標とします。
SSHでのリモートログインで、suしたときにコンソールと同じ権限が割り当てられるようにしたい
調べる
権限がどう違うのか、ということ。
まずは条件で比較
- SSHで一般ユーザーログイン後su
$ id -Z user_u:user_r:user_t $ su - パスワード: -bash: /root/.bash_profile: 許可がありません -bash-3.2# id -Z user_u:user_r:user_t
- SSHでrootユーザーログイン
-bash: /root/.bash_profile: 許可がありません -bash-3.2# id -Z root:staff_r:staff_t:SystemLow-SystemHigh
#普段はやりませんが、/etc/ssh/sshd_config のPermitRootLogin を一時的に「yes」にして確認
- コンソールで一般ユーザーログイン後su
$ id -Z user_u:user_r:user_t $ su - パスワード: -bash: /root/.bash_profile: Permission denied -bash-3.2# id -Z user_u:user_r:user_t
- コンソールでrootユーザーログイン
# id -Z root:sysadm_r:sysadm_t:SystemLow-SystemHigh
整理する
- rootの場合
- コンソール:root:sysadm_r:sysadm_t:SystemLow-SystemHigh
- SSHでのログイン:root:staff_r:staff_t:SystemLow-SystemHigh
- 一般ユーザーの場合
- コンソールログイン+su: user_u:user_r:user_t
- SSHでのログイン+su: user_u:user_r:user_t
となりました。
ということで
今回はlogin時の特定の一般ユーザー権限が「staff_r」となるように設定することにします。
作業開始
ユーザーの確認
semanageコマンドを使ってみます。
# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 root root SystemLow-SystemHigh system_u system_u SystemLow-SystemHigh
どうやら一般ユーザーは全てSELinux上では「user_u」になるらしいです。…よくわかってませんが。
SELinuxユーザーの作成
今回は、rootユーザーがSSHでのログイン時に割り当てられる権限を、自分のユーザーに設定することにしました。
# semanage login -a -s staff_u -r SystemLow-SystemHigh myuser
結果こんな感じに。
# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 root root SystemLow-SystemHigh system_u system_u SystemLow-SystemHigh myuser staff_u SystemLow-SystemHigh
ログインしてみる
さっそくログイン
-bash: /home/myuser/.bash_profile: 許可がありません -bash-3.2$ id -Z staff_u:staff_r:staff_t:SystemLow-SystemHigh
.bash_profileは置いといて、とりあえず権限が変わった模様。
「sysadm_r」になれるか確認
-bash-3.2$ newrole -r sysadm_r パスワード: $ id -Z staff_u:sysadm_r:sysadm_t:SystemLow-SystemHigh
成功!
でsuしてみる
$ su - パスワード: # id -Z staff_u:sysadm_r:sysadm_t:SystemLow-SystemHigh
成功!
こんな感じでいいんでしょうかね?
とりあえず良しとしよう。
#自分が使っているユーザー名でログインした 「.bash_profile」の権限が無い件は後日調査。
一旦今日はここまで。