sshdサーバの設定を変更して、より安全・便利に。

【連載】

にわか管理者のためのLinux運用入門

【第4回】sshdサーバの設定を変更して、より安全・便利に。

[2016/01/07 08:00]後藤大地 ブックマーク ブックマーク

sshdサーバを使ってみよう

SSHによるリモート・ログインは、サーバ管理においてほぼ必須である。そのため、最近のLinuxディストリビューションでは最初からOpenSSHのsshdサーバが有効になっていることが多い。その場合、大抵は最初からパスワード認証と公開鍵認証の2種類が有効になっており、アカウントがあればSSHを使ってログインできる状態になっている。

今回は、このsshdサーバの設定を変更して公開鍵認証のみを有効にする方法や、より使いやすくするための方法を紹介しよう。可能な限り安全な環境を作り上げ、セキュリティ・インシデントを全力で回避する。――最小限の労力で最大の効果を挙げるには、こうした地味な取り組みが大切なのだ。

設定ファイルを書き換える(汎用)

sshdの設定ファイルは、「/etc/ssh/sshd_config」にデプロイされていることが多い。このファイルは、各行が「項目 値」という形式で記述されており、これを書き換えてsshdを再起動すると、変更が反映される。

まず大前提として、rootではログインしないように次のような設定を記述しよう。


PermitRootLogin no

ほとんどの場合、すでに「PermitRootLogin」という項目があると思う。その値が「yes」になっていたら、これを「no」にすればよい(もしコメント・アウトされていたら、コメントを削除してから値を「no」にする)。

また、公開鍵認証でログインしたいので、その設定を有効にする。


PubkeyAuthentication yes

さらに、パスワード認証とチャレンジ・レスポンス認証は無効にしたいので、これらは次のように記述する。


PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

これで、ログインに関する設定は完了だ。

より使いやすくするための設定

ログインに関する設定を終えたら、今度はより使いやすくするための項目を設定しておこう。まず、DNSを切る。DNSを使用可能な状態にしていると、場合によってはログインできないケースに遭遇することがあるので、念のための設定だ。


UseDNS no

また、sshdはデフォルトではポート番号22で待機しているが、これを変更しておくとわずかながら攻撃されるリスクを下げることができる。下記のようにポート番号が記述してある個所があるので、空いているポート番号に変えておこう。


Port 22

ポート番号を変更しても、フルスキャンによってどのソフトウェアがどのポートを使っているかは判定されてしまうのだが、少しでも攻撃される可能性を下げられるに越したことはない。あえて既知のほかのポート番号に割り当てることもあるが、そのあたりはポリシーの話になる。

こうして/etc/ssh/sshd_configファイルを書き換えた後は「service sshd restart」というコマンドを入力すれば、sshdを再起動できる。もしserviceが存在しない場合には、「/etc/rc.d/sshd restart」あたりが使えると思う。

設定ファイルを書き換える(*BSD系)

*BSD(FreeBSD、NetBSD、OpenBSD)では、/etc/ssh/sshdconfigファイルを直接書き換えなくともsshdのオプションを設定できるようになっている。/etc/rc.confファイルに「sshdflags」という変数を設定し、そこに起動時に指定したいオプションを書いておけばよい。


sshd_enable="YES"
sshd_flags="-oPermitRootLogin=no -oUsePAM=no -oChallengeResponseAuthentication=no -oUseDNS=no"

*BSDでは、サーバの設定をこの/etc/rc.confファイルに記述するケースが多く、このファイルを見るとそのサーバで何が動いているのかがわかる。


# ps axw | grep /usr/sbin/sshd | grep -v grep
13977  -  Is       0:00.00 /usr/sbin/sshd -oPermitRootLogin=no -oUsePAM=no -oChallengeResponseAuthentication=no -oUseDNS=no
# 

さらにこの方法では、「ps(1)」コマンドでsshdを調べた時に、指定されているオプションを確認できるという利点がある。加えて、/etc/ssh/sshd_configファイルを直接編集しないので、システム・アップグレードの際に設定が上書きされてしまうといった事故を避けられる点もメリットだ。

なお、OpenBSDでは/etc/rc.confではなく/etc/rc.conf.localに書く方法が推奨されている

設定の確認

公開鍵認証のみでログインしているかどうかは、SSHのデバッグ・オプションを有効にすると確認できる。以下に、参考までにデバッグ・オプション(-v)を指定した状態の出力を掲載しておく。


% ssh -v foo.bar.example.org
OpenSSH_6.6.1p1, OpenSSL 1.0.1p-freebsd 9 Jul 2015
debug1: Reading configuration data /home/daichi/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to xxxxxx [yyyyyy] port 22.
debug1: Connection established.
...略...
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey    ← これと
debug1: Next authentication method: publickey       ← これ。
debug1: Offering RSA public key: /home/daichi/.ssh/id_rsa.pem
debug1: Server accepts key: pkalg ssh-rsa blen 533
debug1: Authentication succeeded (publickey).
...略...
debug1: mux_client_request_session: master session id: 2
Last login: Sun Dec 20 18:13:46 2015 from 192.168.1.39  ← ログイン成功
FreeBSD 10.2-RELEASE-p7 (GENERIC) #0: Mon Nov  2 14:19:39 UTC 2015

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
# 

「Authentications that can continue: publickey」から、認証方式として公開鍵認証しか挙げられていないこと、「Next authentication method: publickey」から、公開鍵認証で認証していることが確認できる。もし、公開鍵認証以外も有効になっている場合、「Authentications that can continue: publickey,keyboard-interactive」のように、有効な認証方式が列挙される。

今回のおさらい

今回はおさらいは、こんなところだ。

  • sshdの設定を変更して公開鍵認証のみを使うように変更する
  • sshdの設定ファイルは、/etc/ssh/sshd_configファイル
  • *BSDの場合、/etc/rc.confファイルでも設定できる
  • sshdの再起動には、「service sshd restart」コマンドを使う
  • 使われている認証方式の確認には、「ssh -v」コマンドを使う

公開鍵/秘密鍵の生成方法と、サーバ/クライアントの設定については次回紹介しよう。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【特別企画】管理者にお馴染みの

【特別企画】管理者にお馴染みの"バックアップ問題"、Win/Linux混在環境 ...

地味ながらも面倒なうえ、ミスが許されないために精神的苦痛も伴うシステム管理作業。それがバックアップではないだろうか。コスト抑制のためLinuxを使って自力で構築したが、運用に関してもお金をかけられず、シェルスクリプトを組んでバックアップを行う。しかし、細かい作業にそれなりの人足をとられるため結果的にコストが嵩むうえ、実のところ正常にリストアできるかも怪しい。…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る