Since 12/1/2007
Home > Linux > CentOS5 > リモートから操作をする設定

CentOS5 リモートから操作をする設定 - itochif.com

ここに記載する内容はSSHサーバーの構築[OpenSSH]とほぼ同じ内容になります。なぜ同じような内容のものを掲載しているのかというと、この「リモートから操作をする設定」ではOpenSSHを使用してリモートからアクセスできるようにするための設定を紹介していますが、その途中で、「サーバーを公開した後には行うべきではない事」を紹介しているからです。この「リモートから操作をする設定」はサーバーを公開する前に行う前提で掲載しています。

私は、サーバー機には普段モニタ等を接続しないので、Windowsの端末を使用してリモートから操作が出来るように設定をします。ここではOpenSSHを使用してリモートからアクセスが出来るように設定をします。リモートアクセスにはPuTTY(英語)の日本語化+αのPuTTY ごった煮版を使用します。

富士通

設定の方針

リモートからサーバーを操作できるようになるので、セキュリティを考慮した設定を行う必要があります。当サイトでは以下の点に注意して設定を行います。

  • アクセス出来る端末を制限する(IPアドレス単位で制御する)
    ※どこからでもリモートアクセスの試行を行わせないため
  • 公開鍵認証を行う
    ※本人しか持たない物を認証に使う事で成りすましを防ぐため
  • 管理用に作成した特定のユーザーのみリモートからのアクセスを許可する
    ※関係のないユーザーにまでアクセスを許可する必要がないため

GNOME端末を起動する

CentOS5 GNOME端末 GNOME端末を起動します。GNOME端末の起動は画面左上のメニュー[アプリケーション]->[アクセサリ]->[GNOME端末]を選択します。

秘密鍵と公開鍵を作成する

クライアント側の操作になります。
鍵を作成するためにPuTTY ごった煮版に含まれる[puttygen.exe]を使用します。

puttygen.exe puttygen.exeを実行します。

鍵の作成 [生成(G)]をクリックします。説明に出ているように、空白のエリア上でマウスを動かしまくります。

鍵の保存 マウスを動かし続けると、このような画面になります。[鍵のコメント(C)]、[鍵のパスフレーズ(A)]にそれぞれコメントとパスワードを入力します。ここで入力したパスワードはログインの時に必要になるので忘れないようにしてください。[パスフレーズの確認]にも同じパスワードを入力し、[秘密鍵の保存(S)]をクリックして秘密鍵を保存します。(仮に、C:\private.ppkとして保存します。)この保存した秘密鍵のファイルはSSHのログインの時に必要になるので、自分以外の人の手に渡らないように保管してください。また、OpenSSHのauthorized_keysファイルにペーストするための公開鍵(P)の値をテキストファイルに保存します。(仮に、C:\public.txtとして保存します。)

SSHクライアントの設定

クライアント側の操作になります。
PuTTY ごった煮版を使用します。

putty.exe putty.exeを実行し、左のメニューから[ウィンドウ]->[変換]をクリックし、[文字コードの設定(R)]をUTF-8(CJK)に変更します。

putty.exe 左のメニューから[接続]->[SSH]->[認証]をクリックし、[認証のためのプライベートキーファイル(K)]に先ほど保存した秘密鍵のファイルのパス(C:\private.ppk)を入力します。

putty.exe 左のメニューから[セッション]をクリックし、[ホスト名(またはIPアドレス)(N)]にサーバーのIPアドレス(192.168.10.2)を、セッション一覧(E)にわかりやすい名称(サーバー)を入力し、[保存(V)]をクリックします。

ファイアウォールの設定

サーバー側の操作になります。
ファイアウォールの設定で行ったiptablesの設定ではsshでの通信が破棄されてしまいます。 以下は[PuTTY]を使用して接続を行おうとした時の/var/log/messagesの内容です。

# /bin/grep DROP /var/log/messages
Mar  9 16:00:00 www kernel: [DROP DEFAULT] :IN=eth0 OUT= SRC=192.168.10.51 DST=192.168.10.2 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=55505 DF PROTO=TCP SPT=2138 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0
図1.ファイアウォールによって破棄されたsshの通信(抜粋)

これら通信を行うために上記ログから必要な情報を抜き出すと以下のリストになります。

  • 内向きの新規TCP通信(IN=eth0/SYN/PROTO=TCP)
  • 送信元IPアドレスはクライアントのIPアドレス(SRC=192.168.10.51)
    ファイアウォールの設定内でTRUST変数に指定しているIPアドレス
  • 宛先IPアドレスはこのサーバ(DST=192.168.10.2)
  • 宛先ポートは22(DPT=22)

ファイアウォールの設定で作成したシェルスクリプトに、この情報を元にして作成したiptablesコマンドを追記します。
※以下の行はすでにファイアウォールの設定に含まれています。該当行の先頭にある#をはずした物が以下になります。

# ----- メンテナンス用ホストからのssh接続を許可する
/sbin/iptables -A INPUT	-p tcp -i $IF1 -s $TRUST -d $IP1 --dport 22 -m state --state NEW -j ACCEPT
図2.「ファイアウォールの設定」に追記するコマンド

上記のコマンドを追記した後、以下のコマンドでパケットフィルタテーブルを更新します。

# /usr/local/sbin/iptables.sh
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]
ファイアウォールルールを適用中:                            [  OK  ]
チェインポリシーを ACCEPT に設定中filter                   [  OK  ]
iptables モジュールを取り外し中                            [  OK  ]
iptables ファイアウォールルールを適用中:                   [  OK  ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns     [  OK  ]
図3. パケットフィルタテーブルの更新

富士通

サーバーに公開鍵を送る

作成した公開鍵をサーバーに保存する必要があります。サーバーに公開鍵を移動する方法は、フロッピーディスクを使用しても他の方法を使用しても良いです。ここではSCPを使ってファイルの転送を行います。なお、SCPでファイルを転送するにはSSHサーバーが起動している必要がありますので、セキュリティを強化する途中ですが、一旦SSHサーバーを起動します。

サーバー側の操作になります。

# /sbin/service sshd start
sshd を起動中:                                             [  OK  ]
図4. SSHサーバーの起動

クライアント側の操作になります。
PuTTY ごった煮版に含まれる[pscp.exe]を使用してサーバーの/rootディレクトリに公開鍵(C:\public.txt)を転送します。Windowsのコマンドプロンプトを起動します。pscp.exeのファイルパスがC:\pscp.exeと仮定します。

C:\>C:\pscp.exe c:\public.txt root@192.168.10.2:/root
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y # yを入力
root@192.168.10.2's password: # サーバーのrootパスワードを入力
public.txt               | 0 kB |   0.2 kB/s | ETA: 00:00:00 | 100%
図5. サーバーに公開鍵を転送

サーバー側の操作になります。
転送が完了したので、SSHサーバーを停止します

#  /sbin/service sshd stop
sshd を停止中:                                             [  OK  ]
図6. SSHサーバーの停止

SSHサーバーの設定と起動

SSHサーバーの設定を行います。ここでは、以下の指針に合わせた設定を行います。

  • 管理用に作成した一般ユーザー(centadmin)でのみリモートからログイン出来る
  • Unixパスワード認証は行わない(鍵認証のみを行う)

サーバー側の操作になります。

# mkdir /home/admin/.ssh # centadminのホームディレクトリ以下に.sshディレクトリを作成
# mv /root/public.txt /home/admin/.ssh/authorized_keys # 転送した公開鍵ファイルを、.sshディレクトリにauthorized_keysというファイル名で移動
# chown -R centadmin.centadmin /home/admin/.ssh/ # .ssh以下のファイルの所有者をcentadminに変更
# chmod 0600 /home/admin/.ssh/authorized_keys # /home/admin/.ssh/authorized_keysファイルのアクセス権限を変更
# vi /etc/ssh/sshd_config
------------------------------ 次の行からsshd_configの中身
#       $OpenBSD: sshd_config,v 1.73 2005/12/06 22:38:28 reyk Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/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
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# 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_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
PermitRootLogin no # rootアカウントでのログインを許可しない
#StrictModes yes
#MaxAuthTries 6

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .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

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
#PasswordAuthentication yes # コメントアウトする
PasswordAuthentication no # パスワード認証を許可しない

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no


# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials 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 yes

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
#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 delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no

# no default banner path
#Banner /some/path

# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server

AllowUsers      centadmin # ログインをcentadminのみ許可する
------------------------------ sshd_config終了
# /sbin/service sshd start
sshd を起動中:                                             [  OK  ]
図7. SSHサーバーの設定と起動

インテルCentrino Duo搭載ThinkPad T60 [468x60]

接続できるかどうかを確認する

putty.exe 設定したSSHサーバーに接続できるかどうかを確認します。[putty.exe]を起動し、先ほど保存した設定を選択し、[読込(L)]をクリックし、[開く(O)]をクリックします。後は以下のサーバーからのメッセージに対して、正しい答えを入力します。

 

login as: centadmin # ユーザー名を入力する
Authenticating with public key "Comment"
Passphrase for key "Comment": # 鍵に設定したパスワードを入力する
Last login: Sun Mar  9 16:00:00 2008 from 192.168.10.2
[centadmin@www ~]$
図8. SSH経由でサーバーにログインできた

マウスコンピューター/G-Tune

再起動してもSSHDが起動するように設定する

上で起動したSSHサーバーは一時的に起動されたもので、システムが再起動されると再びサービスが停止してしまいます。システムを再起動しても自動的にサービスが起動しするように、chkconfigコマンドを使用して設定します。

# /sbin/chkconfig sshd on
# /sbin/chkconfig --list sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
図9. SSHサーバーのランレベルを変更

これで、安全にリモートからアクセスする設定が完了しました。

GIGABYTE製 ハイエンドデスクトップ 468x60

掲載日 3/09/2008