VPSをDDoS攻撃から保護する方法:実践ガイド
ファイアウォール、レート制限、およびその他の実証済みの方法を使用してVPSをDDoS攻撃から保護するための包括的なガイド。

DDoS攻撃(分散サービス拒否攻撃)は、数分でサーバーをオフラインにし、収益の損失、顧客の不満、評判の損害につながる可能性があります。2026年、そのような攻撃はより洗練され、アクセスしやすくなっています。幸いなことに、現代の保護方法も進化しています。このガイドでは、Hiddence VPSを最も一般的なタイプのDDoS攻撃から保護する方法を説明します。
DDoS攻撃とは何ですか?
DDoS攻撃は、複数のコンピュータ(ボットネット)が同時にサーバーにリクエストを送信し、リソースを圧迫して正当なユーザーが利用できなくなる場合に発生します。
DDoS攻撃の主なタイプ
- ボリュメトリック攻撃(L3/L4):UDPフラッド、ICMP、SYNフラッド - ネットワーク帯域幅を圧迫
- アプリケーション層攻撃(L7):HTTPフラッド、Slowloris - アプリケーション層を標的
- プロトコル攻撃:ネットワークプロトコルの脆弱性を悪用
組み込みHiddence保護
すべてのHiddence VPSには、基本的なレイヤー3-4 DDoS保護(ネットワークレベル)が含まれています。これは自動的にほとんどのボリュメトリック攻撃をフィルタリングします。ただし、レイヤー7(アプリケーション)攻撃には追加の設定が必要です。
ステップ1:ファイアウォールのセットアップ
最初の防衛線は適切なファイアウォール設定です。UFW(Uncomplicated Firewall)は、Ubuntu/Debian用のシンプルで効果的なツールです。
# UFWをインストールする
sudo apt update && sudo apt install ufw -y
# SSHを許可する(重要!UFWを有効にする前にこれを行ってください)
sudo ufw allow 22/tcp
# HTTPとHTTPSを許可する
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# UFWを有効にする
sudo ufw enable
# ステータスを確認する
sudo ufw status verbose
# 高度な保護ルール:
# SSH接続を制限する(ブルートフォース保護)
sudo ufw limit 22/tcp
# ICMP pingフラッドをブロックする
sudo nano /etc/ufw/before.rules
# *filterの後に追加:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# SYNフラッドに対する保護
sudo nano /etc/sysctl.conf
# 追加:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# 変更を適用する
sudo sysctl -pステップ2:Fail2Banのインストール
Fail2Banは、不審な活動(複数のログイン失敗試行、ポートスキャン)を示すIPアドレスを自動的にブロックします。
# インストール
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# SSHとHTTP保護の設定
# ローカル設定を作成する
sudo nano /etc/fail2ban/jail.local
# 追加:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# Fail2Banを再起動する
sudo systemctl restart fail2ban
# ステータスを確認する
sudo fail2ban-client statusステップ3:Nginx保護
Nginxを使用している場合、HTTPフラッド攻撃から保護するためにレート制限を構成します。
sudo nano /etc/nginx/nginx.conf
# httpブロックに追加:
http {
# リクエスト制限:IPあたり毎秒10リクエスト
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 接続制限
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Slowloris保護
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# 残りの設定...
}
# サーバーブロックに追加:
server {
location / {
# リクエスト制限を適用する
limit_req zone=one burst=20 nodelay;
# 接続制限:IPあたり最大10
limit_conn addr 10;
# あなたの設定...
}
}
# 設定をテストしてリロードする
sudo nginx -t
sudo systemctl reload nginxステップ4:CDNの使用
最大の保護のために、CloudflareなどのCDNサービスを使用します。CDNはプロキシとして機能し、サーバーの実際のIPを隠し、ほとんどのDDoS攻撃を吸収します。利点:実際のIPを隠す、自動的な悪意のあるトラフィックフィルタリング、負荷分散、無料のSSL/TLS、L7保護用のWAF。
- cloudflare.comに登録する(無料プラン利用可能)
- ドメインを追加し、レジストラでNSレコードを変更する
- DNSレコードの「プロキシ」モード(オレンジの雲)を有効にする
- SSL/TLSセクションでSSLモードを「Full (strict)」に設定する
- セキュリティ設定で「DDoS Protection」と「Bot Fight Mode」を有効にする
ステップ5:監視
定期的な監視は、攻撃を早期に検出するのに役立ちます。
# アクティブな接続を監視する
watch -n 1 'ss -s'
# 接続数でトップIPを表示する
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# ログをリアルタイムで表示する
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# Fail2BanでブロックされたIPを確認する
sudo fail2ban-client status sshd緊急措置
攻撃がすでに進行中の場合は、以下の措置を講じます:
- ソースを特定する:「netstat」またはログを使用して攻撃IPを特定する
- 一時的なブロック:sudo ufw insert 1 deny from ATTACKING_IP
- サブネット全体をブロックする:sudo ufw deny from 123.45.0.0/16
- レート制限を制限する:Nginx制限を一時的に1-5 req/sに下げる
- サポートに連絡する:高度な保護のアクティベーションのためにHiddenceサポートに連絡する
- Cloudflareで「Under Attack Mode」を有効にする(使用している場合)
ベストプラクティス
- CDNを使用している場合、サーバーの実際のIPを公開しないでください
- システムを定期的に更新する:sudo apt update && sudo apt upgrade
- サーバーアクセスにパスワードの代わりにSSHキーを使用する
- デフォルトのSSHポート(22)を非標準に変更する
- 迅速な回復のために自動バックアップを設定する
- 重要なサービスには別々のIPを使用する
- ログを有効にし、不審な活動がないかログを定期的に確認する
- サービスがグローバルでない場合は地理的ブロッキングの使用を検討する