SELinuxなんか無効にするのが当たり前となって10年くらいたった。(自分の中で)
さくらのVPSも、conohaのVPSも、SELinuxはデフォルトで無効じゃないか?
自分で無効にした覚えがないから。
初めてCentOSをさわった頃、たしか4か5の頃、なんかおかしいなと思ってSELinuxを無効にしたらうまくいった、ということがあって、そのうち最初から無効にするようになった。
私がLinuxを使うのはほとんどが実験や検証的な場合だったのでそれでよかった。
だが、セキュリティについていろいろとうるさくなってきた昨今、
「めんどくさいからオフる」
という思考回路を改めた方がいいのでは?と感じている。
そこで、とりあえず自分が使っているcentos8のSELinuxを有効にしてみた。
参考
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-enabling_and_disabling_selinux
いまSELinuxが有効かどうかは
getenforce
でわかる。
disabled
になっている。
Enforcingだと有効、Permissiveだとポリシーをチェックするが動作は止めない、disabledだとポリシーもチェックしない無効な状態である。
enforcing/permissiveの切り替えは setenforceコマンドでできるが、
disabledにする、disabledから再度有効にするには、
/etc/selinux/config
を書き換える必要がある。
有効にするなら
SELINUX=enforcing
上記のRedHatの情報を見ると、SELinuxが無効の状態から有効にするときにはいったんpermissiveにして再起動し、ログをチェックして問題がないことを確認してからenforcingにする、と書いてあった。
また、必要なSELinuxのパッケージをインストールしておく必要がある。
(私の場合は事前になんでもかんでも突っ込んでいた)
その通りにやってみると、私の場合sshdに関する以下のようなログが記録された。
Apr 29 03:03:12 god setroubleshoot[1550]: SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket port xxxxx. For complete SELinux messages run: sealert -l 78b09f6f-3440-421f-976d-55edb0af1088
port xxxxx の xxxxx は実際には数字が記録されていて、この数字はsshで使用するポートをデフォルトの22から変更したポート番号である。
「SELinuxが有効だとsshのポート変えられないのか!じゃあ無効にしよう!」
ではなく、
SELinuxの設定でもsshで使用するポートを変更あるいは追加すればよいのだ。
semanage port --list
で現在の設定が表示される。
sshでgrepすると
# semanage port --list | grep ssh ssh_port_t tcp 22
追加するには
# semanage port --add --type ssh_port_t --proto tcp xxxxx