Linuxシステムにおけるウェブアプリケーションファイアウォール(WAF)の設定は、サーバーを保護する重要なステップの一つです。この記事では、基本的なWAFの設定手法から応用例まで、具体的なコードとその詳細な解説を通じてご紹介します。
目次
WAFとは何か
ウェブアプリケーションファイアウォール(Web Application Firewall、WAF)は、ウェブアプリケーションに対する様々な攻撃から保護するための特殊なファイアウォールです。具体的には、SQLインジェクション、クロスサイトスクリプティング(XSS)などの攻撃を検出し、ブロックする機能があります。
基本的なWAFの設定
Linux環境でよく使用されるWAFとしては「ModSecurity」があります。以下は、ModSecurityをApacheにインストールする基本的な手順です。
インストール
sudo apt update
sudo apt install libapache2-mod-security2
sudo a2enmod security2
設定ファイルの編集
設定ファイル(`modsecurity.conf`)を編集することで、基本的なルールを適用します。
sudo nano /etc/modsecurity/modsecurity.conf
# 設定項目を適切に変更
応用例
基本設定だけでも十分な保護が得られますが、特定の用途に応じた応用例も考えられます。
特定のIPアドレスをブロック
# 特定のIPアドレス(例:192.168.0.1)をブロック
SecRule REMOTE_ADDR "^192\.168\.0\.1$" "id:1,phase:1,deny"
ユーザーエージェントによるフィルタリング
# "BadBot"というユーザーエージェントを持つリクエストをブロック
SecRule REQUEST_HEADERS:User-Agent "BadBot" "id:2,phase:1,deny"
特定のファイル拡張子をブロック
# .exeファイルのアップロードをブロック
SecRule REQUEST_FILENAME "\.exe$" "id:3,phase:2,deny"
クエリパラメータによる制限
# "action=delete"というクエリパラメータを持つリクエストをブロック
SecRule ARGS "action=delete" "id:4,phase:2,deny"
特定の国からのアクセスを制限
# 中国からのアクセスをブロック(GeoIPを使用)
SecRule GEO:COUNTRY_CODE "@streq CN" "id:5,phase:1,deny"
まとめ
LinuxでのWAF設定は、サーバーを多くのリスクから保護する強力なツールです。基本的な設定から応用まで、具体的な設定例とその意味を理解し、自分の環境に適したセキュリティ対策を施してください。
コメント