スポンサーサイト

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

Sponsored Link

ssl証明書の更新(さくらVPS+RapidSSL)

ssl証明書の更新をした。
年一回とかすぐ忘れるので備忘。

証明書はrapid-sslを使用。
対象サーバーはさくらVPSのCentOSでNginx。

1.(必要なら)opensslで秘密鍵とcsrを生成。
必要ならってのは使いまわせるから。更新ならば前のをそのまま使っても良い。

秘密鍵生成

$ cd /etc/pki/tls/certs
$ sudo openssl genrsa -des3 -out server.key 2048
Enter pass phrase for server.key: ぱすわーど



csr生成

$ sudo openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key: ぱすわーど
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:県
Locality Name (eg, city) [Default City]:市町村
Organization Name (eg, company) [Default Company Ltd]:名前
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ドメイン
Email Address []:メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:



ちゃんと作られてるか確認。

$ sudo cat server.key
$ sudo cat server.csr




2.申請
CSR を Rapid-SSL.jp に送信して、証明書発行を申し込む。
CSR 生成時に入力した情報を Rapid-SSL.jp でも入力する。

メール認証後、SSL サーバー証明書がメールで送られてくるので、
サーバーに設置する。

/etc/nginx/ssl/以下に鍵、証明書を設置。
鍵は上記opensslで作った時のserver.key→適宜リネーム
合体証明書はRapidsslからのメールに添付されたSSLサーバ証明書(X.509形式)と中間証明書を結合しhoge.pemとする。

3.更新

1で作成した鍵とcsrをnginxの適切なディレクトリに配置。

$ sudo cp /etc/pki/tls/certs/server.key /etc/nginx/ssl/
$ sudo cp /etc/pki/tls/certs/server.csr /etc/nginx/ssl/



$ sudo emacs /etc/nginx/ssl/hoge.pem


SSLサーバ証明書(X.509形式)
中間証明書(INTERMEDIATE CA)
の2つをそのままコピペ。

$ sudo cat /etc/nginx/ssl/hoge.pem
-----BEGIN CERTIFICATE-----
SSLサーバ証明書(X.509形式)の文字列
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中間証明書(INTERMEDIATE CA)の文字列
-----END CERTIFICATE-----



※参考
NginxのSSL証明書のあたり

server {
listen 443;
server_name hoge.net;
ssl on;

ssl_certificate_key /etc/nginx/ssl/server.key;

ssl_certificate /etc/nginx/ssl/server.pem;

ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;



というわけで鍵とpemファイルが適切に配置されてればおっけ。

4.サーバーに反映
Nginxをテスト反映。

$ sudo nginx -t
Enter PEM pass phrase: ぱすわーど
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful



鍵、申請に使ったCSR、証明書の整合性が取れてればぱすわーど入れたあとにsuccessful って出るはず。
ちなみに申請時に使ったcsrと別の使ってしまったらエラーが出て大変だった。

Nginx起動時にパスを入れなくていいように自動化。

$ sudo openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:ぱすわーど
writing RSA key



もっかいNginxてすと

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


おっけー。

あとはNginx再起動なりリロードなり。

$ sudo service nginx reload



実際のサイトのSSL使ってるページに行って証明書表示してみましょう。
期限とか更新したものに変わってればおっけーです。

慣れたら数十分もあればできそう。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

sshの公開鍵認証を使ってパスワード認証を無効にする

セキュリティ上公開サーバーではやっとくべきだよねー。
とはいえ久々の作業でいくつか躓いたのでメモがてら手順と設定を。

今回はクライアントはWindows10(TP)のTeraTerm。サーバーはさくらVPSのCentOS(6.7)。

1.クライアント側で鍵ペアを作成する
TeraTermの場合は設定>SSH鍵生成から。
ダイアログが開くのでRSAにチェック、ビット長は2048。
パスフレーズは入れても入れなくてもよいけれども、パスフレーズ入れて生成すると公開鍵+パス認証になってよりセキュアかもしれない。
コメントはご自由に。なにも入れないとユーザー名+PCnameになる模様。

できた鍵ペアはどっかユーザー領域に保存。(Teratermのプログラムフォルダに置きたかったけど、直接やると権限の問題で保存できない模様。)

ちなみにクライアントLinuxで鍵を生成するには

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tmin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): ←好みのパスフレーズ
Enter same passphrase again:
Your identification has been saved in /home/tmin/.ssh/id_rsa.
Your public key has been saved in /home/tmin/.ssh/id_rsa.pub.
The key fingerprint is:



2.公開鍵をサーバーに送ってリネーム
できた鍵ペアのうち公開鍵のほうをサーバーに転送。
TeraTermでは、普通に今まで通りサーバーにログインした状態でコンソールのとこにドラッグ&ドロップでSCP転送ができます。
サーバーのほうで送られた鍵を確認。
/homeで $ ls してid_rsa.pubが存在するのを確認したら、指定のフォルダを作成して権限変えて移動。

$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub ./ssh/authorized_keys


.sshっていう隠しフォルダ作成、フォルダの権限を700に変更(←これしないとあとでsshd[30931]: Authentication refused: bad ownership or modes for directoryとかって怒られてログインできない)、.sshフォルダにid_rsa.pub(scpで送った鍵)をauthorized_keysとして保存。

3.sshの設定ファイル書き換え

$ sudo emacs /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm 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
(以下略


別に編集はnanoでもviでもいいのですけれども。

細かい設定項目の解説はここが詳しかった。SSH サーバの設定

今回は通常の平文パスワード認証を拒否、公開鍵認証のみ、rootログイン禁止にする、というごくごく初歩的な感じですが、個人公開サーバーならこれくらいでも?(ポート変更、指定ホスト以外のログイン拒否とかやったほうがいい場合もあるかとは思う。

というわけで、一応バックアップはとって設定をいじります。

$ cd /etc/ssh/
$ sudo cp sshd_config sshd_config.bac
$ sudo emacs sshd_config



configファイルの中で先頭に#がついてるのはコメントアウトなので、必要部分はコメントアウト消して設定を書き込みます。
PermitRootLogin no rootログイン禁止

PubkeyAuthentication yes ←公開鍵(RSA2)
AuthorizedKeysFile %h/.ssh/authorized_keys ←公開鍵置き場指定

PasswordAuthentication no パスワード認証によるログイン禁止

とりあえずこんなもんでしょうか。うまくログインできなかったり逆に禁止がきいてなかったらほかの項目も見てみましょう。デフォルト設定が軟化してたりするかもしれないし。(ほかにもいくつか書き換えた気が??

4.ssh再起動して動作確認
設定反映のため再起動

$ sudo service sshd restart


ここで今までの作業端末ははじかれないので、そのまま繋いどきましょう。これ切っちゃうと失敗してログインできなくなった時に大変です。(さくらのVPSならWeb上の仮想端末から何とかできなくもないですが)
「新しい接続」で同じサーバーにつなぎます。
今までと同じようにユーザーとパスワード入れてはじかれたらOK。
次にユーザー入れてパスワードを入れないで「RSA/DSAECDSA/ED25519鍵を使う」にチェック入れて、秘密鍵(最初に作ったid_rsaのほう)を選択して(鍵作るときにパスフレーズ入れてたらここでパスフレーズも入力して)、ログインできればOK。
最後にユーザーrootでrootパス入れて、これもはじかれればおk。

5.ちなログ
ちなみにsshのログは/var/log/secure。普通に出すと結構長いので、tailfとかで最後のほう見ればいいと思う。自分のIPとかでgrepかけてもいいけど。

$ sudo tailf /var/log/secure
Authentication refused: bad ownership or modes for directory /home/xxxx/.ssh (←これが上のほうで言ってた.sshの権限変更忘れたときのログ)



Failed password for root from 106.240.248.75 port 57927 ssh2
まぁずらっと見てくとこんな感じで同一IPから連続してログインしようとして失敗してるログがしばらく続いてる時間とかあったりするので、ちょっと長く見てみるのもいいでしょう。

今さらやっとこさこんな設定した僕が言えたこっちゃないですが、ssh抜かれるってのはサーバーを完全に乗っ取られるのと同義なので最低限の対策はしといた方がいいですね❗

関連記事
sshでファイル転送(scp)
sshでデフォルトポート変更& ssh-keygenで鍵生成
総合案内当ブログについて
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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。