カテゴリー: Server

  • Debian系とRedHat系に共通したVPSサーバー間バックアップ自動化の方法

    Debian系とRedHat系に共通したVPSサーバー間バックアップ自動化の方法

    こんにちは!今回は、Debian系およびRedHat系Linuxで、VPSサーバー間のバックアップを自動化する方法を解説します。この記事は、rsyncを使ってリモートサーバーに手動でバックアップを覚えたばかりの初心者エンジニアの方に向けています。

    手動でバックアップを行う場合、バックアップディレクトリが増えると手間がかかり、パスフレーズを何度も入力することの不便さに悩まされることがあります。この記事では、これらの問題を解決するために、rsyncを使ったサーバー間のバックアップを自動化する方法をステップバイステップでご紹介します。

    バックアップはサーバー運用において非常に重要です。特に、新しく構築したVPSサーバーのデータを保護するために、効率的で確実なバックアップ方法を知りたい方にとって、このガイドは役立つでしょう。


    前提条件

    SSH鍵認証の設定

    • バックアップ元サーバーとバックアップ先サーバーの間でSSH鍵認証が設定されていること。
    • バックアップ元サーバーのユーザーのホームディレクトリにSSH秘密鍵が配置されていること。
    • バックアップ先サーバーのユーザーのホームディレクトリに公開鍵が配置され、適切な権限が設定されていること。

    バックアップ先サーバーのディレクトリ構造

    バックアップ先サーバーに必要なバックアップディレクトリが用意されていること。 以下のようなディレクトリ構造を事前に作成します。

    backup/etc/
    backup/home/
    backup/www/
    backup/mysql/
    backup/log/

    rsyncのインストールと設定

    • バックアップ元サーバーおよびバックアップ先サーバーにrsyncがインストールされていること。
    • 両方のサーバーでrsyncの動作確認が完了していること

    RedHat系の場合:

    sudo yum install rsync -y

    Debian系の場合:

    sudo apt-get install rsync -y

    手順

    ステップ1:バックアップリストの作成

    バックアップ対象のディレクトリとリモートサーバーのバックアップ先ディレクトリを指定するリストを作成します。

    ファイル例: /usr/local/bin/backup_list.txt

    /etc user@remote-server:/backup/etc/
    /home user@remote-server:/backup/home/
    /var/www user@remote-server:/backup/www/
    /var/lib/mysql user@remote-server:/backup/mysql/
    /var/log user@remote-server:/backup/log/

    ステップ2:バックアップスクリプトの作成

    バックアップリストを読み込み、rsyncを使ってバックアップを行うスクリプトを作成します。

    ファイル例: /usr/local/bin/backup.sh

    #!/bin/bash
    
    # バックアップリストファイル
    BACKUP_LIST="/usr/local/bin/backup_list.txt"
    LOG_FILE="/var/log/backup.log"
    SSH_KEY="/home/user/.ssh/id_rsa"
    
    # バックアップリストを読み込み
    while IFS=" " read -r SOURCE_DIR DEST_DIR; do
        # ディレクトリが存在するか確認
        if [[ -d $SOURCE_DIR ]]; then
            # バックアップを実行
            rsync -avz --delete -e "ssh -i $SSH_KEY" $SOURCE_DIR $DEST_DIR >> $LOG_FILE 2>&1
        else
            echo "Warning: $SOURCE_DIR does not exist, skipping..." >> $LOG_FILE
        fi
    done < $BACKUP_LIST

    ステップ3:SSHエージェントの設定スクリプトの作成

    SSHエージェントを起動し、パスフレーズを入力してSSHキーを追加するスクリプトを作成します。

    ファイル例: /usr/local/bin/start_ssh_agent.sh

    #!/bin/bash
    
    # SSHエージェントを起動
    eval "$(ssh-agent -s)"
    
    # パスフレーズを使用してSSHキーを追加
    /usr/local/bin/add_ssh_key.expect
    
    # エージェントの環境変数をエクスポートしてbackup.shを実行
    export SSH_AUTH_SOCK
    export SSH_AGENT_PID
    /usr/local/bin/backup.sh

    ステップ4:パスフレーズを自動入力するexpectスクリプトの作成

    expectを使ってパスフレーズを自動的に入力するスクリプトを作成します。

    ファイル例: /usr/local/bin/add_ssh_key.expect

    #!/usr/bin/expect -f
    
    spawn ssh-add /home/user/.ssh/id_rsa
    expect "Enter passphrase for /home/user/.ssh/id_rsa:"
    send "dummy_passphrase\r"
    interact

    ステップ5:スクリプトのパーミッション設定

    作成したスクリプトに実行権限を設定します。

    sudo chmod 700 /usr/local/bin/start_ssh_agent.sh
    sudo chmod 700 /usr/local/bin/add_ssh_key.expect
    sudo chmod 700 /usr/local/bin/backup.sh

    ステップ6:手動でスクリプトをテスト

    手動でstart_ssh_agent.shスクリプトを実行して、正しく動作するか確認します。

    sudo /usr/local/bin/start_ssh_agent.sh

    ステップ7:cronジョブの設定

    スクリプトが正常に動作することを確認した後、cronジョブを設定します。

    例: 毎日午前2時に実行する設定

    sudo crontab -e

    以下の行を追加します。

    0 2 * * * /usr/local/bin/start_ssh_agent.sh

    バックアップ結果の確認

    バックアップ先にデータが正しくコピーされているかを確認します。

    ssh -i /home/user/.ssh/id_rsa user@remote-server "ls /backup/www"

    まとめ

    これで、Debian系およびRedHat系LinuxでVPSサーバー間のバックアップを自動化する設定が完了しました。rsyncを使ったバックアップの自動化は、データの保護にとても役立ちます。安心して運用できる環境を整えてください。

  • Linux 環境における Lynis のインストール、動作確認、定期実行の設定手順

    Linux 環境における Lynis のインストール、動作確認、定期実行の設定手順

    はじめに

    Lynis はシステムのセキュリティ監査を行うためのツールです。本記事では、Debian系およびRedHat系ディストリビューション環境において、Lynis を GitHub からインストールし、動作確認、定期実行(Cron)の設定、さらに Logwatch を利用してレポートをメールで受け取るまでのプロセスを整理して解説します。

    想定環境

    • 対応ディストリビューション:
      • Debian系: Ubuntu, Debian
      • RedHat系: Rocky Linux, AlmaLinux, CentOS
    • 必要なツール: gitsudocrontablogwatch(任意)

    1. Lynis のインストール

    1.1 必要なパッケージのインストール

    まず、Git をインストールします。

    Debian系:

    sudo apt update
    sudo apt install -y git

    RedHat系:

    sudo dnf install -y git

    1.2 GitHub から Lynis をクローン

    Lynis の公式リポジトリを /usr/local/lynis にクローンします。

    sudo git clone https://github.com/CISOfy/lynis.git /usr/local/lynis

    1.3 実行ファイルへのシンボリックリンクを作成

    Lynis をシステム全体で利用できるように、/usr/local/bin にシンボリックリンクを作成します。

    sudo ln -s /usr/local/lynis/lynis /usr/local/bin/lynis

    2. 動作確認

    Lynis が正しくインストールされたか確認します。

    lynis show version

    成功すれば、Lynis のバージョンが表示されます。

    また、基本的なシステム監査を以下のコマンドで実行できます。

    sudo lynis audit system

    3. 定期実行の設定(Cron)

    Lynis を定期的に実行し、その結果をログファイルに保存するように設定します。

    3.1 Cron ジョブを設定

    1. root ユーザーで Cron を編集します。sudo crontab -e
    2. 以下の行を追加して保存します(例: 毎週日曜日の深夜2時に実行)。
    0 2 * * 0 /usr/local/bin/lynis audit system --quiet > /var/log/lynis.log

    これにより、Lynis の監査結果が /var/log/lynis.log に保存されます。


    4. Logwatch でレポートをメール送信

    Lynis のログを Logwatch に取り込み、メールで監査レポートを受け取れるように設定します。

    4.1 Logwatch のインストール

    Logwatch がインストールされていない場合は、以下のコマンドでインストールします。

    Debian系:

    sudo apt install -y logwatch

    RedHat系:

    sudo dnf install -y logwatch

    4.2 Logwatch 用の設定ファイル作成

    1. Logwatch に Lynis のログを取り込むための設定ファイルを作成します。sudo vi /etc/logwatch/conf/logfiles/lynis.conf
    2. 以下の内容を記述して保存します。LogFile = /var/log/lynis.log *OnlyService = lynis

    4.3 メール設定

    Logwatch のメール送信先を設定します。

    1. 設定ファイルを編集します。sudo vi /etc/logwatch/conf/logwatch.conf
    2. 以下の行を確認または追加します。MailTo = your-email@example.com MailFrom = logwatch@example.com
      • your-email@example.com を監査レポートを受け取るメールアドレスに置き換えてください。
      • MailFrom は適切な送信者アドレスを設定してください。

    4.4 Logwatch の動作確認

    以下のコマンドで Logwatch のレポートがメールで届くか確認します。

    sudo logwatch --service lynis --range today

    5. 定期的なアップデート

    Lynis は GitHub からインストールしているため、簡単に最新バージョンに更新できます。

    5.1 更新手順

    1. Lynis ディレクトリに移動します。cd /usr/local/lynis
    2. リポジトリを更新します。sudo git pull origin main
    3. 動作確認:lynis show version

    おわりに

    この手順を実施することで、Debian系およびRedHat系ディストリビューション環境で Lynis を利用したセキュリティ監査を自動化し、その結果をメールで受け取ることが可能になります。システムのセキュリティを向上させるため、定期的な監査の実施と最新バージョンへのアップデートを忘れずに行いましょう。

  • Debian系とRedHat系でのさくらVPS初期設定ガイド

    Debian系とRedHat系でのさくらVPS初期設定ガイド

    こんにちは!この記事では、Debian系およびRedHat系LinuxディストリビューションでさくらVPSを初期設定し、システムアップデートから公開鍵・秘密鍵によるSSH接続までの一連の流れをまとめています。

    本記事は、さくらVPS様の「さくらVPS入門ガイド」を参考にしていますが、情報の整理と更新を行い、Debian系とRedHat系の両方に対応する形で記載しました。ファイアウォール設定は、さくらVPSの「フィルタリング機能」を使用しているため、ここでは紹介していません。

    • 対応ディストリビューション:
      • Debian系: Ubuntu, Debian
      • RedHat系: Rocky Linux, AlmaLinux, CentOS

    SSHでログイン

    必要な準備

    • 接続するサーバーのIPアドレス
    • 初期ユーザー名とパスワード

    Windowsの場合

    • Tera Termをインストールしてログインします。
      1. ホスト欄にサーバーのIPアドレスを入力し、「OK」をクリックします。
      2. 初期ユーザー名とパスワードを入力して「OK」をクリックします。

    MacやLinuxの場合

    • ターミナルを使用してログインします。ssh username@<IPアドレス>

    システムアップデート

    Debian系

    sudo apt update && sudo apt upgrade -y

    RedHat系

    sudo dnf update -y

    アップデートが完了したらサーバーを再起動します。

    sudo reboot

    作業ユーザーの作成(sudo権限の付与)

    ユーザー追加

    sudo useradd <username>

    パスワード設定

    sudo passwd <username>

    sudo権限の付与

    • Debian系sudo usermod -aG sudo <username>
    • RedHat系sudo usermod -aG wheel <username>

    初期ユーザーの削除

    初期ユーザーを削除します。ただし、削除する前に作成した新しい作業ユーザーでSSH接続とsudoコマンドが動作することを確認してください。

    sudo userdel -r <初期ユーザー名>

    rootユーザーの設定と制限

    パスワード設定

    sudo passwd root

    rootログインの禁止

    sudo vim /etc/ssh/sshd_config

    次の設定を変更します。

    PermitRootLogin no

    設定を保存してSSHサービスを再起動します。

    sudo systemctl restart sshd

    公開鍵認証の設定

    鍵の生成(ローカルPC)

    Windows(Tera Termの場合)

    1. 設定メニューから「SSH鍵生成」を選択。
    2. RSAを選択して「生成」をクリック。
    3. パスフレーズを入力後、「公開鍵の保存」と「秘密鍵の保存」をそれぞれ行います。

    Mac/Linux

    ssh-keygen -t rsa -b 4096

    公開鍵の登録(リモートサーバー)

    1. ローカルPCから公開鍵ファイル(id_rsa.pub)をリモートサーバーにアップロードします。

    scp ~/.ssh/id_rsa.pub username@<IPアドレス>:~

    2. リモートサーバーで以下のコマンドを実行します。

    mkdir -p ~/.ssh 
    chmod 700 ~/.ssh 
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 
    chmod 600 ~/.ssh/authorized_keys 
    rm ~/id_rsa.pub

    パスワード認証の無効化

    sudo vim /etc/ssh/sshd_config

    以下の設定を変更します。

    PasswordAuthentication no

    設定を保存してSSHサービスを再起動します。

    sudo systemctl restart sshd

    ログインテスト

    作業ユーザーでの確認

    • 公開鍵とパスフレーズを利用したログインが成功するか確認します。
    • パスワードを利用したログインが拒否されるか確認します。

    rootユーザーでの確認

    • パスワードログインが拒否されるか確認します。
    • 公開鍵ログインが拒否されるか確認します。

    まとめ

    これでDebian系およびRedHat系LinuxでのさくらVPS初期設定が完了しました。この設定により、セキュアなSSH接続環境を構築できます。ファイアウォール設定が必要な場合は、さくらVPSの「フィルタリング機能」を活用することをおすすめします。