Webサーバに使用されているLinux OS。そのLinuxを狙う攻撃が急増しており、Linuxのセキュリティ対策が急務となっています。ここ数年、不正アクセスによる情報漏えいやWebサイトのサービス停止といったニュースをよく耳にしますが、これらの攻撃はLinuxの脆弱性を突くものがほとんどです。
攻撃を受けて顧客情報などの漏えいが発生してしまうと、その補償はもちろん、ブランドイメージの失墜や売り上げの低下、銀行の信用評価が下がるなど、多大な影響を受けることになってしまいます。Linuxはオープンソースのためコストを低く抑えることができますが、ソースが公開されているので攻撃者に弱点を研究されるというデメリットもあります。ここでは、Linuxに必要なセキュリティ対策を説明します。
1:Linuxに必要なセキュリティ対策
Linuxを使用している環境においては、大きく「ソフトウェア」「ユーザー」「運用」「ネットワーク」の4点でセキュリティ対策が必要になります。
1-1:ソフトウェア管理
1-1-1:ソフトウェアのアップデート情報をチェックする
使用しているLinuxの情報を常にチェックして、最新のアップデートがあれば適用します。Linux OSには、Red Hat LinuxやSUSE Linux、TurboLinuxなど多くのディストリビューターから提供されていますが、カーネルと呼ばれる基本機能をベースに、ディストリビューターごとにさまざまな機能がパッケージされています。ディストリビューターからの情報をこまめにチェックして、アップデートがあれば適用します。
アップデートが必要な理由には、Linuxがオープンソースであることが挙げられます。プログラムのソースがすべて公開されているのです。これにより、誰でもプログラムに変更を加えて使いやすくすることができます。しかしその一方で、サイバー攻撃者も同様にソースを研究して、攻撃に使える脆弱性を探しています。アップデートの多くは脆弱性の解消のために行われますので、攻撃を受けないためにもアップデートは重要です。
1-1-2:不要なソフトウェアをインストールしない
新規にLinuxをインストールする際には、パッケージグループの選択で「最小(Minimal)」を選びましょう。そこから必要なパッケージのみを個別にインストールするようにします。システムにインストールするソフトウェアが増えれば、それだけ脆弱性を抱える可能性が高くなります。一般的にLinuxはサーバー用途に使用されるため、その用途に必要最小限のソフトウェアで構成するようにしましょう。
1-2:ユーザー管理
1-2-1:不要になったユーザーアカウントは削除する
退職などの理由により使用されなくなったユーザーアカウントは、「userdel」コマンドによって削除しましょう。情報漏えい事件の多くは、退職した元社員などが在籍中に使用していたアカウントでログインしたことが原因です。このため、不要になったユーザーアカウントはすぐに削除するようにします。
なお、ユーザーアカウントが利用を再開する可能性がある場合は、「passwd」コマンドでログインできないように設定することが望ましいとされています。「/etc/passwd」を直接編集することも可能ですが、編集ミスが発生する可能性があるため、「passwd」コマンドを使用する方が確実で安全といえます。
1-2-2:パスワード漏えい対策に有効期限を設定する
ユーザーのログインパスワードは、「chage」コマンドで有効期限を設定します。一般的にログイン時に使用するアカウントはメールアドレスなど想定しやすいものとなっていますが、その対になるパスワードを定期的に変更することで不正アクセスを防止します。
パスワードの定期的な変更は、いわゆる「パスワードリスト攻撃」の対策にはなりません。しかし、メモすることや背後から盗み見される「ショルダーハッキング」などによって社内でパスワードが漏れる可能性もあるので、これを防ぐわけです。
1-2-3:ユーザーによる権限昇格を防止する
「pam_wheel.so」を設定して、「su」コマンドを使用できるユーザーを制限します。一般ユーザーの権限でログインしていても、「su」や「sudo」コマンドを実行することでroot権限に昇格させることができます。root権限はどんな設定も変更できる特権アカウントですので、重要なファイルにもアクセスできてしまいます。情報保護の観点からも、権限昇格の制限は重要です。
また、利用者が増えるとユーザーの管理が複雑になりますが、共通のアカウントを作成するのはやめましょう。確かに管理の手間は大幅に減らすことができますが、適切なパスワード管理が困難になることや、操作した人の特定が難しくなります。アカウントの共有はパスワードの漏えいや、なりすましのリスクを高めてしまいます。特にrootなどの管理者権限の共有には注意しましょう。
1-3:運用管理
1-3-1:アクセス権を適切に設定する
ファイルやディレクトリには適切なパーミッションを設定しましょう。パーミッションとは、ファイルやディレクトリに対するアクセス権のことで、「chmod」コマンドによって「読み込み」「書き込み」「実行」の権限を設定できます。基本的に必要最低限のパーミッションに設定しておくことで、ファイルやディレクトリをのぞき見されないようにできます。
特に/etc/securetty、/etc/shadow、/etc/sudoersなどはセキュリティ上重要なファイルですので、不要な権限を与えないよう注意しましょう。まや、アクセス権と同時にファイルを所有するユーザやグループについても、誰がどのような操作をするのかを検討した上で適切に設定しましょう。
1-3-2:不要なデーモンを起動させない
WebサーバなどでGUIを使ったサーバ管理ツールを使わないのであれば、ランレベルを3に設定し、不要なデーモンを起動しないようにします。Linuxで不必要なデーモンを起動させたままにすると、使用しないポートが開いた状態となるので、攻撃を受ける危険性が高くなります。CPUなどのリソースも消費してしまうので、不要なデーモンが起動しないよう適切に設定しましょう。
1-3-3:不要なSUIDを削除する
「find」コマンドを使用して、不要なSUIDが付与されているファイルがないかを確認し、削除します。SUIDは、実行ファイルに設定される権限に関する属性です。SUIDが設定されている実行ファイルは、誰が実行してもファイル所有者の権限で処理が実行されるので、不要な実行ファイルからSUIDを削除することで思わぬ操作を防ぐことができます。また、グループの権限で実行ファイルを動作させる属性であるSGIDも同様に対策しましょう。
1-3-4:ログを正確に残す
ログファイルはできる限り保存するようにしましょう。攻撃を受けた場合や構成行為が発覚したときなどは、ログファイルを分析することで具体的に何が起きたのかなどの原因を把握することができます。ログファイルの保存はストレージ容量を圧迫していきますので、一定の量になったら別のディスクに移すなどの工夫が必要になります。また、ログには時刻の情報が非常に重要になります。NTPを使用してサーバの時刻を正確に維持するようにしましょう。
1-4:ネットワーク管理
1-4-1:パケットフィルタリングを行う
iptablesなどでパケットフィルタリングを行いましょう。パケットの中には、ポートスキャンなど攻撃の前段階に行われるものや、不正侵入しようとするもの、ネットワークウイルスなども含まれています。そこで、パケットのヘッダに含まれるポートやIPアドレス情報、通信の方向などをチェックし、不要なものは拒否や破棄します。その判断はポリシーによって決定されます。ポリシーのチューニングも定期的に行いましょう。
1-4-2:不要なポートを閉じる
管理者権限で「netstat」コマンドを実行し、現在開いているポート番号を確認して、不要なポートを閉じましょう。開いているポートは外部からの侵入や、脆弱性の悪用に利用される可能性があるため、不要なポートを閉じて不正侵入されないようにします。使用しないデーモンがポートを開いているケースもありますので、不要なデーモンも終了しておきます。
1-4-3:リモートアクセスで管理する場合はSSHを利用する
サーバが自社内でなくクラウド上などにある場合は、リモートアクセスの通信にSSHを使用しましょう。以前はtelnetがリモートアクセスに使用されていましたが、telnetは通信が暗号化されないため、第三者に通信の内容を盗聴されパスワードなどの情報を取得される危険性がありました。SSHは通信内容が暗号化されるため安全ということです。
なお、多くのLinuxディストリビューションでは、SSH接続を行うためのソフトウェアとしてOpenSSHというパッケージが提供されています。さらに最近では、より安全性を高めるために証明書を利用した認証方法も導入されています。
さらに詳細な情報については、Linux技術者認定機関であるLPI-JAPANが「Linux セキュリティ標準教科書」を公開していますので、参考にするとよいでしょう。
http://www.lpi.or.jp/
2:Linuxにおける脅威
Linuxにおけるセキュリティのポイントについて述べましたが、これらの対策を行っていない場合、どのような被害を受ける可能性があるのでしょうか。ここでは主に、Webサーバや社内のサーバが受ける脅威について紹介します。
2-1:Webサイトを改ざんされる
組織のWebサイト(ホームページ)が改ざんされる可能性があります。サイトの改ざんは、以前はホームページをまったく異なる内容に差し替える被害が中心でした。これは、攻撃者が改ざんしたことをアピールするためで、自分の技術を誇示することが主な目的でした。それが最近では金銭目的になったため、利用者に気づかれないように改ざんするようになりました。
見た目はいつもとまったく変わらないのに、悪意のあるコードがサイトに埋め込まれ、アクセスした利用者のPCに脆弱性があるとマルウェアに感染させようとする例や、別の場所に攻撃者が用意した偽のサイトにリダイレクトされる例などがあります。実際の改ざんは、管理者のログイン情報を盗み出したり、不正アクセスによって行われます。
2-2:社内の情報を盗まれる
社内にある重要な情報や、保持している個人情報を盗まれる可能性があります。その手法は複数ありますが、攻撃としてもっとも多いのはSQLインジェクションという手法です。SQLインジェクションとは、WebサーバへのリクエストにSQLのコマンドを加えることで、社内のデータベースサーバから情報を引き出す手法です。
また、不正アクセスやマルウェアによって社内に侵入し、重要な情報を盗み出すケースもあります。最近では、他のサービスから漏えいしたログイン情報(IDとパスワードの組み合わせ)を使ってログイン試行する「パスワードリスト攻撃」も多発しています。この場合は、サイトで提供しているサービスの利用者が被害に遭うことになります。
さらに、大手出版社で発生した情報漏えい事件のように、内部犯罪によって情報が漏えいする可能性もあります。社員などの教育はもちろん、ユーザーやファイルの権限管理を厳密に行い、退職者など不要になったアカウントを使用停止にするといったシステム的な対策も重要です。