2023/08/16※記事内に商品プロモーションを含む場合があります自宅サーバー(ラズパイ)とさくらのVPSで相互にバックアップをrsync+sshで行っています。自宅サーバはSSHをポート開放していないので、バックアップは自宅サーバからVPSに接続し行っています。今回、VPSを入れ替えを行ったので、rsync+sshでのバックアップのセキュリティ強化をしてみました。基本的なコマンドはこの様になっています。このコマンドではローカルにある/dataの内容をリモートの/backupにバックアップします。秘密鍵と公開鍵がペアになっており、ペアの公開鍵を、リモートの/home/【ユーザー】/.ssh/authorized_keysに登録する事で、秘密鍵が使える様になります。問題点このコマンドでは、パスフレーズが使えませんのでパスフレーズ無しの秘密鍵を使う事になります。この秘密鍵が漏れたら、第三者がSSHにアクセスできてしまい、sudoユーザーだったら、サーバのroot権限も奪う事が出来てしまいます。そこで、authorized_keysでオプションを追加する事で特定のコマンド(引数含む)しか実行出来ない様にする事でセキュリティ性を強化します。セキュリティ強化の方法まず、秘密鍵と、公開鍵のペアを作ります。サーバ上のopensshコマンドでも作れますが、ファイルのコピーが面倒なので、私はTeraTermで作っています。設定→SSH鍵生成(N)をクリックすると、SSH鍵生成画面になります。鍵の種類は、ED25519を使用しました。秘密鍵と、公開鍵を保存できます、この時、パスフレーズは必ず空にします。空のパスフレーズを使用しますか?と聞かれますが「はい」をクリックして、秘密鍵を保存します。公開鍵をリモートのauthorized_keysに登録します。authorized_keysは、ログインしているユーザーがuserなら/home/user/.ssh/authorized_keysにあります。公開鍵はこの様になっています。AAAAC3NzaC1lZDI1NTE5AAAAINI02aDQIFkju3lVgl0ruVC6SddV10g1fuLpS8hqeArsこれをviなどでコピーすればSSHでログインできてししまうので、この様にします。入れる事でrsyncしか実行出来なくなります。このままだと、何の引数もない”rsync”しか実行できないので後々修正します。authorized_keysは改行する事で複数の公開鍵を追加出来ます。私のVPSのauthorized_keysですが、一番上からSSH接続用でパスフレーズ有VPS→自宅サーバーへのバックアップ自宅サーバー→VPSへのバックアップテスト用となっています。user@remote_server:/backupを実行しますが、リモートで実行されるコマンドが分からないのでリモートで実行されるコマンドを取得します。上のコマンドを修正し、この様にします。user@remote_server:/backupこのコマンドを実行する事で、エラーにはなりますがデバッグ情報が表示されます。この中に、リモートで実行されるコマンドが確認できます。command:がリモート上で実行されるコマンドです。このrsyncから始まるコマンドをauthorized_keysのcommand=””のrsyncと入れ替える事でコマンドが実行できる様になります。ランサムウェアなどが怖いのでファイルが改ざんされている場合はバックアップを実行ない様にしました。ローカル、リモートともにwebサーバは稼働しているのでresponse.txtを作って、適当な文字列(BEAXJP)で保存。user@remote_server:/backupfiシェルスクリプトでこの様にする事で改ざんされている場合は、バックアップを実行しない様にしています。雑記ブログ、いじって楽しむブログを書いています。