Linux システムの安全性を高める際に重要なことは、 Linux サーバの主な機能や役割を決めることです。機能や役割がはっきりしていないと、システムのどの場所を主に守るべきなのかがはっきりせず、作業の効率も落ちてしまいます。まずはインストールされているソフトウエアパッケージの一覧を確認して、不要なパッケージやセキュリティポリシーに合致しないパッケージを削除することが重要です。
一般的には RPM ソフトウエアパッケージには下記のものが含まれています:
インストール時に RPM データベース内に書き込まれる、パッケージのメタデータ。
同梱されるファイルとディレクトリ。
インストールやアンインストールの前後に動作するスクリプト。
また、下記のいずれかの条件に合致するパッケージについては、セキュリティ上のリスクとなる可能性があります:
setuid ビットもしくは setgid ビットの設定されたファイルを含むもの
グループもしくは全てのユーザが書き込み可能なファイルやディレクトリを含むもの
インストール時や既定で自動的にサービスが有効化されるもの。
上記 3 つの条件のいずれにも該当しなければ、パッケージは単なるファイル集であるとみなしてかまいません。このようなパッケージをインストールしてもアンインストールしても、システムのセキュリティには影響がありません。
しかしながら、お使いのシステムにインストールするパッケージはできる限り少なくしておくことをお勧めします。パッケージを減らすことで更新の手間を減らすことができますし、それによって発生しうる問題も減らすことができるからです。また本番サーバには開発用のパッケージやデスクトップ環境のソフトウエア (例: X サーバ) 等をインストールしないようにするのが最適です。もちろん Apache Web サーバや Samba ファイル共有サーバなど、サービスが不要であればインストールしないのが望ましいです。
Oracle 社や IBM 社等の提供するサードパーティ製のインストーラは、インストーラ自身を動作させるのにデスクトップ環境を求めるものがあります。本番サーバにデスクトップ環境をインストールしないようにするため、多くの組織では開発環境で無人インストール用のファイル (応答ファイル) を作成して回避しています。
それ以外にも、どうしても必要となる場合を除いて、 FTP や Telnet デーモンもインストールしないことをお勧めします。これらは ssh
, scp
, sftp
等で代替可能です。
また、一般に Linux システムを構築するにあたっては、システムやアプリケーションで必要となるパッケージのほか、メンテナンスやトラブルシューティングで必要なパッケージ のみ をインストールするようにすべきです。まずは RPM の最小リストから出発して、必要なパッケージを追加していくとよいでしょう。
インストールされている全てのパッケージを一覧表示するには、下記のようなコマンドを入力して実行します:
#
zypper packages -i
特定のパッケージに関する詳細を表示するには、下記のようなコマンドを入力して実行します:
#
zypper info パッケージ名
パッケージを削除する際に発生しうる、矛盾関係や依存関係の問題を表示したい場合は、下記のようなコマンドを入力して実行します:
#
zypper rm -D パッケージ名
このコマンドは便利な仕組みです。事前にテストを行っておかないと、ほとんどの場合、多くの問題点に直面し、複雑な依存関係の問題に悩まされる結果になります。
パッケージを削除する場合は、システムで必須となるパッケージを削除してしまわないように注意してください。必須のパッケージを削除してしまうと、システムは全く起動できなくなってしまうばかりか、修復もできなくなってしまいます。不安な場合は、削除を行う前にシステムの完全バックアップを作成しておき、その後にパッケージを削除してください。
1 つまたは複数のパッケージを削除する場合は、 zypper
コマンドに 「-u」 オプションを追加することをお勧めします。これはパッケージを削除することによって不要となったパッケージを併せて削除するためのものです:
#
zypper rm -u パッケージ名
修正を管理するためのインフラストラクチャの構築は、 Linux の本番環境を積極的に維持していくために重要な項目です。
なお、明示的なセキュリティポリシーを作成しておき、 Linux のセキュリティ更新や問題に対する処理方針を定めておくことをお勧めします。たとえばセキュリティポリシーで修正の評価やテストの方法、そして修正の適用について時間枠を設定しておくなどのことが考えられます。また、ネットワーク関連のセキュリティ脆弱性の場合には、より高い優先度を設定し、より短い時間での解決を目指すなどの方針も考えられます。このほか評価フェーズではテスト環境内でのテストを行い、まずは開発環境から修正を適用するなどの方針をとるのもよいでしょう。
また、個別のセキュリティ記録を残しておき、受け取った Linux のセキュリティアナウンスと修正の検証状況や問題点の解決状況、そして修正の適用日時などを残しておくとよいでしょう。
SUSE では修正を 3 種類に分類しています。それぞれセキュリティ、推奨、オプションと呼んでいます。また、システムに対して修正を適用し、最新の状態に保つにあたってはいくつかの方式が提供されています。それぞれのシステムには同梱されている YaST ツールである YaST オンライン更新を利用して、 SUSE Update の Web サイトに登録を行ってダウンロードすることができるようになっています。また、 SUSE では リポジトリミラーリングツール (RMT) と呼ばれる、修正や更新などをローカルの環境にコピーし、インターネット側への通信量を減らすためのツールも用意されています。このほか SUSE では、 SUSE Manager と呼ばれる Linux システムのメンテナンス/修正適用/レポートシステムも用意されています。こちらは SUSE だけでなく、他のディストリビューションを管理することもできます。
サーバごとに重要な更新や改善を適用したい場合は、 YaST オンライン更新ツールをお使いください。 openSUSE Leap に対する更新は、修正を含む製品ごとの更新カタログを介して提供されています。修正の適用は YaST から を選択してください。これを実行すると、オプション指定であるものを除き、未適用の全ての修正を自動的に選択します。後は ボタンを押すだけで、適用が行われます。
YaST では自動更新にも対応しています。
› を選択してください。あとは毎日もしくは毎週を選択するだけです。カーネル更新など、ユーザ側での操作を必要とする修正の場合は、自動でインストールしようとしても止まってしまいますので、このような場合は を選択してください。上記を選択した場合は、適宜手動でのオンライン更新を行い、対話操作が必要な修正を忘れずにインストールしておいてください。
また、 rpm
や zypper
を利用してインストールする必要があります。