座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

OpenSUSEのセキュリティが好きじゃない

OpenSUSEというLinuxディストリビューションがある.

特徴は, パッケージ管理を含めたシステム全般の操作や設定を, YaSTというGUIツールで行えるという, Ubuntu以上にマネージドなところだと思う.

メインではArchLinuxを使っているけど, 他のディストリビューションにも興味を持っておきたいなという思いもあって, サブPCには違うLinuxディストリビューションを入れて使っていたりもする.

OpenSUSEはArchLinuxと同じローリングリリース版 (Tumbleweed) も出ており, 興味があり……. ちょっと試してみようかと事前に調べたり試していたが, 決定的に気に入らないところが数点あった. 特にセキュリティ周り.

試したのは, OpenSUSE/TUmbleweed GNOMEデスクトップです.

デフォルトグループがある

追加ユーザーのグループは, ユーザー名と同じ新しいグループになることが多いかなと思うが, OpenSUSEの場合 users というデフォルトグループが設定される.

複数ユーザーで使うには, ちょっと気を使うかなと.

OpenSUSEはrootパスワードを設定させる

OpenSUSEはインストール時に, rootユーザーのパスワードを設定することを求めてくる.

より正確には, インストール時に次のことを問われる.

  • インストール時に一般ユーザーを追加するかどうか (Noとすると, rootユーザーのパスワードだけ設定することになる)

  • 一般ユーザーを追加する場合, それと同じパスワードをrootユーザーに設定するかどうか (Noとすると, rootユーザーのパスワードを設定する画面に移る)

メインで使用するユーザーのパスワードとrootユーザーのパスワードを一緒にするって, セキュリティ的に好ましいことではないと思う.

そもそもrootユーザーのパスワードは設定しない (rootによるログインを不可にする) ほうが, セキュリティ観点から望ましい.

sudoのデフォルト設定

管理作業のために, sudoコマンドを使うのが一般的だ. OpenSUSEもデフォルトでsudoコマンドが利用可能になっているが, そのデフォルト設定が奇妙.

  • すべてのユーザーが使用可能
  • sudoコマンド使用時に, rootユーザーのパスワードを求められる

インストール時にメインユーザーとrootユーザーのパスワードを一緒にするか問われる理由はこれなのか…….

このあたりはどうとでもなる.

sudoコマンド使用時に, rootユーザーではなく自分自身のパスワードを入力させるようにするには, 次のようにする.

管理作業を委譲するユーザーをwheelグループに加える (sudo gpasswd --add USERNAME wheel)

visudo でsudoの設定ファイルを開き, 次のように編集.

  • Defaults targetpw を, Defaults !targetpw へ変更
  • # %wheel ALL=(ALL) ALL という行のコメントアウトを解除

ついでにrootユーザーによるログインを無効にしておく sudo passwd -l root. /etc/shadow ファイルを開いて, rootで始まる行を削除.

これでそれなりに望ましい挙動にはできる. しかし, どうにもできなかったのが, 次で述べるYaSTの問題だ.

YaSTは必ずrootパスワードを要求する

YaSTは必ずrootパスワードを要求する. 必ずである. これが最も解せないところだった.

f:id:zashikiro:20200724075026p:plain

最初に述べた通り, YaSTはシステムに関する部分を管理/操作するためのGUIである. Windowsでいうコントロールパネルみたいなものか.

前項で述べた手順で, rootによるログインを無効にしておいても, YaSTを開くときにrootパスワードが要求されるのだ.

AlacarteでYaSTのエントリの実行コマンドを見てみると, 次のようになっている.

/usr/bin/xdg-su -c /sbin/yast2

suコマンドのグラフィカル版みたいなものだと思う. rootユーザーのパスワードが要求される. rootによるパスワード/ログインを無効にしているにもかかわらずである.

ヘルプを見ると,このコマンドには, ユーザー指定ができるようなので, 試しにsudoを利用できるようにしたwheelグループのユーザーで実行してみた.

/usr/bin/xdg-su -u kosuke -c /sbin/yast2

YaSTの画面はでるようになったが, root権限が必要だというメッセージが表示されるだけだった.

f:id:zashikiro:20200724075051p:plain

ところでこの問題, KDEデスクトップを選択していると, 回避する方法がないわけではなさそう. 試したわけではないけど.

https://www.reddit.com/r/openSUSE/comments/h995c6/how_to_use_yast_without_the_root_password/

抜け道がないわけではない.

例えば, パッケージ周りについては, zypperというコマンドで行えるようになっているので, そちらはsudoコマンドで実行できる. また, YaSTについても, GUIではなく, ターミナル内で動くUI (ncurses) も用意されており, それはsudoコマンドから起動できる. サービス周りの操作については, YaSTからではなく, systemdのコマンド群を使ってやる方法もあるしね.

しかし, YaSTが期待したように使えない状況において, OpenSUSEを使う意味があるのかどうか.

難ありと言わざるをえない

YaSTによるフルマネージドなLinuxディストリビューションとして期待すると, 「ターミナルではできる. しかし, GUIではできない」というところがどうしても気になってしまう.

ターミナルでの作業はしない. もちろんsudoコマンドを用いた作業をする予定もない. rootユーザーによるログインを無効化したりもしない.

そんな運用には合うかなって気がするが, それならsudoコマンドを利用可能にしておく必要はない……. という具合に, チグハグなところが目についてしまう. というのがちょっと触った雑感.

ちなみにだけど, OpenSUSEはけっこう前に使っていたことがある. UbuntuのUIが大きく変わったときに, OpenSUSEへ移行して1年くらいは使っていた. ここで述べたようなことが気になって, ArchLinuxへ移ったのだけど, だいぶ時間が経った今も変わってはいなかったと再認識した. セキュリティポリシーでこうやってるのかなー? かなり昔のことだけど, リーナス・トーバルズも, OpenSUSEのセキュリティについて苦言を呈していた (内容は忘れた).

OpenSUSE. フルマネージドなディストリビューションとしては筋がいいほうだと思うので, このへんが変われば使ってみたいと思う.