08. Ubuntu サーバーを保護する:強化と防御のための実践的な手順

Ubuntu サーバーを保護することは、データ、アプリケーション、インフラストラクチャを悪意のある攻撃から守るために不可欠です。Web サイト、データベース、アプリケーションのいずれをホストしている場合でも、堅牢なセキュリティ対策を実施することで、サーバーが脆弱性に対して強固なものになります。この記事では、ファイアウォールの設定、SSH の安全なセットアップ、fail2banなどのツールの使用や、その他の強化のヒントなど、Ubuntu サーバーを保護するための実践的な手順を説明します。


前の記事:

01. Ubuntu Server 入門 – SysOSX: AI & Cloud

02. 初めての Ubuntu サーバーをセットアップする方法:初心者ガイド – SysOSX: AI & Cloud

03. Ubuntu Server 向け Linux コマンドラインの習得 – SysOSX: AI & Cloud

04. Ubuntu Server におけるユーザーとアクセス許可の管理:包括的ガイド – SysOSX: AI & Cloud

05. Ubuntu Server のネットワーク基礎:包括的ガイド – SysOSX: AI & Cloud

06. Ubuntu Server へのソフトウェアのインストールと管理:完全ガイド – SysOSX: AI & Cloud

07.Ubuntu Server へのパッチ適用と更新:包括的ガイド – SysOSX: AI & Cloud



サーバーのセキュリティが重要な理由

サーバーには機密データが保存されていることが多く、ビジネス運営にとって重要です。適切なセキュリティ対策がなければ、攻撃者は脆弱性を悪用して不正アクセスを行い、サービスを妨害したり、情報を盗んだりする可能性があります。これらの実践的な手順に従うことで、攻撃のリスクを大幅に軽減し、サーバーを安全に保つことができます。


1. システムを最新の状態に保つ

定期的な更新は、セキュリティの脆弱性にパッチを適用し、サーバーを安全に保つために不可欠です。Ubuntu は、パッケージとカーネルに対するタイムリーな更新を提供します。

サーバーを更新する手順:

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade

さらに、セキュリティ更新を自動化するためにunattended-upgradesを有効化します:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

2. UFW でファイアウォールを設定する

ファイアウォールは、不正アクセスに対する最初の防御線です。Ubuntu にはUFW(Uncomplicated Firewall)があり、ファイアウォール管理を簡素化します。

UFW を設定する手順:

  • UFW を有効化する:
sudo ufw enable
  • SSH 接続を許可する:
sudo ufw allow ssh
  • 特定のポートを許可する(たとえば、Web サーバーの HTTP と HTTPS):
sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp
  • ファイアウォールの状態を確認する:
sudo ufw status

    既定では、UFW は明示的に許可されたものを除くすべての受信接続をブロックし、サーバーが保護されるようにします。


    3. SSH アクセスを保護する

    SSH はリモート サーバー管理の主要な方法ですが、ブルートフォース攻撃の標的になることがよくあります。SSH を保護することは、不正アクセスのリスクを軽減するために重要です。

    SSH を保護するためのヒント:

    • 既定の SSH ポートを変更する:
      • SSH 構成ファイルを編集します:
    sudo nano /etc/ssh/sshd_config 
    
    • 既定のポートを(たとえば22から2222に)変更し、SSH サービスを再起動します:
    sudo systemctl restart ssh
    
    • 新しいポートへのアクセスを許可するように UFW ルールを更新します:
    sudo ufw allow 2222/tcp
    
    • root ログインを無効化する:
      ファイル/etc/ssh/sshd_configで次のように設定します:
    PermitRootLogin no
    
    • SSH キー認証を使用する:
      • SSH キー ペアを生成します:
    ssh-keygen -t rsa -b 4096 
    
    • 公開キーをサーバーにコピーします:
    ssh-copy-id username@server-ip
    
    • SSH アクセスを制限する:
      次のファイルを編集して、特定の IP アドレスに SSH アクセスを制限します:/etc/hosts.allowと/etc/hosts.deny 。

    4. Fail2Ban をインストールして設定する

    Fail2Banは、ログ ファイルを監視し、不審な動作を示す IP アドレスをブロックすることで、サーバーをブルートフォース攻撃から保護するツールです。

    Fail2Ban をセットアップする手順:

    • Fail2Ban をインストールする:
    sudo apt install fail2ban
    
    • ローカル構成ファイルを作成する:
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    
    • SSH 保護を設定する:
      次のファイルを編集して、/etc/fail2ban/jail.localで SSH ジェイルを有効化します:
    [sshd]
    enabled = true
    port = 2222
    maxretry = 5
    bantime = 3600
    
    
    • Fail2Ban を再起動する:
    sudo systemctl restart fail2ban
    

      Fail2Ban は SSH ログを監視し、ログイン失敗が繰り返されると IP をブロックするようになります。


      5. 不要なサービスを無効化する

      不要なサービスを実行すると、サーバーの攻撃対象領域が広がります。不要なサービスを特定して無効化してください。

      サービスを無効化する手順:

      • アクティブなサービスを一覧表示する:
      sudo systemctl list-units --type=service
      
      • 未使用のサービスを停止して無効化する:
      sudo systemctl stop service-name 
      sudo systemctl disable service-name
      

        6. 強力なパスワードとユーザー アカウントを使用する

        脆弱なパスワードは一般的な脆弱性です。すべてのユーザー アカウントが強力で一意のパスワードを使用していることを確認してください。

        ユーザー アカウントのセキュリティに関するヒント:

        • パスワード マネージャーを使用して、強力なパスワードを生成し、保存します。
        • ユーザー アカウントを定期的に監査し、未使用のアカウントを削除します:
        sudo awk -F: '{ print $1}' /etc/passwd
        

          7. 二要素認証 (2FA) を有効化する

          二要素認証により、SSH ログイン プロセスにセキュリティ層が追加されます。2FA は次を使用して有効化できます。Google Authenticator.

          2FA を有効化する手順:

          • Google Authenticator をインストールする:
          sudo apt install libpam-google-authenticator
          
          • ユーザー向けに 2FA を設定する:
            次のコマンドを実行し、表示される指示に従います:
           google-authenticator
          
          • SSH で 2FA を有効化する:
            次のファイルを編集して、/etc/pam.d/sshdに次を追加します:
           auth required pam_google_authenticator.so
          

            SSH サービスを再起動します:

            sudo systemctl restart ssh
            
            

            8. ログとシステム アクティビティを監視する

            サーバー ログを定期的に監視することで、不審なアクティビティを早期に検出できます。

            ログ監視ツール:

            • Syslog:一般的なシステム ログを確認します:
            sudo less /var/log/syslog
            
            • 認証ログ:認証の試行を確認します:
             sudo less /var/log/auth.log
            

              自動ログ分析とアラートのために、次のツールの使用を検討してください:LogwatchまたはOSSEC。


              9. 定期的にバックアップを実行する

              強力なセキュリティ対策を講じていても、攻撃やデータ損失から復旧するにはバックアップが不可欠です。

              バックアップ オプション:

              • ローカル バックアップを作成するには、rsyncを使用します:
              rsync -av /data /backup/
              
              • 次のツールでバックアップを自動化します:Duplicityや、次のようなクラウドベースのソリューションを統合します:AWS S3またはGoogle Cloud Storage.

              10. その他の強化のヒント

              • ウイルス対策ソフトウェアをインストールする:次のツールを使用します。ClamAVでマルウェアをスキャンします。
              sudo apt install clamav 
              sudo clamscan -r /path/to/scan
              
              • Web アプリケーションを保護する:Web サイトをホストする場合は、次のツールを使用します。ModSecurityで一般的な Web の脆弱性から保護します。
              • AppArmor を有効化する:AppArmor は、アプリケーションに強制アクセス制御を提供します。
              sudo apt install apparmor 
              sudo aa-status
              

              まとめ

              Ubuntu サーバーを保護するには、システム更新、ファイアウォール設定、SSH の強化、Fail2Ban のようなツールを組み合わせた積極的なアプローチが必要です。これらの手順に従い、サーバーを定期的に監視することで、潜在的な脅威に対する堅牢な防御を構築できます。

              詳細については、公式のUbuntu セキュリティ ガイド.

              次回: Ubuntu Server における監査とログ記録

              サーバーを保護することは不可欠ですが、その運用状況を可視化することも同様に重要です。監査とログ記録 により、システム アクティビティを監視し、異常を特定して、問題を効果的にトラブルシューティングできます。

              次のセクションでは、次の内容を取り上げます:

              • システム監査とログの重要性。
              • システム イベントを追跡および記録するためのauditdの使用。
              • ログ ファイルを効率的に管理するためのログ ローテーションのlogrotateによる設定。
              • 重要なイベントについて、/var/logディレクトリを監視すること。

              これらの実践により、説明責任を維持し、潜在的な脅威を検出し、サーバーの信頼性を確保できます。

              Ubuntu サーバーを効果的に監査および監視できるようにするツールとテクニックについて詳しく説明しますので、お楽しみに。

              3 thoughts on “08. Securing Your Ubuntu Server: Practical Steps for Hardening and Protection”

              コメントを残す