セキュリティ対策について
雑記帳
2025-03-24
2025年度前に下記チェックし対策を実施
1. サーバー・インフラレベルのセキュリティ対策¶
- SSHアクセスの保護
- パスワード認証を無効化し、公開鍵認証に限定
- デフォルトのSSHポート(22)を変更
- Fail2Banの導入(SSHブルートフォース攻撃対策)
- AWS LightsailのファイアウォールでIP制限(管理用端末のIPのみ許可)
- OS・ミドルウェアのアップデート
- 定期的なapt update && apt upgradeの実行
- 自動アップデートの設定 (unattended-upgrades の導入を検討)
- Bitnami Redmineを使用しているなら、公式のアップデート手順を確認
- 不要なサービスの無効化
- デフォルトで動作している不要なサービスを停止(systemctl list-units --type=serviceで確認)
- 外部に公開する必要のないポートは閉じる(Lightsailのファイアウォールとufwで制御)
- バックアップの設定
- 定期的なスナップショットの取得(Lightsailのスナップショット機能)
- Redmineのデータベース(MySQL)を定期的にダンプ
mysqldump -u redmine -p redmine_production > /backup/redmine_backup.sql
- バックアップファイルを外部ストレージ(AWS S3など)へ定期的に転送
2. Redmineアプリケーションレベルのセキュリティ対策¶
- Webアクセスの保護
- HTTPSの強制 (Let's Encryptで無料SSL証明書を設定)
- 不要なHTTPメソッド(PUT, DELETEなど)の無効化
- Clickjacking対策 (X-Frame-Options: SAMEORIGIN を設定)
- CSP (Content Security Policy)の設定(XSS対策)
- Redmineの設定
- 管理者ユーザーのデフォルトパスワード変更
- 不要なプラグインの削除
- 管理画面のアクセス制限
- ログイン試行回数の制限 (max_invalid_login_attempts の設定)
- RedmineのDBセキュリティ
- データベースユーザーの権限を最小限にする
- データベースのリモートアクセスを無効化 (bind-address = 127.0.0.1 in my.cnf)
- 強固なDBパスワードを設定 (openssl rand -base64 32 などで生成)
ネットワーク・外部攻撃対策¶
- DDoS・不正アクセス対策
- AWS Lightsailのファイアウォールで必要なポートのみ開放
- AWS WAF(Web Application Firewall)の導入
- Fail2BanでRedmineのログイン試行回数制限を強化
- リバースプロキシ (Nginx) の導入とRate Limitingの設定
- ログ監視・異常検知
- Redmineのログを監視 (tail -f /opt/bitnami/redmine/log/production.log)
- Linuxのシステムログ (/var/log/auth.log, /var/log/syslog) の定期確認
- AWS CloudWatch Logsを利用した監視
- ファイル改ざん検知ツール(Tripwire, AIDE)の導入
4. その他のセキュリティ対策¶
- ユーザーアカウント・認証強化
- 多要素認証(MFA)を導入
- セッションの有効期限を短く設定
- Redmineの管理者アカウントを複雑なパスワードに変更
まとめ¶
- まずはSSH・Webアクセス・DBの基本的なセキュリティ対策を実施
- AWS LightsailのファイアウォールとHTTPS強制設定を最優先
- 定期的なアップデートとバックアップの実施
- Redmineプラグインの管理に注意
- 異常検知・ログ監視を仕組み化
**「手間を減らしつつ、安全に運用する」**というバランスを考えるなら、
まずは 「SSHの公開鍵認証化」「HTTPSの強制」「Redmineの設定見直し」 から始めるのが良い。