Linuxのセキュリティ対策

最終更新日（2007.6.18）

はじめに

ここでは、Linuxを使用する際に最低限必要なセキュリティ対策について説明します。

このページは、今後も随時改良を加えていく予定ですので、ご意見・ご要望や、役に立つ情報等がありましたら、計算センターまでお知らせください。

マシンの設置環境を把握する

Linuxは、各種のサーバソフトを簡単に立ち上げることができ、リモートからの操作も容易です。つまり、多機能で便利な反面、外部からの悪意ある侵入対策に、詳細な注意が必要となります。

導入の前に、所属機関の機関管理者に、SSHを通常の状態で許可しているか等、自機関のネットワークが置かれている状況（これは、あなたのLinuxマシンが置かれる状況でもあります）を確認するようにしてください。
その上で、不明な点があれば、計算センターまでお問い合わせください。

また、「アクセス制御申請書」を提出するようにしてください。

インストールは最小限に

必要最小限の構成でインストールし、使わない機能はインストールしないようにしましょう。

何が必要になるか分からないからとりあえず全て入れるのではなく、最初は必要最低限のものだけインストールするようにし、実際に使用してみて、不足しているものがあれば順次追加していくようにしましょう。

パスワードは難しいものを

一般ユーザアカウントとシステム管理者アカウント（root）の双方に、きちんとパスワードを設定しましょう。

パスワードには、類推が容易な言葉（ユーザ名や誕生日、辞書に載っている単語等）の使用を避けましょう。

パスワードは数字を混ぜる等して８文字以上で設定しましょう。

rootを含め、パスワードを他人に教えたり、共有したりするのはやめましょう。

異動等で管理者が変わった場合は、すぐにその人のアカウントを削除し、rootのパスワードを変更しましょう。

インストールの際に、「シャドウパスワード」と「MD5による暗号化」の使用の有無を聞かれた場合は、「使用する」を選択しましょう。

常に最新版にアップデートを

Linuxは、例えば雑誌の付録等からも簡単に入手できますが、最新版ではない可能性があります。 また、セキュリティホールは頻繁に確認され修正版がリリースされているため、定期的にアップデートを行いましょう。

インストール後には、まずパッケージを最新版にアップデートしましょう。
例えば、Red Hatならば「rpm -Fvh」コマンドを、Fedora Coreならば「yum update」コマンドを使用します。

運用を開始した後も、常に最新の状態を保つように心掛けましょう。

長期間使用していなかったマシンを使用する場合は、使用前にアップデートを行いましょう。

当初のパッケージには含まれず、自分で後からインストールしたアプリケーションのアップデートにも注意しましょう。

不要なサービスやプロセスは停止する

不用意に情報を提示してしまうような、見方によっては起動しているだけで危険なサービスも存在します。
現在Linuxを使おうとしている目的（理由）を振り返り、不要なサービスは停止しましょう。

サーバとして機能している訳ではない場合、不要なサービスとしては、例えば、sendmail、ftp、dns、www等が考えられます。

「/etc/inetd.conf」の中身を見たり、「netstat -an」や「ps -aux」コマンドを実行して、起動しているサービスやプロセスを確認してみましょう。
停止する場合は、「/etc/inetd.conf」内の不要なサービスを「#」でコメントアウトしたり、「/etc/rc.d/rc*.d」内の起動スクリプトファイルの名称を変更する等します。

リモートログインが必要な時はSSHで

Telnetは通信を平文で行い危険なため、リモートからの利用の際には、Telnetを使用せず、SSHを使うようにしましょう。

Telnetが有効になっている場合は停止しましょう。

使用しているマシンに対し、他のマシンからリモートでログインする必要がある時は、SSHを使用しましょう。

リモートログインの必要がなければ、SSHも停止しておきましょう。

リモートからのrootログインを禁止しましょう（Red Hatでは、SSHはデフォルトでrootログインを許可しています）。rootによる作業が必要な場合は、一般ユーザアカウントでログインした後、suコマンドを使用しましょう。
方法は、「/etc/ssh/sshd_config」ファイル内の「PermitRootLogin yes」という設定を、「PermitRootLogin no」に書き換えます。

通常の利用は一般ユーザで

利用者があなた１人だけであっても、rootの他に、一般ユーザアカウントを必ず作成してください。

通常はrootによるログインを避け、一般ユーザアカウントで作業をするようにしましょう。

複数人で使用する場合は、suコマンドを使用してrootになることができるアカウントを必要最低限に制限しておきましょう。
方法は、「/etc/login.defs」ファイルに「SU_WHEEL_ONLY yes」と追加し、次に「/etc/group」ファイルのwheelの行に許可するアカウントをカンマ区切りで追加します。そして、「/etc/pam.d/su」ファイルに「auth required /lib/security/pam_wheel.so use_uid group=wheel」を追加します。

不要なアカウントは作成しないようにし、異動等でマシンを利用しなくなったユーザのアカウントはすぐに削除しましょう。

アクセス制限をかける

必要があって動かしているサービスには、アクセス制限をかけ、利用できるユーザの範囲を可能な限り限定しましょう。同様に、ファイルの管理も重要です。

例えば、「TCP_Wrapper」を利用して、サービスごとにアクセスできるIPアドレスを限定します。
具体的には、「etc/hosts.allow」と「etc/hosts.deny」の２つのファイルで設定します。後者で全て拒否「ALL:ALL」を設定した上で、例外として使用できるアドレスを前者で「in.sshd : 150.26.x.x」というように記述します。

複数人で使用したり、外部に公開する場合には、「chmod」や「umask」コマンドを利用して、ファイル及びディレクトリのパーミッションを適切に設定しましょう。

ログアウト、シャットダウンの習慣をつける

常時サービスを行うサーバでなければ、マシンから離れる時には画面のロックかログアウトを行い、使用後や帰宅時には起動したまま放置せずに、シャットダウンをする習慣をつけましょう。

参考リンク

上記に示した対策を実際に行う際に参考となるサイトを紹介します。 具体的なコマンド等は、これらのサイトを参考にしてください。

アットマーク・アイティ LinuxSquare全記事インデックス

連載記事「ゼロから始めるLinuxセキュリティ」

0 からはじめる Linux セキュリティ入門

ITpro Linuxコマンド集

ITpro Linuxコマンド逆引き大全

Linux 関連リンク/セキュリティ