CSF(Config Server Firewall)のインストールと設定(CentOS 7)

重要: 本手順はCentOS 7を前提とします。firewalldが動作している場合は無効化してください。root権限が必要です。
概要
Config Server Firewall(CSF)は、iptablesを利用するLinuxサーバー向けのファイアウォールおよびログイン/侵入検知(LFD: Login Failure Daemon)ツールです。SSH、メール(Exim, Dovecot 等)、FTP、suコマンドなどのログイン失敗や権限昇格操作を監視し、設定に応じてIPブロックや通知を行います。cPanel/WHM、DirectAdmin、Webminと統合してUIから管理できます。
1行定義: CSFはアプリケーション層のルールとログ監視を組み合わせた、ホスティング向けの利便性の高いファイアウォールです。
目次
- 前提条件
- ステップ 1 — 依存関係のインストール
- ステップ 2 — CSFのインストール
- 稼働確認
- ステップ 3 — CentOS 7でのCSF設定
- ステップ 4 — 基本コマンド集
- ステップ 5 — 上級設定と重要オプション
- セキュリティ強化と運用チェックリスト
- 代替案と向き・不向き
- 受け入れ基準(テストケース)
- 用語集
- まとめ
前提条件
- CentOS 7 を実行しているサーバー(例: 192.168.1.101)。
- root権限(sudo可)。
- ネットワーク/SSHポートが管理可能であること。
ステップ 1 — 依存関係のインストール
CSFはPerlベースのツールです。インストーラーを取得するwgetと設定編集用のvim(任意のエディタ可)をインストールします。以下を実行してください。
yum install wget vim perl-libwww-perl.noarch perl-Time-HiRes
このコマンドはPerlモジュールとタイマ精度向上用モジュールを含みます。インストールに失敗した場合はネットワーク接続とyumリポジトリを確認してください。
ステップ 2 — CSFのインストール
/usr/src/ディレクトリに移動してインストーラーをダウンロードし、展開・インストールします。
cd /usr/src/
wget https://download.configserver.com/csf.tgz
展開してインストール:
tar -xzf csf.tgz
cd csf
sh install.sh
インストールが成功すると、最後にインストール完了のメッセージが表示されます。
稼働確認
インストール後、csfが動作可能かをテストします。/usr/local/csf/bin/ に移動して csftest.pl を実行します。
cd /usr/local/csf/bin/
perl csftest.pl
期待される出力の例:
RESULT: csf should function on this server
上記のように表示されれば、基本的な動作条件を満たしています。
ステップ 3 — CentOS 7でのCSF設定
CentOS 7には既定で firewalld が存在します。CSF(iptablesベース)と競合するため、firewalldを停止・無効化します。
systemctl stop firewalld
systemctl disable firewalld
次にCSF設定を編集します。
cd /etc/csf/
vim csf.conf
- 初期テストモードを解除: csf.conf の TESTING を 0 に変更します。これによりルールが実際に適用されます。
TESTING = "0"
- SSHポート: デフォルトは22です。別ポートを使用している場合は TCP_IN にそのポートを追加してください(csf.conf の該当行)。
サービスを起動して自動起動を有効にします。
systemctl start csf
systemctl start lfd
systemctl enable csf
systemctl enable lfd
現在のデフォルトルールは以下で確認できます:
csf -l
注意: 最初にTESTINGを0にせずcsf -sで有効化すると、管理者のSSH接続が遮断される危険があります。作業はコンソール(IPMIなど)から行える環境で確認してください。
ステップ 4 — 基本コマンド集
運用でよく使うコマンドをまとめます。IPアドレス例は192.168.1.109等です。
- ファイアウォールを有効化(ルール適用)
csf -s
- ルールをフラッシュ(停止)
csf -f
- ルールの再読み込み
csf -r
- IPを許可(csf.allowに追加)
csf -a 192.168.1.109
例の出力(acceptルールが追加される):
Adding 192.168.1.109 to csf.allow and iptables ACCEPT...
ACCEPT all opt -- in !lo out * 192.168.1.109 -> 0.0.0.0/0
ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.1.109
- csf.allowからIPを削除
csf -ar 192.168.1.109
- IPを拒否(csf.denyに追加)
csf -d 192.168.1.109
- csf.denyからIPを削除
csf -dr 192.168.1.109
- csf.denyの全エントリを解除
csf -df
- iptablesルール内を検索(IP・CIDR・ポートなど)
csf -g 192.168.1.110
ステップ 5 — 上級設定と重要オプション
/etc/csf/csf.conf を編集して運用に合わせた調整を行います。主要なオプションを抜粋します。
- csf.allowにあるIPをlfdがブロックしないようにする
IGNORE_ALLOW = "1"
- デフォルトだとLFDがcsf.allow内のIPを一時的にブロックする場合があります。自宅やオフィスの固定IPを絶対に保護したい場合は上記を1に設定します。
- ICMP(ping)を許可
ICMP_IN = "1"
ICMP_OUT = "1"
- 国別ブロック/許可(CC_DENY / CC_ALLOW)
CC_DENY = "CN,UK,US"
CC_ALLOW = "ID,MY,DE"
- 国コードは2文字のISOコードをカンマ区切りで指定します。用途に応じて慎重に運用してください。CIDRリストを外部参照するため、定期更新の運用を検討してください。
- SSHおよびsuコマンドのログをメール通知
LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"
LF_ALERT_TO = "[email protected]"
- LF_ALERT_TO に通知先メールアドレスを設定します。
- その他のオプション
- csf.confには多数のオプションがあります。ログパス、レート制限、接続閾値、スクリプトフックなどを確認して運用ポリシーに合わせて調整してください。
セキュリティ強化と運用チェックリスト
以下は運用開始後に推奨するハードニング項目です(役割別チェックリストも含む)。
セキュリティ強化(優先順):
- SSH鍵認証を必須にし、パスワード認証を無効化する。
- 管理用IPをcsf.allowに固定登録する(IGNORE_ALLOW=1と併用)。
- 管理ポートをデフォルト22から変更(ただしセキュリティはポート変更だけでは不十分)。
- 監査ログを外部のログサーバーに送信して改竄対策を行う。
- 定期的にcsf.confのバックアップを取り、変更履歴を管理する。
- 国別ブロックを導入する場合はビジネス要件を確認する(誤遮断リスク)。
役割別簡易チェックリスト:
システム管理者:
- csf/lfdが自動起動することを確認する。
- csf -l でルールを確認し、不要なポートが開いていないことを確認する。
- csfのログ(/var/log/lfd.log等)を定期確認する。
ホスティング運用:
- cPanel等と統合する場合はUI連携設定を確認する。
- 顧客IPの除外ポリシーを明文化する。
開発者:
- アプリケーションが必要とするアウトバウンド接続やWebhook用ポートをホワイトリストに追加する。
代替案と適用の向き・不向き
代替技術:
- fail2ban: ログ解析ベースで自動ブロック。軽量で汎用性高いが、CSFのようなUI統合や多数のアプリケーション向け細かな設定は乏しい。
- nftables: iptablesの後継。低レベルのパケットフィルタリングを行うならnftablesに移行する選択肢がある(CentOS 8以降を検討)。
- firewalld: CentOS標準のデーモン。ゾーンやサービス管理が容易だが、CSFのLFDのようなログイン検知は持たない。
CSFが向くケース:
- ホスティング環境で複数サービス(SSH/SMTP/FTP等)を一元的に監視・管理したい場合。
- cPanel/DirectAdminと統合して運用したい場合。
CSFが向かないケース:
- nftablesへ完全移行済みでiptablesレイヤーを使わない環境。
- 低レイヤーのパケットフィルタリングや高度な状態管理を独自で実装したい場合。
失敗例と回避策
よくある失敗:
TESTINGを0にせず本番反映したためにSSHが遮断された。
- 回避策: コンソールアクセス(KVM/IPMI)を確保してから有効化する。
CC_DENYで必要な顧客の国を遮断してしまった。
- 回避策: テスト環境で国別ブロックを検証し、ログを確認した上で本番投入する。
csf.allowを編集してもlFDが一時ブロックする。
- 回避策: IGNORE_ALLOW=1 を有効化するか、lFDの条件を調整する。
受け入れ基準(テストケース)
導入後に必ず確認するテスト項目:
- csftest.pl の出力が “RESULT: csf should function on this server” となること。
- csf -s 実行後に SSH接続が維持されること(管理者は別経路で検証)。
- csf -a で追加したIPが csf.allow に記載され、iptablesにACCEPTルールが追加されること。
- csf -d でブロックしたIPが csf.deny に記載され、iptablesにDROPルールが追加されること。
- LF_SSH_EMAIL_ALERT を有効にした場合、SSHログインアラートが指定メールに届くこと。
- サービス再起動(systemctl restart csf/lfd)後に自動起動が有効なこと。
用語集(1行定義)
- CSF: Config Server Firewall。iptables上で動作するアプリケーション層のファイアウォール。
- LFD: Login Failure Daemon。ログ解析により侵入や繰り返し失敗を検出するデーモン。
- csf.allow / csf.deny: それぞれ許可リスト/拒否リスト。IPを手動で管理するためのファイル。
- CC_DENY / CC_ALLOW: 国コードによるブロック/許可設定。
まとめ
CSFはホスティングやサーバー運用の現場で便利に使える、アプリケーション層に強みのあるファイアウォールです。インストールは簡単で、csf.conf を適切にチューニングすれば、攻撃の自動防御やログ監視が容易になります。ただし、firewalldやnftablesとの競合、国別ブロックの副作用、テストモードの誤設定など運用上の注意点があります。導入前にバックアップとコンソールアクセスの確保、導入後は上記の受け入れ基準に沿った確認を行ってください。
ソーシャルプレビュー(例): CSFを使ったCentOS 7向けのインストール手順と運用チェックリストを短くまとめました。運用開始時の落とし穴と回避法も掲載しています。