SSH の設定は、/etc/ssh/sshd_config を編集します。 このファイルを編集する事により、アクセス制限や認証方法を変更する事ができます。 以下に、 sshd_config の内容と編集箇所を示します。 行頭の「#」は、その行がコメントアウトされている事を表します。
# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value.
設定ファイルについて書いてあります。
#Port 22 #Protocol 2,1 #ListenAddress 0.0.0.0 #ListenAddress ::
- Port
- SSH が接続を受けるポート番号。(default:22)
- Protocol
- サーバ側でサポートするSSH のバージョン。(default:1,2) バージョン1と2のどちらで接続するかはクライアントが指定しますが、ここで受け付けるバージョンを限定する事により接続を限定できます。 例えば、バージョン2のみに限定する場合には、この行のコメントアウトを削除し、「Protocol 2,1 → Protocol 2」とする事でバージョン1の接続を拒否できます。
- ListenAddress
- SSH が接続を受け付けるローカルアドレス。
# HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key
- HostKey
- SSH で使われる秘密鍵が格納されるファイル。 バージョン1ではssh_host_key 、バージョン2ではssh_host_rsa_key 及びssh_host_dsa_key が使用されます。
# Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 1h #ServerKeyBits 768
- KeyRegenerationInterval
- バージョン1で鍵を再生成する間隔。(default:3600秒)
- ServerKeyBits
- バージョン1で使われる鍵のビット数。(default:768bit)
# Logging #obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO
- SyslogFacility
- sshd が出力するログメッセージの分類コード。(default:AUTHPRIV)
- LogLevel
- sshd が出力するログメッセージの冗長性レベル。
# Authentication: #LoginGraceTime 2m #PermitRootLogin yes PermitRootLogin no #StrictModes yes #MaxAuthTries 6
- LoginGraceTime
- ログインの際の猶予時間。(default:120秒)
- PermitRootLogin
- root のログイン制限。(default:no) root がSSH でログインできる状態は非常に危険なので、許可すべきではありません。
- StrictModes
- ログイン前にユーザのディレクトリやファイルのパーミッションのチェック。(default:yes)
- MaxAuthTries
- 1接続あたりの最大認証回数。(default:6)
#RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys
- RSAAuthentication
- RSA 認証の許可。(default:yes) このRSA 認証はバージョン1のみ対応です。
- PubkeyAuthentication
- 公開鍵認証の許可。(default:yes) このRSA 認証はバージョン2のみ対応です。
- AuthorizedKeysFile
- 認証に使われる公開鍵のファイル。(default:.ssh/authorized_keys)
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes
- RhostsRSAAuthentication
- RSA 認証が成功した時、rhosts を使った認証を許可。(default:no) この項はバージョン1のみ対応です。
- HostbasedAuthentication
- 公開鍵認証が成功した時、rhosts を使った認証を許可。(default:no) この項はバージョン2のみ対応です。
- IgnoreUserKnownHosts
- 上記2つの認証において、~/.ssh/known_hosts を使用。(default:no)
- IgnoreRhosts
- 上記2つの認証において、~/.rhosts 及び~/.shosts を使用。(default:yes)
# To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no
- PasswordAuthentication
- パスワード認証を許可。(default:yes) パスワード認証を拒否したい場合には、コメントアウトを削除して「yes → no」にします。
- PermitEmptyPasswords
- 空のパスワードを許可。(default:no)
# Change to no to disable s/key passwords #ChallengeResponseAuthentication yes
- ChallengeResponseAuthentication
- チャレンジレスポンス認証の許可。(default:yes)
# Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no
- KerberosAuthentication
- ケルベロス認証の許可。(default:no)
- KerberosOrLocalPasswd
- ケルベロス認証が失敗した場合のローカルパスワード認証許可。(default:yes)
- KerberosTicketCleanup
- ログアウト時にケルベロス用キャッシュの自動消去。(default:yes)
- KerberosGetAFSToken
- ケルベロスでAFS トークンを取得。(default:no)
# GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes
- GSSAPIAuthentication
- GSSAPI 認証の許可。(default:no)
- GSSAPICleanupCredentials
- ログアウト時にGSSAPI 用キャッシュと証明書の自動消去。(default:yes)
# Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication mechanism. # Depending on your PAM configuration, this may bypass the setting of # PasswordAuthentication, PermitEmptyPasswords, and # "PermitRootLogin without-password". If you just want the PAM account and # session checks to run without PAM authentication, then enable this but set # ChallengeResponseAuthentication=no #UsePAM no
- UsePAM
- PAM(Pluggable Authentication Module)認証の許可。(default:no)
#AllowTcpForwarding yes #GatewayPorts no #X11Forwarding no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation yes #PermitUserEnvironment no #Compression yes #ClientAliveInterval 0 #ClientAliveCountMax 3 #UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10
- AllowTcpForwarding
- TCP 転送の許可。(default:yes)
- GatewayPorts
- ポート中継の許可。(default:no)
- X11Forwarding
- X11転送の許可。(default:yes)
- X11DisplayOffset
- X11が転送するディスプレイ番号。(default:10)
- X11UseLocalhost
- X11 をlocalhost のみ許可。(default:yes)
- PrintMotd
- ログイン時に/etc/motd ファイルの内容を表示。(default:yes)
- PrintLastLog
- ログイン時に前回ログインした日付と時刻を表示。(default:yes)
- TCPKeepAlive
- TCP キープアライブメッセージを送信する。(default:yes)
- UseLogin
- ログインでlogin プログラムを使用。(default:no)
- UsePrivilegeSeparation
- root 権限の分離。(default:yes)
- PermitUserEnvironment
- ユーザの環境変数変更を許可。(default:no)
- Compression
- 圧縮を許可。(default:yes)
- ClientAliveInterval
- クライアントの接続チェック間隔。(default:0(チェックしない))
- ClientAliveCountMax
- クライアントの接続チェック最大カウント数。(default:3)
- UseDNS
- DNS を使用してリモートホスト名を確認。(default:yes)
- PidFile
- sshd のプロセスID を格納するファイル。(default:/var/run/sshd.pid)
- MaxStartups
- sshd が認証成功までの接続を受け付ける最大数。(default:10)
# no default banner path #Banner /some/path
- Banner
- 認証が許可される前にユーザに表示されるファイル。(default:バナーなし)
# override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server
- Subsystem
- サブシステムを設定します。 サブシステム名と要求に対して実行されるコマンドを定義します。 ここでは「sftp」が定義されています。
設定後は、デーモンを再起動して反映させます。
# /etc/rc.d/init.d/sshd restart
設定項目はたくさんありますが、実際に編集するのはそれほど多くありません。 最近は、ほとんどプロトコルバージョン2が使われるので、バージョン1に関する項目は禁止に設定できます。 高度な設定もいくつかありますが、最低でも以下の設定は行うようにします。
- プロトコルバージョンを2に限定
- root ログインの禁止
- パスワード方式の許可/禁止
- 接続ユーザを制限
- 最大試行回数を制限