UbuntuにConfigServerFirewall(CSF)をインストールして構成する方法
序章
Config Server Firewall(またはCSF)は、ほとんどのLinuxディストリビューションおよびLinuxベースのVPS用の無料の高度なファイアウォールです。 ファイアウォールの基本機能(パケットのフィルタリング)に加えて、CSFには、ログイン/侵入/フラッド検出などの他のセキュリティ機能が含まれています。 CSFにはcPanel、DirectAdmin、WebminのUI統合が含まれていますが、このチュートリアルではコマンドラインの使用法のみを取り上げています。 CSFは、ポートスキャン、SYNフラッド、ログインブルートフォース攻撃など、多くのサービスに対する多くの攻撃を認識できます。 クラウドサーバーへの攻撃が検出されたクライアントを一時的にブロックするように構成されています。
サポートされているオペレーティングシステムと機能の完全なリストは、ConfigServer’のWebサイトにあります。
このチュートリアルは、DebianやUbuntuなどのDebianベースのVPS向けに書かれています。 コマンドは、root権限で実行するか、rootとしてログインするか、sudoがインストールされている場合は次のコマンドでrootシェルを開始する必要があります。
sudo su
ノート: このチュートリアルでは、IPv4セキュリティについて説明します。 Linuxでは、IPv6のセキュリティはIPv4とは別に維持されます。 たとえば、「iptables」はIPv4アドレスのファイアウォールルールのみを維持しますが、「ip6tables」と呼ばれるIPv6の対応物があり、IPv6ネットワークアドレスのファイアウォールルールを維持するために使用できます。
VPSがIPv6用に構成されている場合は、IPv4とIPv6の両方のネットワークインターフェイスを適切なツールで保護することを忘れないでください。 IPv6ツールの詳細については、次のガイドを参照してください。LinuxVPSでIPv6を使用するようにツールを構成する方法
特徴
Config Server Firewallは、VPSに幅広い保護を提供します。
ログイン認証失敗デーモン:
CSFは、一定の時間間隔で失敗したログイン試行のログをチェックし、クラウドサーバーへのアクセスを取得するためのほとんどの不正な試行を認識できます。 CSFが実行する目的のアクションと、構成ファイルでの試行回数を定義できます。
この機能では、次のアプリケーションがサポートされています。
- Courier imap、Dovecot、uw-imap、Kerio
- openSSH
- cPanel、WHM、Webメール(cPanelサーバーのみ)
- Pure-ftpd、vsftpd、Proftpd
- パスワードで保護されたWebページ(htpasswd)
- Mod_securityの失敗(v1およびv2)
- スホシンの失敗
- Exim SMTP AUTH
これらに加えて、正規表現のマッチングを使用して独自のログインファイルを定義できます。 これは、失敗したログインをログに記録するが、特定の回数の試行後にユーザーをブロックするアプリケーションがある場合に役立ちます。
プロセス追跡
CSFは、疑わしいプロセスを検出したり、ネットワークポートを開いたりするためにプロセスを追跡し、検出された場合はシステム管理者に電子メールを送信するように構成できます。 これは、VPSで発生する可能性のあるエクスプロイトを特定して阻止するのに役立つ場合があります。
ディレクトリウォッチング
ディレクトリ監視は、/ tempおよびその他の関連するフォルダに悪意のあるスクリプトがないか監視し、スクリプトが検出されるとシステム管理者に電子メールを送信します。
メッセンジャーサービス
この機能を有効にすると、ブロックが適用されたときにCSFがより有益なメッセージをクライアントに送信できるようになります。 この機能には長所と短所の両方があります。 一方では、それを有効にすると、クライアントにより多くの情報が提供されるため、たとえばログインに失敗した場合のフラストレーションが少なくなる可能性があります。 一方、これはより多くの情報を提供し、攻撃者がVPSを攻撃しやすくする可能性があります。
港の洪水防御
この設定は、サービス拒否(DoS)攻撃などのポートフラッド攻撃に対する保護を提供します。 お好みの期間内に、各ポートで許可される接続の量を指定できます。 この機能を有効にすると、攻撃者がサービスを強制的に停止するのを防ぐことができるため、この機能を有効にすることをお勧めします。 設定を制限しすぎると通常のクライアントからの接続が切断されるため、設定する制限に注意する必要があります。 繰り返しになりますが、設定が許容範囲を超えていると、攻撃者がフラッド攻撃に成功する可能性があります。
ポートノッキング
ポートノッキングにより、クライアントはポートが開いていないサーバーに接続を確立できます。 サーバーは、ポートノックシーケンスが成功した後にのみ、クライアントがメインポートに接続できるようにします。 限られた視聴者のみが利用できるサービスを提供する場合、これが役立つ場合があります。
接続制限保護
この機能を使用して、IPアドレスから各ポートへのアクティブな接続の同時実行数を制限できます。 適切に構成されている場合、これにより、DoS攻撃などのサーバーでの悪用を防ぐことができます。
ポート/IPアドレスのリダイレクト
CSFは、IP/ポートへの接続を別のIP/ポートにリダイレクトするように構成できます。 注:リダイレクト後、クライアントの送信元アドレスはサーバーのIPアドレスになります。 これは、ネットワークアドレス変換(NAT)と同等ではありません。
UI統合
コマンドラインインターフェイスに加えて、CSFはcPanelとWebminのUI統合も提供します。 Linuxコマンドラインに慣れていない場合は、この機能が役立つ場合があります。
IPブロックリスト
This feature allows CSF to download lists of blocked IP addresses automatically from sources defined by you.
ConfigServerファイアウォールのインストール
ステップ1:ダウンロード
Config Server Firewallは現在DebianまたはUbuntuリポジトリでは利用できないため、ConfigServerのWebサイトからダウンロードする必要があります。
wget http://download.configserver.com/csf.tgz
これにより、CSFが現在の作業ディレクトリにダウンロードされます。
ステップ2:解凍
ダウンロードしたファイルはtarパッケージから圧縮されたものであり、使用する前に解凍して解凍する必要があります。
tar -xzf csf.tgz
ステップ3:インストール
UFWなどの別のファイアウォール構成スクリプトを使用している場合は、続行する前にそれを無効にする必要があります。 Iptablesルールは自動的に削除されます。
UFWは、次のコマンドを実行して無効にできます。
ufw disable
次に、CSFのインストーラースクリプトを実行します。
cd csf
sh install.sh
これでファイアウォールがインストールされましたが、必要なiptablesモジュールが使用可能かどうかを確認する必要があります。
perl /usr/local/csf/bin/csftest.pl
致命的なエラーが報告されない場合、ファイアウォールは機能します。
注:可能であれば、IPアドレスがホワイトリストに追加されました。 さらに、SSHポートは、カスタムポートを使用している場合でも、自動的に開かれています。 ファイアウォールは、テストモードを有効にするようにも構成されています。つまり、CSFを開始してから5分後にiptablesルールが自動的に削除されます。 構成が機能することがわかったら、これを無効にする必要があります。これにより、ロックアウトされることはありません。
基本構成
CSFは、/ etc/csfにある構成ファイルcsf.confを編集することで構成できます。
nano /etc/csf/csf.conf
変更は次のコマンドで適用できます。
csf -r
ステップ1:ポートを構成する
VPSへのアクセスが少ないほど、サーバーの安全性は高くなります。 ただし、クライアントがサービスを使用できる必要があるため、すべてのポートを閉じることができるわけではありません。
デフォルトで開かれているポートは次のとおりです。
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995" TCP_OUT = "20,21,22,25,53,80,110,113, 443" UDP_IN = "20,21,53" UDP_OUT = "20,21,53,113,123"
開いているポートを使用するサービス:
- ポート20:FTPデータ転送
- ポート21:FTP制御
- ポート22:セキュアシェル(SSH)
- ポート25:SMTP(Simple Mail Transfer Protocol)
- ポート53:ドメインネームシステム(DNS)
- ポート80:ハイパーテキスト転送プロトコル(HTTP)
- ポート110:Post Office Protocol v3(POP3)
- ポート113:認証サービス/識別プロトコル
- ポート123:ネットワークタイムプロトコル(NTP)
- ポート143:インターネットメッセージアクセスプロトコル(IMAP)
- ポート443:SSL / TLS(HTTPS)を介したハイパーテキスト転送プロトコル
- ポート465:SSMのURLランデブーディレクトリ(Cisco)
- ポート587:電子メールメッセージ送信(SMTP)
- ポート993:SSLを介したインターネットメッセージアクセスプロトコル(IMAPS)
- ポート995:TLS / SSL(POP3S)を介したPost Office Protocol 3
これらのサービスのすべてを使用していない可能性があるため、使用されていないポートを閉じることができます。 すべてのポートを閉じて(リストからポート番号を削除して)、必要なポートを追加することをお勧めします。
リストされたサービスを実行している場合に開く必要のあるポートセットは次のとおりです。
任意のサーバー:
TCP_IN: 22,53 TCP_OUT: 22,53,80,113,443 UPD_IN: 53 UPD_OUT: 53,113,123
Apache:
TCP_IN: 80,443
FTPサーバー:
TCP_IN: 20,21 TCP_OUT: 20,21 UPD_IN: 20,21 UPD_OUT:20,21
メールサーバー:
TCP_IN: 25,110,143,587,993,995 TCP_OUT: 25,110
MySQLサーバー(リモートアクセスが必要な場合)
TCP_IN: 3306 TCP_OUT: 3306
注:サービスにIPv6を使用している場合は、以前のIPv4ポートの構成と同様に、TCP6_IN、TCP6_OUT、UPD6_IN、およびUPD6_OUTも構成する必要があります。
TCPおよびUDPポートの包括的なリストは、Wikipediaにあります。 使用するすべてのサービスのポートを開く必要があります。
ステップ2:追加設定
CSFは、構成ファイルで膨大な数の異なるオプションを提供します。 最も一般的に使用される設定のいくつかを以下に説明します。
ICMP_IN ICMP_INを1に設定すると、サーバーへのpingが可能になり、0の拒否がそのような要求になります。 パブリックサービスをホストしている場合は、ICMPリクエストを許可することをお勧めします。これは、サービスが利用可能かどうかを判断するために使用できるためです。
ICMP_IN_LIMIT 指定された時間内に1つのIPアドレスから許可されるICMP(ping)要求の数を設定します。 通常、デフォルト値(1 / s)を変更する必要はありません。
DENY_IP_LIMITCSFが追跡するブロックされたIPアドレスの数を設定します。 ブロックが多すぎるとサーバーのパフォーマンスが低下する可能性があるため、拒否されるIPアドレスの数を制限することをお勧めします。
DENY_TEMP_IP_LIMIT 上記と同じですが、一時的なIPアドレスブロック用です。
PACKET_FILTER 無効、不要、および不正なパケットをフィルタリングします。
SYNFLOOD、SUNFLOOD_RATE、SYNFLOOD_BURST これにより、SYNフラッド攻撃に対する保護が提供されます。 これにより、すべての接続の初期化が遅くなるため、サーバーが攻撃を受けていることがわかっている場合にのみ、これを有効にする必要があります。
CONNLIMITポートで同時にアクティブになる接続の数を制限します。
価値:
22;5;443;20
ポート22で5つの同時接続を許可し、ポート443で20の同時接続を許可します。
PORTFLOOD特定のポートに対して新しい接続を確立できる時間間隔ごとの接続数を制限します。
価値:
22;tcp;5;250
250秒以内にTCPプロトコルを使用してポート22で5つを超える接続が確立された場合、IPアドレスのブロックを制限します。 クライアントからこのポートに最後のパケットが送信されてから250秒が経過すると、ブロックが削除されます。 以下に説明するように、ポートをコンマで区切ることにより、ポートをさらに追加できます。
port1;protocol1;connection_count1;time1,port2;protocol2; connection_count2;time2
その他の設定
CSFは、このチュートリアルではカバーされていない幅広い設定を提供します。 デフォルト値は一般的に適切であり、ほとんどすべてのサーバーで使用できます。 デフォルト設定は、ほとんどのフラッド攻撃、ポートスキャン、および不正アクセスの試行を防ぐように構成されています。
ただし、構成をより詳細に調整したい場合は、/ etc / csf / csf.confのコメントを読み、必要に応じて編集してください。
ステップ3:変更を適用する
csf.confの設定を変更するときはいつでも、変更を有効にするためにファイルを保存してCSFを再起動する必要があります。
構成の準備ができたら、Ctrl+Xを押してファイルを閉じます。 変更を保存するかどうかを尋ねられたら、Yを押して変更を保存します。
この後、次のコマンドでCSFを再起動して変更を適用する必要があります。
csf -r
すべてが計画どおりに進み、それでもサーバーにアクセスできる場合は、構成ファイルをもう一度開きます。
nano /etc/csf/csf.conf
次に示すように、構成ファイルの先頭にあるTESTINGの設定を0に変更します。
TESTING = "0"
ファイルを保存し、次のコマンドで変更を適用します。
csf -r
IPアドレスのブロックと許可
ファイアウォールの最も基本的な機能の1つは、特定のIPアドレスをブロックする機能です。 構成ファイルcsf.deny、csf.allow、およびcsf.ignoreを編集することにより、IPアドレスを拒否(ブラックリスト)、許可(ホワイトリスト)、または無視することができます。
IPアドレスのブロック
IPアドレスまたは範囲をブロックする場合は、csf.denyを開きます。
nano /etc/csf/csf.deny
ブロックされたIPアドレスまたは範囲はすべて、csf.denyファイルで1行を予約します。 IPアドレス1.2.3.4とIP範囲2.3。*。*をブロックする場合は、ファイルに次の行を追加する必要があります。
1.2.3.4 2.3.0.0/16
IP範囲は、CIDR表記を使用して表されます。
IPアドレスを許可する
IPアドレスまたは範囲をすべてのブロックおよびフィルターから除外する場合は、それらをcsf.allowファイルに追加できます。 許可されたIPアドレスは、csf.denyファイルで明示的にブロックされている場合でも許可されることに注意してください。
IPアドレスを許可することは、それらをブロックすることと同様に機能します。 唯一の違いは、csf.denyの代わりに/etc/csf/csf.allowを編集する必要があることです。
nano /etc/csf/csf.allow
IPアドレスを無視する
CSFは、ファイアウォールフィルターからIPアドレスを除外する機能も提供します。 csf.ignoreのIPアドレスはファイアウォールフィルターをバイパスし、csf.denyファイルにリストされている場合にのみブロックできます。
nano /etc/csf/csf.ignore
変更を有効にするには、コマンドを使用して上記のファイルのいずれかを編集した後、CSFを再起動する必要があります。
csf -r