Linuxサーバーのセキュリティを学ぼう基礎から理解するLinuxサーバー[Cent OS 7.0編](9)(3/3 ページ)

» 2017年03月30日 05時00分 公開
[中島能和]
前のページへ 1|2|3       

これだけはやっておきたいセキュリティ対策

システムをアップデートする

 原則(1)「アップデート重要」です。

 ディストリビューションを構成するソフトウェアに不具合が見つかると、ソフトウェアはただちに修正が施され、アップデート版が提供されます。ただし、初期状態では、自動的にアップデートが適用されません。アップデートを適用してシステムを最新状態に保つには、インターネットに接続した状態で、次のコマンドを実行します。

システムをアップデートする

 これでアップデート版が提供されているソフトウェアパッケージがすべてダウンロードされ、アップデートされます。

 システムは常に最新の状態にして利用してください。アップデートが遅れれば遅れるほど、それだけ攻撃を受ける可能性が高くなってしまいます。

 とはいっても、四六時中サーバーに張り付いてアップデートを監視することもできないでしょう。yum-cronというパッケージをインストールしておくと、アップデートが定期的に適用されるようになります。yum-cronパッケージをインストールするには、次のコマンドを実行します。

yum-cronパッケージをインストールする

ONEPOINT

 実際のサーバーでは不用意にアップデートをかけると、Webアプリケーションなどが動作しなくなることがあります。本番環境でアップデートする前にテスト環境で試しておく等、慎重さが求められます。


不要なサービスを停止する

 原則(2)「不要なものは不要」です。

 サーバー上では、不要なサービスは極力実行しないのが基本中の基本です。例えばインターネット上のWebサーバーでは、ファイル共有のSambaは不要です。それなのにSambaが稼働しているとすれば、それだけ攻撃を受ける間口を広げてしまうことになります。侵入口は最小限にとどめなければなりません。

 まず、不要なサービスがインストールされているのならアンインストールします。例えば、もうFTPサーバーはいらない、ということであれば、次のコマンドでvsftpdパッケージをアンインストールできます

参考情報

yumコマンドに-yオプションを指定していないのは、誤って必要なパッケージまで削除してしまわないかを確認するためです。


vsftpdパッケージをアンインストールする

 次に、インストールされているサービスについても、すぐに必要のないものは自動的に起動しないようにします。すでに見たように、CentOSではsystemctlコマンドを使ってサービスを制御します。サービスが自動的に起動するかどうかを確認するには、次のコマンドを実行します。

サービスが自動的に起動するかどうかを確認する

 「enabled」となっているのが自動的に起動するサービス、「disabled」となっているのが自動的に起動しないサービスです。例えば、Samba(smb.service、nmb.service)の自動起動が不要であれば、次のようにして自動的に起動しないようにします。

Sambaの自動起動を停止する

 始めのうちは、どのサービスが停止してもよいのか、どのサービスは停止するとまずいのかの判断が付かないと思いますが、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と間違えないようにしてください。


設定ファイル/etc/ssh/sshd_configを編集する

 変更するのは48行目です。コメント(#)を削除し、「yes」を「no」に変更します。

/etc/ssh/sshd_configファイルの変更する項目
変更前 変更後
48 #PermitRootLogin yes PermitRootLogin no

 設定の変更を適用するため、SSHサーバーに設定を再読み込み(リロード)させます。

SSHサーバーに設定を再読み込みさせる

 もう一つ、SSHサーバーの設定を少し変更するだけで、絶大な効果を発揮する方法を見ておきましょう。それは、SSHの待ち受けポート番号を変更することです。

 SSHサーバーは通常、22番ポートで接続を待ち受けしています。そのため、攻撃者は手当たり次第に22番ポートを開いているサーバーに攻撃を仕掛けます。そこで、22番ではなく、例えば10022番ポートで待ち受けるようにしておくと、攻撃者はSSHサーバーが稼働していないと思い、スルーしてくれる可能性が高くなるわけです

参考情報

他のサービスと重複しない番号を割り当てる必要があります。


参考情報

実際にサーバーのログを見ていると、大半があきらめてくれます。


 設定を変更するのは、/etc/ssh/sshd_configの次の箇所です。

/etc/ssh/sshd_configファイルの変更する項目
変更前 変更後
17 #Port 22 Port 10022

 後はSSHサーバーに設定を再読み込みさせれば、このポート番号を知っている人だけがSSHでアクセスできるわけです。

 ただし、SSHクライアントを利用する際にポート番号を指定する必要があります。sshコマンドでは-pオプションで、scpコマンドでは-Pオプションでポート番号を指定できます。

10022番ポートを指定してsshコマンドを実行する

 TeraTermやWinSCPでもポート番号の設定箇所がありますので、ポート番号を変更した場合はそちらの設定変更もお忘れなく。

まとめ

  • yum updateでシステム全体がアップデートします
  • yum-cronパッケージで自動的にシステムをアップデートできます
  • systemctl disableコマンドで不要なサービスの自動起動を無効にします
  • SSHサーバーの設定でrootログインを禁止します。設定ファイルは/etc/ssh/sshd_configです
  • SSHサーバーのポート番号を変更するとセキュリティが向上します

たった2日でわかる Linuxサーバー Cent OS 7.0対応

たった2日でわかる Linuxサーバー Cent OS 7.0対応

中島能和著
秀和システム 2500円(税別)
Linuxサーバーの学習をしたいがマシンは1台しかない……。覚えることが多すぎる……。あなたは、そんな理由でLinuxサーバーの学習をあきらめていませんか? 本書は、WindowsやMac上で動くLinuxを使って、サーバー構築のノウハウを解説します。初心者を対象としているので、あれもこれもと欲張ってたくさんの説明をするのではなく、まずは2日間で基礎部分だけをしっかり解説します。サーバ構築の基本スキルが身につきます。

注文ページへ


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。