ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Linuxセキュリティ入門

はじめに

 最近、不正アクセス防止法や、官公庁のホームペ−ジの改ざん事件など、セキュリティに関する話題が多くみられます。 しかし、たいていのトラブルは、ここで紹介する対策で防ぐことができます。 どんな対策をとったとしても、完全に防ぐことができるわけではありませんが、セキュリティについて、最低限、知っておくべきことを紹介します。
 とにかく、自分の身は、自分で守るしかないのです。 たとえセキュリティのことがよくわからなくても、次のことは実施しましょう。 ただし、Linuxには、いろいろなディストリビューションがあり、設定方法はそれぞれのディストリビューション毎に異なりますので、具体的な方法については、各ディストリビューションの説明を見てください。

パスワードの設定

 ユーザのアクセス許可は、パスワードによってのみ行われます。 従って、パスワードは、他人がわかりにくいパスワードにする必要があります。 誕生日などの数字や、辞書に掲載されている単語は使わないようにしましょう。 業界用語などを組み合わせたものも、通用しません。
 また、パスワードは定期的に変更するようにしましょう。
 パスワードを他人に話したり、ディスプレイの横に貼っておくのは、問題外です。

いろいろなセキュリティ対策方法

 インストール時に設定するセキュリティ対策には、以下の4つがあります。 この他にも、日常のチェックによる対策があります。

利便性と安全性のバランス

 セキュリティを堅くすると、それだけ使い勝手が悪くなってしまいます。 つまり、安全性と利便性は、相反するものなのです。 ですから、何が必要で、何が必要でないかを明確にすることが重要です。
 また、アクセス権の設定は、基本的にすべて禁止し、必要なものだけを許可するようにします。

サービスの制限

inetdから起動される不要なサービスの停止

 inetdは、各種サービスを起動するためのデーモンです。 デーモンとは、Linuxでイベントが発生するまで待っているプログラムのことです。
 /etc/inetd.confの設定を変更することにより、不要なサービスを起動しないようにします。 fingerなどは、内部の情報が漏れるので、できるだけ停止しましょう。 それから、ユーザやパスワードによる認証を行わずに通信する、UDP系のNFSやRPC(rsh)も、できるだけサービスを停止しましょう。

起動シェルの不要なサービスの停止

 /sbin/rc.dや、/etc/rc.d 配下の起動ファイル内をコメント化し、不要なデーモンが起動しないようにします。 rc.d 配下のファイルは、シェルで記述されているので、各行の先頭に # を付加することで、コメント化できます。
 TurboLinuxでは、turboserviceコマンドで、RedHatでは、ntsysvコマンドで、不要なサービスを停止させたり、起動しないようにできます。

アクセスの制限

ルータのパケットフィルタリング

 ほとんどのルータでは、パケットフィルタリングという、アクセス制限機能が付いています。 パケットフィルタリングとは、サービスの種類(ポート番号)と、アクセス先とアクセス元(IPアドレス)によってアクセスを制限する機能です。 また、アクセス制限には、方向があります。 ですから、すべてのアクセスを禁止した後、サービス毎に、インターネットへのアクセスを許可するのか、インターネットからのアクセスを許可するのかを考える必要があります。 パケットフィルタリングでは、パケットのヘッダ部でのみチェックするため、パケットの内容は一切チェックしません。

tcp_wrapperによるフィルタリング

 Linuxでは、tcp_wrapper というソフトウェアが、デフォルトでインストールされています。 しかし、デフォルトではアクセス制限がかかっていない場合がありますので、設定する必要があります。
 /etc/hosts.deny ファイルにALLを設定し、/ec/hosts.allow ファイルに必要なホストのみを記述します。 ホストの指定は、ホスト名で指定するよりは、IPアドレスで指定した方が、より安全です。 また、ドメイン名で指定する場合は、プロバイダ単位で指定せずに、アクセスポイント単位で指定するようにした方が、より安全です。

telnet、ftpから、SSHへの切り替え

 telnetやftpやpopなどは、データの中身だけではなく、パスワードもそのまま送信しています。 ですから、ネットワークのデータを盗聴されてしまいます。 SSHは、操作方法は異なりますが、暗号化された、telnetやftpと考えられますので、SSHを使うようにしましょう。

ユーザの制限

ユーザのログイン制限

 ログインできるユーザは、最小限とし、不要なアカウントは、ログインを禁止します。 ただ、ユーザ数を減らすために、複数の人が共同で利用する共通アカウントを作成してはいけません。 共通アカウントは、パスワードが漏れやすく、アクセスしたユーザが特定できないという問題があります。
 また、rootなどの管理者ユーザは、ネットワークから直接ログインできないようにします。 ネットワークから管理者コマンドを使用する場合は、一般ユーザでログイン後、suコマンドを使用します。
 これらは、/etc/login.accessなどで設定します。

root権限の制限

 suコマンドで、rootになれるユーザは、wheelグループだけとします。
 これらの設定は、/etc/login.defsなどで、設定します。

FTP機能の制限

 FTPできるユーザは、必要最小限とします。 rootでは、ftpできないようにします。
 これらは、/etc/ftpusersなどで設定します。

ファイルの制限

ファイルのアクセス権の制限

 一般ユーザが、参照・更新できるファイルは、必要最小限とします。

コマンドの実行権の制限

 /sbin、/usr/sbin、/usr/local/sbinディレクトリは、システム管理者のコマンドを格納するディレクトリですから、ディレクトリ単位で参照できないようにします。 また、telnet, traceroute, pingなどのネットワーク関係のコマンドも、必要がなければ、一般ユーザからは実行できないようにします。

日常のチェック

セキュリティ情報の収集

 セキュリティ情報は、定期的に見るようにし、セキュリティホールが発見された場合は、できるだけ早く修正されたプログラムをインストールするようにして、セキュリティホールをなくしましょう。
 ただし、ちゃんと動作確認をしないと、逆にサービスが停止してしまう可能性もありますので、慎重に行う必要があります。

ログのチェック

 シスログなどのエラーは、定期的にチェックしましょう。 侵入される直前には、いろいろなエラーが発生している場合が多いです。
 swatchなどを使って、チェックを自動化し、異常があればメールを送信することもできます。

ファイアウォール構築

 より安全性を高める方法として、ファイアウォールを構築する方法があります。 ファイアウォールを構築することによって、ネットワーク全体をより安全にすることがもできます。
 ファイアウォールとは、ローカルのネットワークをインターネットなど他のネットワークを経由した攻撃から防ぐ目的で設置する、文字通り「防火壁」です。 専用のハードウェアなどもありますが、高価なものが多いのが難点です(最近では安価なものも出てきてはいます)。 しかし、Linuxとフリーソフトを用いてファイアウォールを構築することもできます。 フリーソフトでも、一定レベルの安全性を求めることは十分に可能です。
 ファイアウォールを構築するには、インターネットとローカルネットを論理的に切り離し、直接アクセスを出来なくする必要があります。 ゲートウェイマシンとは、複数のLANボードを入れ、内部ネットワークと外部ネットワークを接続するマシンのことです。 そして、ゲートウェイ・マシンにファイアウォールを構築して、セキュリティ上問題のあるデータを食いとめます。



Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp