ブログ

  • SSL証明書の自動更新

    SSL証明書はすでにLet’s Encriptを利用できる。しかし、有効期間は90日間であるためCertbot を利用して自動更新する

    Certbotをcrontabで自動更新する
    $ sudo crontab –e

    ※ rootはインストール時の管理ユーザーに置き換える

    # crontabの書式

    # (行頭の # マークはコメント行を示す)

    # +———— 分 (0 – 59)

    # | +———- 時 (0 – 23)

    # | | +——– 日 (1 – 31)

    # | | | +—— 月 (1 – 12)

    # | | | | +—- 曜日 (0 – 6) (日曜日=0)

    # | | | | |

    # * * * * * 実行されるコマンド

    # HTTP”S”にするためのcertbotによるSSL証明書の更新(日曜日)

    0 1 * * 0 root certbot renew >>/var/log/certbot 2>&1

  • WinSCPのアクセスでsudo権限を与える

    sudo権限の設定
    $ sudo visudo

    ユーザー名 ALL=NOPASSWD: sftp-serverのパス

    パスが不明な場合は、以下のコマンドを実行して確認
    cat /etc/ssh/sshd_config | grep sftp

    WinSCPの設定

    「高度なサイト設定画面」で、左側のメニューから [環境] -> [SFTP] を選択

    右側にある「SFTPサーバ」欄に、先ほど設定したsftp-serverのパスの前に sudo を付けて入力

  • http->httpsのリダイレクト

    http通信をしようとした場合も強制的にhttps通信にして安全性を高める

    .htaccess の編集
    設定ファイルのバックアップ
    $ sudo cp /var/www/wp_agjppy4tj2/.htaccess /var/www/wp_agjppy4tj2/.htaccess.bk 
    .htaccess にhttp->httpsのリダイレクトを追記する
    $ sudo vim /var/www/wp_agjppy4tj2/.htaccess 

    </IfModule> の前に追記する

    wwwなしのhttpsのURLに統一

    #use https only
    RewriteCond %{HTTPS} off
    RewriteRule ^(.)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP_HOST} ^www.(.) [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

    Apacheの再起動
    $ sudo systemctl start httpd 

  • sshguard の導入

    SSHのpassword認証を禁止しても, 海外からの不正アクセス試行が高頻度で襲来し, 無駄にリソースが奪われてしまう。

    そのため, sshguardによって連続ログイン失敗で一定時間ブラックリスト入りとする。

    sshguard をインストール 

    通常のyumではインストール出来ないので、”–enablerepo=epel” でEPELを利用して”sshguard”をインストール

    $ sudo yum --enablerepo=epel install sshguard 
    sshguardの設定の書き換え
    $ sudo vim /etc/sshguard.conf

    3 回失敗で 3600 秒ブロック

    THRESHOLD=30 

    BLOCK_TIME=3600 

    DETECTION_TIME=3600 

    FILES=”/var/log/secure” 

    BACKEND=”/usr/libexec/sshguard/sshg-fw-firewalld” 

    自動起動設定
    $ sudo systemctl enable sshguard 
    起動

    $ sudo systemctl start sshguard 
    $ sudo systemctl status sshguard -l 
    $ sudo firewall-cmd --list-all 
  • EPELの導入

    エンタープライズLinux用の高品質な追加パッケージが提供される。 EPELはサードパーティ製のリポジトリのこと。今後の作業で各種ソフトインストールする際に利用する。普通に入れるとEPEL使用がデフォルトとなるようだが、それは無効化しておく。

    EPELのインストール
    $ sudo yum install epel-release 
    EPEL使用のデフォルトを無効化
    $ sudo yum-config-manager --disable epel 
    無効化の確認
    $ sudo yum repolist all | grep epel

  • セキュリティ設定

    SSH接続の設定変更(さくらVPS)

    TeraTermを利用して、ログイン方法をパスワード認証から公開鍵認証へ変更する

    https://manual.sakura.ad.jp/vps/support/technical/ssh-ch.html#id2
    さくらVPS推奨のセキュリティを設定する
    https://manual.sakura.ad.jp/vps/support/security/index.html

  • ユーザー設定

    root ユーザーでログインを可能にする
    [root]$ sudo passwd root
    ユーザーを追加する

    ユーザー名は”hogehoge”

    [root]$ sudo useradd hogehoge
    ユーザーのパスワードを設定する
    [root]$ sudo passwd hogehoge
    sudoを利用できるようにする
     [root]$ sudo usermod -aG wheel hogehoge

  • OSのアップデート

    Rocky linux 8 から 9 へアップグレードする
    スワップ領域の設定

    お借りしたVPSのメモリが1Gのため、アップデートに支障があるため、スワップ領域(1024MB)を設定する

    $ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
    $ sudo chmod 600 /swapfile 
    $ sudo mkswap -L swap /swapfile 
    swapファイルを動的に配置
    $sudo swapon /swapfile 
    

    設定を確認

    $ free -h

    以下のようにswapファイルが1Gできていることを確認

     total  used  free shared buff/cache available

    Mem: 767Mi 579Mi 64Mi  42Mi  280Mi   188Mi
    Swap: 1.0Gi    0B  1.0Gi

    再起動してもswapが有効となるようにする
    $ sudo vim /etc/fstab

    以下の行を追加する

    /swapfile  swap swap    defaults,noatime 0 0

    実働8サーバーのリポリトジを更新してパッケージを最新にする
    [root]# dnf upgrade --refresh
    事前に ”https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r” で最新のバージョンを確認し、最新バージョンの変数を設定する
    [root]# REPO_URL="https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r"
    [root]# RELEASE_PKG="rocky-repos-9.5-1.2.el9.noarch.rpm"
    [root]# REPOS_PKG="rocky-repos-9.5-1.2.el9.noarch.rpm"
    [root]# GPG_KEYS_PKG="rocky-repos-9.5-1.2.el9.noarch.rpm"
    公式リポジトリに無いパッケージを削除する
    [root]# dnf -y remove rpmconf yum-utils remi-release
    [root]# dnf -y remove rpmconf yum-utils epel-release
    不要なファイルを削除する
    [root]# rm -rf /usr/share/redhat-logos
    新たなリポジトリを追加する
    [root]# dnf install $REPO_URL/$RELEASE_PKG $REPO_URL/$REPOS_PKG $REPO_URL/$GPG_KEYS_PKG
    [root]# dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync
    Rocky linux9 をインストールする
    GPGキー確認の失敗というエラーが出てインストールできないので、既存の GPGキーを削除する
    GPGキーのIDを探す
    [root]# rpm -qa gpg*
    GPGキーを削除する
    [root]# rpm -e --allmatches gpg-pubkey-[REPOKEYID]
    Rocky linux9 の GPGキーをインストールする
    [root]# rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-9
    iptables-ebtables-1.8.5-11.el8.x86_64を削除する
    [root]# dnf remove iptables-ebtables-1.8.5-11.el8.x86_64
    改めて Rocky linux9 をインストールする
    [root]# dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync
    RPM データベースを再構築する
    [root]# rpm --rebuilddb
    再起動する
    [root]# reboot
    dnfのアップデート
    [root]# dnf update
    dnf update で競合エラーが出る場合

    問題 1: 競合するリクエスト
    – module(platform:el8) が提供されませんモジュール httpd:2.4:8080020230922231308:fd72936b.x86_64 に必要です

    [root]# dnf module reset httpd
  • さくらVPSのOS再インストール

    これまで使用していた CentOS 7 が2024/6/30でサポート切れとなったため、新たなOSへ更新する 

    コントロールパネルからOS再インストールを選択する
    OSインストール方法標準OS
    OS選択Rocky Linux 8 x86_64
    スタートアップスクリプトWordPress
    Let’s Encrypt 証明書を取得する

    ”Rocky Linux 8”を選択したのは、さくらVPSスクリプトが無料SSL証明書の「Let’s Encrypt」に対応しているのが「8」までだからです。※2025年1月現在