サーバたるものなるべく正確な時刻を刻みたいもの。そこでNTPを導入してみました。
今時のサーバではセキュリティを考えてTelnetやFTP、rloginなどは出来ないようにしておくのがベターです。
これらのサービスは起動しないようにしましょう。
で古風な自分としては万が一の際にシリアルコンソールが使えると良いなぁなどと思って、今時シリアルケーブルを買い漁ったりしてしまったのですが、シリアルポートの無いPCですし、ノートPCなんだからキーボードも画面も付いているし、意味が無かったです。
それでは万が一のちょっと手前で他端末から操作できるようにするにはどうしましょう。少なくともファイル転送などしたいですし。
そこでSSHを導入してSFTPも使えるようにしたいと思います。(大雑把に言って暗号化Telnet、暗号化FTPです。)
FreeBSDのInstall時にSSHを使うか?と聞かれていますのでそこでYesとしていれば使える状態にあります。使える状態になければ/usr/sbin/sysinstallを実行して使える状態にします。
SSHで使用できるターミナルエミュレータをインストールします。ここではUTF-8 TeraTerm Pro with TTSSH2を使わせて頂きました。(TeraTermのSSH版です)
インストールしたら実行して[設定]-[SSHキー生成]メニューを開きます。RSAでログインしたいユーザとパスフレーズ×2(サーバのログインパスワードとは無関係。鍵作成のためのフレーズ)を入力し、秘密鍵と公開鍵を作成します。
公開鍵はサーバのログインしたいユーザの~/.ssh/authorized_keysに保管する。(ホーム配下に.sshディレクトリを作ってauthorized_keysというファイル名で保管)
まだ他端末からアクセスする経路を持っていない場合はこれが初めての他端末からのアクセスになります。最初だけチャレンジレスポンス認証でログインして、eeでauthorized_keysファイルを編集状態にしてTeraTermからファイル内容の転送ができるので流し込んで作成します。
なんとWindowsMobileマシンからでもSSHできるんですね。ここではPocketPuTTY 日本語対応版を使わせて頂きました。
秘密鍵は上記のUTF-8 TeraTerm Pro with TTSSH2と違う生成方法みたいです。PuTTYGenを使って秘密鍵を作成します。(パスフレーズは同じものを使用します。同じ公開鍵を使うために。)
ここではWinSCPを使わせて頂きました。解説サイトとしてWinSCP Japanese siteを参考にさせて頂きました。
インストールしたら秘密鍵は上記PuTTYGenで作成した(WindowsMobileで使用するのと同じ)秘密鍵を使用します。(パスフレーズは同じものを使用します。同じ公開鍵を使うために。)
さて、そのままではせっかく暗号化しててもセキュリティ的には殆ど向上しません。なぜなら、上記で「チャレンジレスポンス認証でログイン」ってありましたね。これはどの端末からでもアクセスできてしまいます。盗聴のリスクは減っても不正アクセスのリスクは全く減りません。不正アクセスされないように設定を変更する必要があります。
今回セキュリティ強化するのは
設定ファイル/etc/ssh/sshd_configの終端に以下を追加します。
AllowUsers 許可するユーザ名
ChallengeResponseAuthentication no
X11Forwarding no
MaxAuthTries 思考制限回数(この回数分パスフレーズを間違えると遮断されます。)
LoginGraceTime 認証可能時間(認証作業にこの時間以上掛かると遮断されます。単位は何もつけなければ秒。)
Port xxxxx(他のサービスと被らないポートにしましょう。)
----- 【サーバ構築】 目次 -----