ymknの日記スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるymknの日記2008-06-11汎用的に使える自宅Linuxサーバを安価で手軽に構築(3)サーバLinuxはじめに前回はCentOSのインストールを行いました。今回はSSHの設定とOSの基本的なセキュリティ設定を行います。SSHでサーバに接続する今までの作業はサーバを直接操作して行ってきましたが、ここからはSSHを使ってクライアントからサーバにリモート接続して作業します。普段使っている環境からサーバを操作できるので何かと便利です。サーバ専用にモニタとキーボードを貼り付けておかなくてよいのも素敵ですね。サーバではSSHサーバが動いているはずですので、早速クライアントから接続してみましょう。WindowsからSSH接続するにはPuTTYがおすすめです*1。PuTTYを起動して、接続設定を行います。[セッション]ページでは、[ホスト名(またはIPアドレス)]の欄にサーバのIPアドレスを入力します。[接続タイプ]は[SSH]が選択され、[ポート]は22になっていることを確認してください。変換]ページにて、文字コードの設定を行います。CentOSの文字コードはUTF-8ですから[文字コードの設定]欄に[UTF-8]を設定しましょう*2。[CJK用の文字幅を使用する]のチェックを外してください。このチェックが入ったままだと、後で使うsetupコマンドの表示が乱れてしまいます。一度[セッション]ページに戻って[セッション一覧]欄に好きな名前を入力して[保存]ボタンを押します。これで次回以降も同じ設定を呼び出せます。[開く]ボタンを押すと現在の設定でサーバに接続します。うまくサーバに接続できたらユーザ名とパスワードを訊かれますので、まずはrootでログインしてください*3。プロンプトが表示されれば、無事ログイン成功です。一般ユーザの作成まず始めに行うのは一般ユーザの作成です。権限の強いrootで常に作業するのは危険*4ですから、作業用に一般ユーザを作成してそれを使うようにします。ユーザの作成にはuseraddを使います。-gオプションを使ってusersグループに所属させましょう。-pオプションには作成するユーザのパスワードを与えてください。ymknこれで一般ユーザが作成できました。今後SSHで作業するときはこのユーザを使うようにし、強い権限が必要な作業の時だけsuでrootになるようにします。exitでログアウトし、今作った一般ユーザで再ログインします。誰でもSSHでサーバに接続できてしまうのは好ましくないので、SSHでログインできるユーザを制限しましょう。SSHの設定ファイル/etc/ssh/sshd_configを編集します。一般ユーザでは設定ファイルを変更できないので、suコマンドでrootになります*5。-うまくrootになれたら/etc/ssh/sshd_configをエディタで開きます*6。PermitRootLoginとAllowUsersを設定して、ymkn(先ほど作った一般ユーザ)以外でのログインを禁止します。ymkn設定ファイルの編集が終わったらSSHサーバを再起動します。セキュリティ設定が完了したかどうか調べてみましょう。SSHでサーバに接続し、rootでログインできないことを確認します。それが確認できたら、今度はAllowUsersで指定した一般ユーザでログインできることを確認します。うまくいったらSSHの設定は完了です。今後全ての作業はSSH経由で行いますので、サーバに繋いでいたキーボードとモニタは外してしまいましょう。サーバ本体も目立たない場所にどかしてしまいます*7。次に、サーバに基本的なセキュリティ設定を施します。セキュリティ設定は何をどこまでやったらいいのか悩ましいものです。勘所をつかむまでは、@ITのゼロから始めるLinuxセキュリティを参考に設定しましょう。今回は記事で紹介されている内容の中から、特に私が設定したところをご紹介します。不要なサービスを停止する一般的に、サーバで動いているサービスの数は少ないほど好ましいです。攻撃の対象になりうる要素は少ない方がよいからです。CentOSにはsetupという便利な管理コマンドがあるので、このコマンドを使ってシステム起動時に起動させるサービスを必要最小限に絞り込みましょう。setupダイアログが表示されたら[システムサービス]を選択*8さて、問題は必要なサービスと不要なサービスをどう判断するかです。リストにずらっと並ぶサービスがそれぞれどんな役割を負っているのか知らないことには、必要か不要かなど判断できません。本来ならばサービスひとつひとつについて調べることになると思うのですが、数が多いと正直やってられません。ここは先人の知恵に頼りましょう。サーバサービス一覧・自動起動の設定/停止*9や◇不要デーモンの停止(WBEL4)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆などを参考にしました。以下、私の環境で無効にしたサービスの一覧です(はじめから無効だったものは含まれていません)。サーバの用途や環境に応じて止めるべきサービス、動かすべきサービスは変わってきます。ここは面倒くさがらずにひとつひとつチェックしましょう。5をインストールした場合、そもそもxinetdはデフォルトで起動しない設定になっていますので、ここで改めて設定することはありません。yes]になっていることを確認しておきます。悪意を持った攻撃者にroot権限を奪われることほど恐ろしいことはありません。その可能性を減らすために、rootになれるユーザを制限しましょう。/etc/login.defsを編集して、wheelグループに所属するユーザのみがrootになれるようにします。yes作業ユーザをwheelグループに追加します。これを忘れると誰もrootになれなくなってしまいますのでご注意を*10。以下の行を追加(コメントを外して有効に)します。不必要なポートは出来るだけ閉じておきましょう。現段階ではSSH(TCP22番)だけ開けておけばよいです。ファイアウォールの設定はsetupコマンドで変更できます。setup[ファイヤーウォールの設定]を選択します。[カスタマイズ]ボタンを押して、SSH以外の全てのポートが閉じられていることを確認してください。ここで誤ってSSHのポートを閉じてしまうと、再びサーバの前まで走らないといけないのでご注意を。おわりにこれでSSHの設定とOSの基本的なセキュリティ設定は終わりです。次回はNTPサーバのインストールを行います。*1:私はPuTTYごった煮版を愛用しています。そのほかにPoderosaというソフトもあります*2:UTF-8(CJK)やUTF-8(Non-CJK)というものもありますが、UTF-8と何が違うのか詳しくは知りません。ヘルプには文字幅を調節するようなことが書いてありますが......*3:パスワードはインストール時に決めたものです。覚えていますか?*4:rootは消してはいけないファイルも簡単に消せてしまいます。操作ミスでシステムを破壊してしまうことも......*5:このとき「-」オプションをつけると、rootの環境設定を読み込むことが出来ます。rootの環境では/usr/sbinなどにパスが通っているので、管理系コマンドを実行するのが楽です*6:ここではviを使っていますが、viの操作に慣れていない場合はnanoを使うとよいでしょう*7:ちなみに筆者は机の下に寝かせています*8:もしsetupの画面が乱れているようであれば、PuTTYの設定を見直してください。Blog|ブログを報告する。