スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

CentOS7サーバー(さくらVPS)でssh公開鍵認証を使う

CentOS7に入れ替えていきなりLEMP環境整えたりCMS入れたりなんやかんややってましたが、最低限のセキュリティ対策はしときたいですよね(いまさら

というわけで、ssh接続を公開鍵認証に変えて、ユーザーの制限かけて、あとポートも変更してみましょう。ちなみにクライアントの方はLMDE201403。なので普通に端末からssh するとつながる感じですね。






1.パスワード認証をやめて公開鍵認証に変更する
何度かやってるんだけどいつもやってるわけじゃないので忘れちゃいますね。
sshでデフォルトポート変更& ssh-keygenで鍵生成
さくらVPSの初期設定

SSH接続の設定変更方法
鍵認証~公開鍵の登録とsshd_configの設定

・鍵ペアは接続側、サーバー側どちらで生成してもよし。
・id_rsaは接続側、id_rsa.pubをサーバー側のそれぞれ~/.ssh以下に配置して権限設定。
・ /etc/ssh/sshd_configを書き換えて公開鍵認証にする。

1−1.鍵ペア生成
今回はクライアントの方で生成。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tmin/.ssh/id_rsa): /home/tmin/.ssh/sakura_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tmin/.ssh/sakura_id_rsa.
Your public key has been saved in /home/tmin/.ssh/sakura_id_rsa.pub.
The key fingerprint is:
b4:bd:1d:09:47:7a:72:5d:88:83:e4:bc:cf:04:1f:1c tmin@tmin-pc
The key's randomart image is:
+--[ RSA 2048]----+
| ...E. ..|
| o.+oo.. |
| . B *.. |
| . o X o |
| S o = |
| * . |
| . + |
| |
| |
+-----------------+


id_rsaは他の差バーへの接続で作っちゃってたので、ここでディレクトリと鍵の名前打ち込んで別名で作りましたが、初めてやる人は普通にそのまま作ればいいと思います。

1ー2.id_rsaの権限変更とpubの転送と権限変更
まずはクライアント側。

$ chmod 600 .ssh/sakura_id_rsa
$ scp .ssh/sakura_id_rsa.pub サーバーIP:~/


サーバー側にログインして.sshディレクトリ作って鍵の名前変えて権限かえて

$ mkdir .ssh
$ mv sakua_id_rsa.pub .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys


クライアントの~/.ssh/(700)にid_rsa(600)、サーバーの~/.ssh(700)にid_rsa.pub(600)があるはずです。
これで鍵使う準備が出来ました。

1−3.sshの設定ファイル書き換え
サーバー側のsshの設定ファイルを書き換えて、パスワード認証から公開鍵認証にかえます。ついでにポートの変更とか、rootログイン禁止とか、ユーザーを指定するとか色々やってみます。

$ sudo emacs /etc/ssh/sshd_config


Port 22 →Port 22022 (ポート変更)

PermitRootLogin no (rootログイン禁止)

PubkeyAuthentication yes (公開鍵認証を許可(ssh2のみ))

AuthorizedKeysFile .ssh/authorized_keys (公開鍵のファイルへのパス)

PasswordAuthentication no (パスワード認証拒否)

PermitEmptyPasswords no (空パスワード禁止)

AllowUsers tmin (接続許可ユーザー指定)

最後のやつだけ書き加えでしたね。ポートのところに注意書きとして

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER


などと不安げなことが書いてあります。ので安全に行きたい方は、ポート変更は後回しにして他の設定だけ書き換えて鍵認証できること、rootログインできないこと、パスワードログインできないことなど、設定項目がちゃんと反映されてるのを確かめてからのほうがいいかもです。
sshd再起動

$ sudo systemctl restart sshd



2.ポート変更とかSELinuxのアレとかfirewallとか
ポートの変更自体はさっきの /etc/ssh/sshd_config でまず指定します。22じゃなければ大分減るらしいんだけど、10000南蛮までがポートスキャン対象って話も色々調べてたら見かけたので10022は避けてみました。いやーでもポートスキャンかけるくらいならけっこうな範囲調べられそうな気もするけど。

設定ファイルでのポート変更

$ sudo emacs /etc/ssh/sshd_config


Port 22 →Port 22022 (ポート変更)

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER


もしSELinux使っててポート変えたいなら、 semanage port -a -t ssh_port_t -p tcp #PORTNUMBER 走らせてSELinuxに変更をおしえてあげなきゃいけないよ、って。

$ sudo semanage port -a -t ssh_port_t -p tcp 22022
sudo: semanage: コマンドが見つかりません


入ってないじゃん。。。
CentOS 7 で sshd のポートを変更する(firewalld, SELinuxの設定)
CentOS 7 で sshd のポート番号を変更する
semanage自体は policycoreutils-pythonというパッケージに入っているのでインストール。

$ sudo yum install policycoreutils-python


改めてsemanageでポート変更をおしえて(一応ここでsshd再起動して)確認。

$ sudo semanage port -a -t ssh_port_t -p tcp 22022
$ sudo systemctl restart sshd
$ sudo semanage port -l |grep 22022
ssh_port_t tcp 22022, 22


もう一個確認

$ ss -t -l -n
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22022 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::22022 :::*


一応これでつながるはずだけど・・・Firewall有効にしてる場合はさらに設定が必要。

3.Firewallがなんかしてるかも
まだFirewallがあるんですね。
まずは現状確認。iptablesが動いてたら止める、自動起動からも外す、firewalldの状況を確認。

$ systemctl |grep iptable
$ systemctl |grep iptables
$ systemctl list-unit-files -t service | grep iptables
$ systemctl |grep firewalld
firewalld.service loaded active running firewalld - dynamic firewall daemon


うちの環境ではiptables関係はなんも入ってなかったっぽいです。firewalldは動いていますね。
/usr/lib/firewalld/services/以下にxml形式でサンプル設定ファイルがあり、これを/etc/firewalld/services/以下に配置することにより設定が可能とのこと。

$ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
$ sudo emacs /etc/firewalld/service/ssh.xml



<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communi\
cations. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server pac\
kage installed for this option to be useful.</description>
<port protocol="tcp" port="22022"/>
</service>


ポートが22になってると思うので、今回は22022に書き換えて保存。
firewalldは設定読み込んで--list-allで確認。あと一応sshd再起動。

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

$ sudo systemctl restart sshd.service



4.動作確認
基本的には $ ssh -p 22022 IPでパスワード無しでつながればそれで良いのですが。
オプションに-vつけるとpublickey使ってるか出してくれます。
サーバをセキュアにするために最低限やっておくべきOpenSSHの設定

$ ssh -p 22022 -v IP
OpenSSH_6.4, OpenSSL 1.0.1j 15 Oct 2014
(中略)
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Offering RSA public key: private2
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Offering RSA public key: tmin@tmin-pc
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).

(後略)


debug1: Authentications that can continue: publickey
ってのがあればとりあえずおっけー。
あとは

$ ps aux |grep sshd


とか

$ netstat -an|more


とか使ったりしてちゃんと設定が反映されていることを確認しときましょー。

最後になりましたが、この設定変更作業を行っている間に全部のリモート接続端末切っちゃってつながらないー、ってなるとかなり悲惨なことになるので、作業用に必ず一つ以上はずっとsshログインしたままで作業して、接続確認は別端末でやりましょう。
なんかSELinuxとかfirewalldとか結構めんどかったけど、おかげで少しネットワークに詳しくなれたような気がします。

関連記事
sshでデフォルトポート変更& ssh-keygenで鍵生成
さくらVPSの初期設定
関連記事
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

コメントの投稿

管理者にだけ表示を許可する
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。