Linuxはセキュリティ面で安全性が高い...というのは神話

少し古い話ですが、NISTは2017年にパスワードの運用方針を変更し、「攻撃されていることが明らかでない場合はパスワードを変更すべきではない。」としました。定期的なパスワード変更も要求すべきではないとのこと。

理由は「毎月のパスワード変更が面倒なので、単純な単語を少しづつ変える」という"手抜き"が蔓延するから。

その最たる例が"Password01"(最後の2桁はパスワードを変えた月)。

NIST Special Publication 800-63B

記憶シークレットを任意で(例えば,定期的に)変更するよう要求すべきではない(SHOULD NOT)。

しかしながらAuthenticatorが危殆化した証拠がある場合は,変更を強制するものとする(SHALL).

https://openid-foundation-japan.github.io/800-63-3-final/sp800-63b.ja.html

この話の本質は「負担が大きい作業は手抜きが蔓延する。手抜きはセキュリティの脆弱性につながる。」ということです。

同じことがLinux界隈でも起きています。

Linuxの設定、適切にできますか?

ドキっとしたシステム管理者の人も多いのではないでしょうか?

かく言う私も全く自信がありません。

というより、不可能です。なので"手抜き"をしています。脆弱性のリスクを受け入れた上で。

最近のLinuxは複雑すぎる

似たような別の機能を次々に開発しすぎです。

  • initdだったりupstartだったりsystemdだったり
  • serviceだったりinitctlだったりsystemctlだったり
  • iptablesだったりnftablesだったり
  • yumだったりaptだったりSnapsだったり

良かれと思って開発しているのでしょうが、利用する側は知識や経験といった資産を捨てなければいけません。そのたびに"初心者"からやり直しです。

インターネットのセキュリティコミュにティでも「●●したいけどできない → ××は許可する設定になってる? → なってる →  では△△の設定は? → してあります → では■■....」 という先の見えないトラブルシュートが散見されます。

結局、ピンポイントに思いつく設定を試して何とかリリースしているのが多くのシステム管理者の現状ではないでしょうか。

そしてついて行けない人から脱落していく...

サポートサービスがあるじゃないか

でも問い合わせできるのは「問題が起きている部分だけ」で、システム全体の設定を見直してもらうことはできません。

セキュリティコンサルタントであればOSの設定全体を見直してくれるかもしれません。しかし個別のソフトウェアの設定までは不可能です。

また、ユーザー要件やソフトウェア要件を理由にコンサルタントの調査結果を無視せざるを得ない事もあります。

サーバー用途であれば混乱は少ない

機能が限定されている

サーバーの場合はOS+お決まりのWebサーバーなりDBなりの組合せです。なので、十分な予算と体制を継続的に確保して時間をかければほぼ完璧な設定ができます。

Windows Serverと比べると無駄な機能をいちいちオフにしなくていいとか、知らない間に知らない設定が追加されているとか、画面の設定がレジストリに正しく反映されていないというリスクはかなり低いと言えます。

トラブルシュートしやすい

問題が起きたらプロセスを特定して、プロセスの設定を見直せば概ね解決の糸口が見つかるのもUnix系の良いところです。

Windowsの場合はGUIで一つ設定を変えると複数のプロセスの挙動が変わるので、あちらを直すことこちらで問題が... というループにハマったりします。

ちなみに私は以下の様に整理してトラブルシュートしています。直接要因の特定まで概ね1時間、サービス再開(縮退運用)まで4時間、ロールバック完了に8時間、本対策に24時間と行ったところ。

Unix系の認証と権限のオーバービュー

厳密にはスイッチプロセスもソフトウェアプロセスの一部なのでその部分は話がループします。ネットワーク系はiptables - TCPWreapper - Xinetdの3段階になっているのを知っておく必要があります。それさえ気をつければ何とかなるはず。

クライアントは絶望的

サポート無しで、個人で完璧に設定できますか?

企業のITの専門家が機能を絞り込み、サポートの力を借りてやっとできていることを、個人で本当にできますか?

ネットでぐぐってそのまま設定するのが関の山だったりしませんか?

その設定、「とりあえず全ユーザーに許可」とか「パスワード入力を無効化」だったりしてませんか?

そういう手抜きが脆弱性に繋がります。

Windowsの場合は良くも悪くも「丸裸か鉄壁の防御か」の2択で、丸裸を選ばなければ基本的にパッチを適用することで最低限のセキュリティを確保できます。

Linuxはroot権限を盗まれにくい?

未だにこれを言う人が後を絶たないのですが...

root権限(WindowsのAdministrators)の防御に関してはWindowsの方が優れています。

例えばブルートフォース攻撃に対する防御として最も有効な対策はユーザーロックです。パスワードを5回間違えたらアカウントをロックするアレです。

Windowsであればポリシーを1つ設定するだけですが、Linuxの場合はややこしいPAMの設定を正確にこなさなければいけません。ディストリビューションによってはPAMの導入から必要な場合があります。

また、メールの盗聴や個人情報の抜き取りは必ずしもrootやadministratorsの権限を必要としません。

wgetを始めスクリプトで外部とこっそり通信する手段はいくらでもあります

Linuxは利用者が少ないからマルウェアが少ない?

マルウェアが少ないということとセキュリティが高いという話は別問題です。

IPAは情報セキュリティ10大脅威2020を公開しました。個人向け脅威の順位は以下のとおりです。

  1. スマホ決済の不整利用
  2. フィッシングによる個人情報の詐取
  3. クレジットカードの不正利用
  4. インターネットバンキングの不正利用
  5. メールやSMSなどを使った脅迫・詐欺の手口による金銭要求
  6. 不正アプリによるスマートフォン利用者への被害
  7. ネット上の誹謗・中傷・デマ
  8. インターネット上のサービスへの不正ログイン
  9. 偽警告によるインターネット詐欺
  10. インターネット上のサービスからの個人情報の窃取

いかがでしょうか。

以前は常連だったマルウェアやランサムウエアは圏外です。(とはいえ対策は必要です)

代わりにランクインしているのはインターネットを介した不正利用です。これはOSの種類に依存しません。

企業向けの脅威でも5位にランサムウェアが入っている他は標的型攻撃やインターネットサービスからの情報の窃取やサービス妨害がほとんどです。

従って、クライアントOSのセキュリティをマルウェアの多少では判断できません。

クライアントLinuxは危険なのか?

Windowsと同程度に危険

ただし危険性の種類が違います。

Linuxは本来は高いセキュリティを確保できるOSなのですが、複雑さ故に適切な設定は不可能であり、手抜きが発生します。また、誰も助けてくれません。ただし、攻撃者との遭遇確立は高くありません。

WindowsはAdministratorを無効にするなど運用を工夫することでかなり高いセキュリティを確保できます。更に世界中の企業や政府がセキュリティの向上に協力してくれています。ただ、常に攻撃されており少しでも対応が遅れれば甚大な被害を蒙ります。

品質は落ちていく一方。構造的に品質向上は望めない。

Linuxには派生ディストリビューションが無数にあります。

ソフトウェアを自由に改変して、使いやすい様にカスタマイズできるのは良いのですが、あまりにカスタマイズ版が増えすぎて開発者が分散してしまいました。

もしLinuxの開発者が分散せず、一つのディストリビューションの改善に尽くしていたら、今頃Windowsを凌駕する素晴らしいデスクトップOSに成長していたに違いありません。

しかし現実には新しい機能を開発しては捨て、気に入らない人が独立してまた新しいディストリビューションを作るという繰り返しです。

この様に力が分散する方向にしか働かない構造なので必然的に開発者の密度は低くなり、安定した機能が切り捨てられ、不安定な機能に置き換えられ続けているというのが現状です。

幸いUbuntuはCANONICALというしっかりした団体が運営しており、Windows Updateよりも遥かに早いサイクル(ほぼ毎日)でセキュリティアップデートを行っています。利用者は意識することなくこのアップデートの提供を受けることができます。

それでも互換性を無視して大きな機能変更を行うためユーザーに混乱を招いている点は変わりません。

クライアントLinuxは止めたほうがよい?

用途によります。

と教科書通りのお話しをしてもピンとこないと思うので、思いつきで作ったチャートをおいておきますね。

Mac、Win、Linuxを20年間使用してきた経験に基づくチャート。今はほぼLinuxのみ。マイナンバーだけWin。

コンピュータに興味が無い人はWindowsかMacを使いましょう。

悪いことはいいません。素直に商用OSを使いましょう。

Microsoftもアップルも初心者の個人情報を守るためにセキュリティには非常に高い関心を持っています。

手取り足取りサポートして欲しいならWindowsかMacがベストです。

あまりお金をかけたくない場合は、インターネットの掲示板で質問する術を覚えましょう。Linuxの広い世界へ移行できるかもしれません。

コンピュータに興味があるならLinuxへ

Linuxには全てがあります。

あらゆる分野のソフトウェアや開発環境が全て無償で手に入ります。

世界中のWebサービスはLinuxを始めとしたUNIX系の文化で作られており、世界中の開発者と同じルールで会話できます。

Windowsに詳しくなっても、それはWindowsの作法を覚えたことにしかなりません。Macも同様です。

しかしLinuxを知ることでWindowsやMacのベースになっているコンピュータに詳しくなります。

例えばWindowsはサービスを使う側の発想にしかならないのに対し、Linuxユーザーはサービスを作る側の発想になります。これは副業で大きな収入を得るための基礎的な力になります。

ただし、Linuxを扱う前に学ぶことはたくさんあります。セキュリティもその一つです。

知らない間にセキュリティホールが...  といった惨事を招かないために一定のコンピュータリテラシーが必要です。

その様な余力が無い人にはLinuxはおすすめできません。

まとめ

LinuxはWindowsと比べて決してセキュリティが高いOSではありません。むしろLinuxのクライアント環境は年々品質が低下しています。

一方で、コンピュータに詳しくなることで新しい世界を手に入れることができます。それはおそらくセキュリティを確保するための労力よりも大きいはずです。

もしセキュリティリスクを背負う勇気と向上心があるのなら、Linuxはお勧めのOSです。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です