ご挨拶
皆様、セキュリティ対策してますか?
今回は、個人で公開しているOSSリポジトリ2つを2026年4月時点の最新に更新しましたので、その内容をまとめます。
更新対象リポジトリ
| リポジトリ | 概要 |
|---|---|
| aws-wafv2-fail2ban | AWS WAFv2でfail2banライクなIP制御を行うOSS |
| AWS-Client-VPN-Template | AWS Client VPNをTerraformで構築するテンプレート |
aws-wafv2-fail2ban
更新の背景
OWASP Top 10:2026 および2026年現在の攻撃動向に合わせて、WAFルールの大幅な強化とTerraform / CloudFormationの最新化を行いました。
Terraform 最新化
-
required_version >= 1.6/ AWS Provider~> 5.80/ Archive~> 2.7に更新 -
rate_based_statementをscope_down_statementに変更(構文バグ修正) -
pattern_sets.tfの正規表現エスケープ問題を全面修正 - IP Set に
lifecycle { ignore_changes = [addresses] }を追加(Lambda動的更新との競合防止) - IAMポリシーをアカウントIDスコープに最小権限化
- Lambda用 CloudWatch Log Group を明示的に定義
- 変数バリデーション強化(CIDR検証、WAFv2最小値制約、環境名制約)
CloudFormation 最新化
- 段階的制裁システム完全統合(Stage 1-4 + IP Set + Regex Pattern Set)
- IP Manager Lambda / Teams通知Lambda をテンプレートに追加
-
CustomResponseBodiesによるJSON形式のブロックレスポンス - Teams通知を Adaptive Card形式に移行(MessageCard非推奨対応)
- パラメータに
MinValue/MaxValue/AllowedValuesバリデーション追加 -
LambdaPythonRuntime/IpTtlHours/TeamsWebhookUrlパラメータ追加
2026年攻撃動向対応(新規ルール)
2026年現在の攻撃動向に合わせて、以下のルールを新規追加しています。
| ルール | 対象 |
|---|---|
| ModernAttackPatternRule | SSRF、NoSQLi、GraphQLi、Log4Shell、エンコーディング回避 |
| SuspiciousUserAgentRule強化 | AI駆動スキャナ(GPT-crawler、LLM-agent、Crawl4AI等) |
| OversizedHeaderRule | HTTP Flood / Slowloris(8KB超ヘッダー検知) |
AI駆動のスキャナやクローラーが増加している昨今、User-Agentベースの検知ルールも強化しています。
従来型パターンの改善
- SQLi: UNION-based + stacked queries + blind対応
- XSS: SVG-based、iframe、object、embed追加
- Traversal: double encoding回避対策
- Body検査追加(oversize_handling = MATCH)
-
text_transformationに URL_DECODE + LOWERCASE の2段階適用
Lambda 改善
- Python 3.13 +
from __future__ import annotations型ヒント対応 - IP TTL自動期限切れ(デフォルト24時間、
ip_ttl_hoursで設定可能) - WAFv2
OptimisticLockExceptionリトライ(最大3回) - CloudWatch Logs Insights ポーリング改善(Complete状態まで待機)
-
httpRequest.clientIpフィールド名修正 - Teams通知: Adaptive Card v1.4形式に移行
破壊的変更
以下の破壊的変更がありますので、既存環境で利用されている方はご注意ください。
-
count_thresholdの最小値が 100 に変更(WAFv2 rate-based制約) - CloudFormation テンプレートのリソース名が一部変更(既存スタック更新時は注意)
- Teams通知が MessageCard → Adaptive Card に変更
AWS-Client-VPN-Template
更新の背景
Terraformコードのモダン化とSASTセキュリティ強化を実施しました。
Terraform & Provider
-
required_versionを>= 1.9に更新(最新安定版: 1.14.x) - AWS Provider を
~> 5.80→~> 6.39にメジャーバージョンアップ
AWS Provider v6 破壊的変更の影響
| 破壊的変更 | 本プロジェクトへの影響 |
|---|---|
aws_eip の vpc パラメータ廃止 |
影響なし(既に domain = "vpc" 使用済み) |
| Boolean strictness(文字列 "1"/"0" 不可) | 影響なし(文字列boolean未使用) |
| OpsWorks/SimpleDB/WorkLink リソース削除 | 影響なし(未使用) |
| Redshift デフォルト値変更 | 影響なし(未使用) |
既存環境への適用前に必ず terraform plan で差分を確認してください。また、terraform init -upgrade 実行時に .terraform.lock.hcl が更新されます。
セキュリティ強化(SAST)
今回の大きなポイントはセキュリティ強化です。
- KMS CMK暗号化: CloudWatch Logs / CloudTrail / S3(キーローテーション有効)
-
enable_kms_encryption変数で有効/無効を切替可能(デフォルト: true) - 無効時: S3はAES256、CloudWatch Logs/CloudTrailはデフォルト暗号化
-
- S3バケット: SSL/TLS強制(DenyInsecureTransport)、ライフサイクルルール追加
- セキュリティグループ: インラインルール →
aws_vpc_security_group_*_ruleに分離 - UDP 443 ingressルール追加(Client VPNはTCP/UDP両対応)
- VPNエンドポイント: セッションタイムアウト + ログインバナー追加
- 証明書ARN outputを
sensitiveに設定 - VPC Flow Logs追加(IAMロール付き、変数で有効/無効切替可能)
NAT Gateway モード選択
nat_gateway_mode 変数を追加し、用途に応じたNAT Gatewayの配置が選択できるようになりました。
| モード | 説明 |
|---|---|
regional |
1 NAT GW(AZ非依存) |
single_az |
1 NAT GW(最初のAZに配置、コスト節約)※デフォルト |
multi_az |
AZごとに1 NAT GW(高可用性) |
multi_az 時はAZごとにルートテーブルを分離します。コストと可用性のバランスに応じて選択してください。
モダン化
- Terraform
checkブロックによる継続的バリデーション - Variable validation追加(CIDR、region、environment、retention)
- 全outputを
outputs.tfに集約 - 不足していたoutput追加: VPN Endpoint ID/DNS、Subnet ID、KMS ARN
- 非推奨
iic_vpn_group_id変数を削除 -
log_retention_days変数追加(デフォルト90日、旧30日) -
vpn_session_timeout_hours変数追加 -
default_tagsでvar.environmentを使用(ハードコード解消)
新規追加変数一覧
| 変数名 | 型 | デフォルト | 説明 |
|---|---|---|---|
nat_gateway_mode |
string | single_az |
NAT GWの配置モード |
enable_kms_encryption |
bool | true |
KMS CMK暗号化の有効/無効 |
enable_vpc_flow_logs |
bool | true |
VPC Flow Logsの有効/無効 |
log_retention_days |
number | 90 |
CloudWatch Logs保持期間 |
vpn_session_timeout_hours |
number | 8 |
VPNセッションタイムアウト |
まとめ
2つのOSSリポジトリを2026年4月時点の最新に更新しました。
- aws-wafv2-fail2ban: OWASP Top 10:2026対応、AI駆動攻撃対策、Terraform/CloudFormation最新化
- AWS-Client-VPN-Template: SASTセキュリティ強化、KMS暗号化、NAT Gatewayモード選択、Terraformモダン化
どちらもOSSとして公開していますので、Issue・PRお待ちしております。
では。