VPSサーバーを独自ドメインで公開する
できたよ~~ https://estampie.work/
まだ何もないのですが設定メモ
このあとやること:MiniOでオブジェクトストレージ鯖構築、wordpress移行、Misskey個人鯖インストール
独自ドメイン取得
お名前.comにて取得しました。わ~い
VPSサーバー側設定
さくらのVPS 2Gプランを利用しています。
OS選択でUbuntu server 22.04 LTSをインストール、以下ざっくり設定
セキュリティ設定
先にサーバーのパケットフィルターをポート変更先に設定しておくこと
初手アップデート
sudo apt update
sudo apt -y upgrade
sudo timedatectl set-timezone 'Asia/Tokyo'
公開鍵認証
ホストOSで生成する場合。.sshフォルダのパーミッションは適切に…
秘密鍵をクライアント側に設定したあとはリモート操作していきます
mkdir .ssh
sudo chmod 700 .ssh
cd .ssh
ssh-keygen -t ed25519
sudo cat id_ed25519.pub >> authorized_keys
sudo chmod 600 authorized_keys
sudo rm id_ed25519
ファイヤーウォール設定
Nginxインストール後はsudo ufw allow 'Nginx Full
でhttp/httpsアクセスも追加
さくらのパケットフィルターでもポート開放設定をしておく
sudo ufw allow 22
sudo ufw enable
ポート番号はSSHポート変更先のものも追加しておく(ポート変更完了後22番を削除)
SSHポート変更/パスワード認証の無効化
SSHを22番ポートから変更し、公開鍵認証以外を無効に
別ウインドウで接続成功するまでは危ないので接続を切らないこと
sudo vi /etc/ssh/sshd_config
sudo systemctl restart sshd
#Port 22
を変更するPasswordAuthentication no
,PubkeyAuthentication yes
AuthenticationMethods publickey
を追加
PAM設定
ログイン試行回数に対してアクセス制限
SSH接続でログインの失敗回数によりアカウントをロックする方法 など参照
自動アップデート&再起動設定
セキュリティ絡みの自動アプデはデフォルトでONになっているが再起動はされないため、再起動が必要なセキュリティアップデートがある場合5:00に再起動させる
sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "05:00";
fail2ban導入
主にSSH以外のアクセスに関して対策 Nginxなどの設定はぐぐりつつ
apt install fail2ban
SSH接続のアクセス許可をホストで設定
hosts.allowとhosts.denyで接続元に対して許可を設定
sudo vi /etc/hosts.allow
sshd: (VPS鯖のIP)
sshd: .example.com
sshd: 127.0.0.
sshd: (自分のIP)
sudo vi /etc/hosts.deny
sshd: ALL
Let’s Encryptの証明書発行
certbotをインストールして証明書の自動取得をする
先にパケットフィルター、ufwなどでNginxのポートが開放されていることを確認する
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d blog.example.com -d m.example.com
自動インストールが効かなかった場合は手動で/etc/nginx/sites-available/defaultにSSL設定を追記してあげる
.well-knownディレクトリがhttpsリダイレクトされてしまうとCDNが邪魔して証明書の自動更新が効かないらしいのでこちらはhttp通信で受けるようにする
server {
listen 443 ssl;
server_name example.com;
ssl_certificate Let’s Encryptの証明書.pem;
ssl_certificate_key Let’s Encryptの鍵.pem;
// ~~ 略 ~~
server {
listen 80;
server_name example.com, blog.example.com, m.example.com;
location ^~ /.well-known {
root /var/www/html;
try_files $uri =404;
}
location / {
return 301 https://$host$request_uri;
}
}
sudo nginx -t
sudo systemctl restart nginx
証明書自動更新
Let’s Encryptは3ヶ月で期限が切れるので、cronを使用して毎月自動で証明書を更新&Nginxリスタート
sudo crontab -e
00 04 01 * * certbot renew && systemctl restart nginx
CDN設定
ネームサーバー設定
お名前.comにてさくらのVPSのネームサーバーを登録
さくらの管理画面でゾーン設定をしておく
反映したらサイトを確認
CDN設定
Cloudflareに登録し、サイトのURLを突っ込んで設定していく
お名前.comのコントロールパネルでネームサーバーを変更
httpsリダイレクトは自鯖でするためオフにしておく
感想
ざっくり。