*

カゴヤVPSでDebian その2 (SSH設定)

投稿日:2014/12/08 最終更新日:2014/12/08

カゴヤVPS Debian wheezy 64bit でのSSH設定。
ユーザ作ってsudoをインストールしてrootログイン禁止して・・・みたいなごくごく普通の設定。

あとsshd_config変更して再起動したらssh接続できなくなる(Could not load host key:/etc/ssh/ssh_host_ecdsa_key)対策。

インスタンス作成からrootでSSHログインするまでの設定は以下。
カゴヤVPSでDebian その1 (SSH接続)

 

ユーザ作成

rootでログインするのは宜しくないので、ユーザを作り以後そちらから諸々の設定を行うようにする。
便宜上ユーザは「hoge」とする。

 

ディレクトリを作成。

mkdir /home/hoge

 
ユーザ作成してホームディレクトリを指定。

useradd -d /home/hoge hoge

 
パスワードの設定。

passwd hoge

パスワードの入力
パスワードの確認

 
ユーザとグループをhogeにしておく。
(グループは目的に応じて)

chown hoge:hoge /home/hoge

 

sudoのインストールと設定

毎度suコマンドで管理者権限を持っていては意味も薄れるので、sudoをインストールし設定する。

 

sudoのインストール。

apt-get update
apt-get install -y sudo

 
sudoの設定。
rootの設定の下にhoge ALL=(ALL) ALL を追記してやる。

visudo

root        ALL=(ALL) ALL
hoge        ALL=(ALL) ALL

 

作成したユーザのSSH設定(公開鍵認証)

ユーザhogeを作成し、sudoを使って色々作業できるようになった。
次にユーザhogeでSSH接続できるようになれば、もうよほどのことがない限りrootに用はなくなる。

 

ユーザhogeになる。

su - hoge

 
秘密鍵・公開鍵を作成する。
ここで入力するパスワードは”鍵のパスワード”になる。
ユーザのパスワードと被ると気持ち悪いのでやめよう。

ssh-keygen -t rsa

Enter file in which to save the key //そのままEnter
Enter passphrase (empty for no passphrase) //パスワード入力
Enter same passphrase again //パスワード確認

 
公開鍵をauthorized_keysに登録し、パーミッションを変更しておく。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

 

作成したユーザでSSH接続してみる

作成した秘密鍵、/home/hoge/.ssh/id_rsa をクライアント側に持ってくる。
クライアントがWindowsであればWinSCPで接続して拾ってくるのが堅いと思う。

 

WinSCPの設定も一応書いておく。

転送プロトコル:SCP
ホスト名:カゴヤVPSのインスタンス情報にあるIPアドレスを入力
ポート番号:22
ユーザ名:root
パスワード:公開鍵認証のため空欄

パスワード入力欄の下にある「設定」をクリック。
SSH → 認証からroot用の秘密鍵を選択しOK。

ログイン時に秘密鍵のパスフレーズ(rootの)を入力するとログインできる。
ログイン後はhome → hoge → .sshと移動し、id_rsaをクライアント側にダウンロードすれば良い。

 

拾ってきた秘密鍵をPuTTYで使う.ppkファイルにする。

PuTTYgenを起動し、読込 から id_rsaを読み込む。
デフォルトでは.ppkしか表示されないので、「全てのファイル (*.*)」にしてid_rsaを読み込もう。

読み込めるとパスフレーズを入力される。
ここではid_rsa作成時に入力したパスフレーズを入れよう。

入力できると既にパスフレーズが入力された状態になっているので、そのまま「秘密鍵の保存」から保存すればよい。

 

秘密鍵読み込み時に以下のエラーがでた場合、スナップショット版のPuTTYgenを使う必要がある。

秘密鍵を読み込めませんでした。
(ciphers other than DES-EDE3-CBC not supported)

スナップショット版のPuTTYgenはここで拾った。
http://tartarus.org/~simon/putty-snapshots/x86/puttygen.exe

 

PuTTYで使う秘密鍵が出来たらユーザでログインテストする。
ここまで特に変わったことはないので無事にログインできるはず。

PuTTY側の設定については一度書いたので以下のURLを確認してほしい。
カゴヤVPSでDebian その1 (SSH接続)

 

sshd_configの設定(ロードするHostKeyの確認)

カゴヤVPSにDebian 7 64bitを入れて、特に設定も変えないままにsshdを再起動(もしくはsshd_config変更→再起動)したらSSH接続できなくなる。

その際コントロールパネルからsshdの再起動コマンドを飛ばすと以下のエラーが出る。
Could not load host key:/etc/ssh/ssh_host_ecdsa_key

これは見ての通りホストキーが読めないよ!というエラーで、なるほど、/etc/ssh 内を見てもssh_host_ecdsa_keyは存在しない。

もし存在する場合はこの設定は不要になるが、万が一もあるのでsshd_configがロードしているHostKeyが/etc/ssh内にあるか確認しておくと安心だ。

後述するport変更やrootログイン禁止設定時までこれに気づかなかった場合、無慈悲なインスタンス初期化をするハメになる。
まずはここだけ確認しておきたい。

 

sshd_config を開き、「HostKey /etc/ssh/ssh_host_ecdsa_key」行をコメントアウトする。
続けてport変更なども行うのであればsshdの再起動はしなくても良い。

sudo vi /etc/ssh/sshd_config

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key //コメントアウトする

 

SSHで使用するportを変更する(sshd_config)

デフォルトで使用されているport22は真っ先に攻撃を受けるportなのでこれを変更する。
公開鍵認証となっているので22でも構わないとも言えるが、いくら金庫が頑丈だからと言ってわざわざ軒先に置いておく事はない。

この記事を書いている2014年12月08日現在、カゴヤVPSではPort 49152 から 65535 が自由に使えるportとなっている。

今回の例ではport:50000 として書くが、使用が許されているportで他と被っていなければ何でも構わない。

 

portを変更する際にはsshd_configを開き、Port 22を任意のportに変更する。
sshdの再起動はまだ行わない。

sudo vi /etc/ssh/sshd_config

# What ports, IPs and protocols we listen for
Port 50000

 

SSHで使用するportを変更する(port開放)

SSHで使用するportを開けておかないと、port変更後にサーバから締め出されることになる。
考えてみれば当たり前なんだけど、前述した「Could not load host key」のエラーでSSH接続できなかった時とタイミングが被ってしまった為、かなりportが盲点になっていてたどり着くまで時間が掛かった。

やはりデフォルト設定ではPort22がACCEPTされているので、変更後のPortもACCEPTしてあげよう。

 

どうせ後ほど使うので、iptables-persistentをインストールした。

sudo apt-get install iptables-persistent

 
/etc/iptables/rules.v4 のバックアップを取ってから編集。
iptablesの中身は書きたくないので参考程度に。これで動く。

cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak
sudo vi /etc/iptables/rules.v4

*filter

# Policy
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT

# Accepts all established inbound connections //コネクション済みのパケットを許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 //ローカルネットワークからの接続を許可
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 -j ACCEPT
-A INPUT -p udp -s 192.168.0.0/16 -j ACCEPT

# Port
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 50000 -j ACCEPT

 
設定の反映と確認。

sudo service iptables-persistent start
sudo iptables -L

 

# Port の所に開放するPortを書いたのだけど、SSHやPOPなどのPortに関しては本来hashlimitなどをつけた方が良い。
しかしどのみちfail2banを導入するのでここは暫定で。

Port 22もACCEPTしてるのは現状Port22で繋いでるから設定の反映でどうなるか怪しかった為。
新しいPortで無事に接続が出来たらこのPort22の行は消さないといけない。

httpサーバを導入した時などは、Port80をACCEPTしてやらないと外部から見ることが出来ない。
中身を全部公開したくはないので、良くわからなかったら「Debian iptables」等で検索して欲しい。

 

何はともあれ、設定の確認でPort 50000(sshd_configで指定したPort)がACCEPTされていたらsshdを再起動しても締め出されることはなくなる。
再起動後にPuTTYのPortを22から変更後のPortに変えて再度接続してみよう。

sudo /etc/init.d/ssh restart

 

SSHでrootのログインを禁止する

新しいユーザ、新しいPortで無事接続できるようになったら、rootでのログイン自体を禁止してしまおう。

sshd_configを編集する。
PermitRootLogin を without-password から no に。

sudo vi /etc/ssh/sshd_config

PermitRootLogin no

 
sshd再起動

sudo /etc/init.d/ssh restart

 

とりあえず諸々の設定はここまで。
割と急いで書いているので判らない所があったらコメントにて聞いてください。

 

PCで戦うファイターにおすすめ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 1 follow us in feedly

関連記事

no image

カゴヤVPSでDebian その3 (MySQL設定)

カゴヤVPS Debian wheezy 64bit でのMySQL設...

記事を読む

no image

カゴヤVPSでDebian その1 (SSH接続)

自宅サーバ、知人のハイスペ自宅サーバ、レンタルサーバと持っているが、ち...

記事を読む

新着記事

no image

【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

記事を読む

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

記事を読む

no image

MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

記事を読む

no image

WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

記事を読む

no image

WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

記事を読む

コメント/トラックバック

トラックバック用URL:

この投稿のコメント・トラックバックRSS




管理人にのみ公開されます

no image
【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

no image
MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

no image
WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

no image
WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

→もっと見る

PAGE TOP ↑