Linuxサーバーのセキュリティを学ぼう:基礎から理解するLinuxサーバー[Cent OS 7.0編](9)(3/3 ページ)
本連載は、Linuxサーバーに初めて触れる人、基本から学習したい人に向けて、「CentOS 7」をベースにLinuxサーバーの基礎を解説していきます。今回は、Linuxサーバーのセキュリティについて学びましょう。
これだけはやっておきたいセキュリティ対策
システムをアップデートする
原則(1)「アップデート重要」です。
ディストリビューションを構成するソフトウェアに不具合が見つかると、ソフトウェアはただちに修正が施され、アップデート版が提供されます。ただし、初期状態では、自動的にアップデートが適用されません。アップデートを適用してシステムを最新状態に保つには、インターネットに接続した状態で、次のコマンドを実行します。
これでアップデート版が提供されているソフトウェアパッケージがすべてダウンロードされ、アップデートされます。
システムは常に最新の状態にして利用してください。アップデートが遅れれば遅れるほど、それだけ攻撃を受ける可能性が高くなってしまいます。
とはいっても、四六時中サーバーに張り付いてアップデートを監視することもできないでしょう。yum-cronというパッケージをインストールしておくと、アップデートが定期的に適用されるようになります。yum-cronパッケージをインストールするには、次のコマンドを実行します。
ONEPOINT
実際のサーバーでは不用意にアップデートをかけると、Webアプリケーションなどが動作しなくなることがあります。本番環境でアップデートする前にテスト環境で試しておく等、慎重さが求められます。
不要なサービスを停止する
原則(2)「不要なものは不要」です。
サーバー上では、不要なサービスは極力実行しないのが基本中の基本です。例えばインターネット上のWebサーバーでは、ファイル共有のSambaは不要です。それなのにSambaが稼働しているとすれば、それだけ攻撃を受ける間口を広げてしまうことになります。侵入口は最小限にとどめなければなりません。
まず、不要なサービスがインストールされているのならアンインストールします。例えば、もうFTPサーバーはいらない、ということであれば、次のコマンドでvsftpdパッケージをアンインストールできます★。
参考情報
yumコマンドに-yオプションを指定していないのは、誤って必要なパッケージまで削除してしまわないかを確認するためです。
次に、インストールされているサービスについても、すぐに必要のないものは自動的に起動しないようにします。すでに見たように、CentOSではsystemctlコマンドを使ってサービスを制御します。サービスが自動的に起動するかどうかを確認するには、次のコマンドを実行します。
「enabled」となっているのが自動的に起動するサービス、「disabled」となっているのが自動的に起動しないサービスです。例えば、Samba(smb.service、nmb.service)の自動起動が不要であれば、次のようにして自動的に起動しないようにします。
始めのうちは、どのサービスが停止してもよいのか、どのサービスは停止するとまずいのかの判断が付かないと思いますが、Linuxの知識が増えるにつれ、判断ができるようになってくるでしょう。
ONEPOINT
判断ができないうちは不用意にサービスを止めない方がよいでしょう。
ログインできるユーザーを制限する
原則(3)「原則禁止」です。
まず「rootユーザーはログイン禁止」です。rootユーザーがログイン可能な状態になっているとすると、攻撃者はパスワードを当てるだけでシステムの全権限を一気に奪えてしまいます。rootという名前のユーザーがいるのはわかっているのですから、ユーザー名とパスワードの両方を当てなければならない一般ユーザーよりも効率的で、しかも奪取できる権限は最大です。そのため、rootユーザーはログイン禁止にしておかなければならないのです。
「じゃあ、システム管理者がrootユーザーで作業したい場合はどうするの?」となりますが、システム管理者用の一般ユーザーアカウントを作成しておき、その一般ユーザーからsuコマンドを使ってrootユーザーになればいいのです。そうすれば、誰がいつrootユーザーになったのか、という記録もログに残せます★。
参考情報
suコマンドを使ってrootユーザーにならなくてもrootユーザーの権限を一時的に借りることができる仕組みもあります。また、suコマンドを使えるユーザーを制限することもできます。
それでは、rootユーザーのログインを禁止しましょう。SSHサーバーの設定ファイル/etc/ssh/sshd_configをrootユーザーで編集します★。
参考情報
よく似た名前のファイル/etc/ssh/ssh_configと間違えないようにしてください。
変更するのは48行目です。コメント(#)を削除し、「yes」を「no」に変更します。
行 | 変更前 | 変更後 |
---|---|---|
48 | #PermitRootLogin yes | PermitRootLogin no |
設定の変更を適用するため、SSHサーバーに設定を再読み込み(リロード)させます。
もう一つ、SSHサーバーの設定を少し変更するだけで、絶大な効果を発揮する方法を見ておきましょう。それは、SSHの待ち受けポート番号を変更することです。
SSHサーバーは通常、22番ポートで接続を待ち受けしています。そのため、攻撃者は手当たり次第に22番ポートを開いているサーバーに攻撃を仕掛けます。そこで、22番ではなく、例えば10022番ポートで待ち受けるようにしておくと★、攻撃者はSSHサーバーが稼働していないと思い、スルーしてくれる可能性が高くなるわけです★。
参考情報
他のサービスと重複しない番号を割り当てる必要があります。
参考情報
実際にサーバーのログを見ていると、大半があきらめてくれます。
設定を変更するのは、/etc/ssh/sshd_configの次の箇所です。
行 | 変更前 | 変更後 |
---|---|---|
17 | #Port 22 | Port 10022 |
後はSSHサーバーに設定を再読み込みさせれば、このポート番号を知っている人だけがSSHでアクセスできるわけです。
ただし、SSHクライアントを利用する際にポート番号を指定する必要があります。sshコマンドでは-pオプションで、scpコマンドでは-Pオプションでポート番号を指定できます。
TeraTermやWinSCPでもポート番号の設定箇所がありますので、ポート番号を変更した場合はそちらの設定変更もお忘れなく。
まとめ
- yum updateでシステム全体がアップデートします
- yum-cronパッケージで自動的にシステムをアップデートできます
- systemctl disableコマンドで不要なサービスの自動起動を無効にします
- SSHサーバーの設定でrootログインを禁止します。設定ファイルは/etc/ssh/sshd_configです
- SSHサーバーのポート番号を変更するとセキュリティが向上します
Copyright © ITmedia, Inc. All Rights Reserved.