この記事では、Debian 9 VPSにCSFファイアウォールをインストールして構成する方法と、CSFの使用方法に関するヒントを紹介します。
ConfigServer Security&Firewall(CSF)は、iptablesに基づく無料の高度なファイアウォール管理ツールです。 CSFは、サーバーに高レベルのセキュリティを提供し、非常に簡単であるため、サポートされているすべてのLinuxディストリビューションに簡単にセットアップしてインストールできます。サポートされているLinuxディストリビューションの1つであるDebian9を使用します。 CSFには、サーバーの保護に役立つ多くのサービスに対するポートスキャン、SYNフラッド、ブルートフォース攻撃などの多くの優れた機能があります。 CSFの非常に優れた機能の1つは、Webブラウザからファイアウォールを管理するための組み込みのWebUIを提供することです。このUI統合は、cPanel、DirectAdminによってサポートされているだけでなく、サーバー上で独立して機能します。
CSFのインストールには、Login Failure Daemon(LFD)と呼ばれる別のサービスも付属しています。 LFDは、実際にはログファイルを監視し、CSF構成ルールに基づいて電子メール通知を送信するプロセスです。インストールから始めましょう。
ステップ1:サーバーに接続する
始める前に、rootユーザーとしてSSH経由でサーバーに接続する必要があります。または、rootユーザーにアクセスできない場合は、sudo権限を持つユーザーアカウントを使用できます。これを行うには、次のコマンドを使用します。
ssh root@IP_Address -p Port_Number
もちろん、IP_Address
を置き換える必要があります およびPort_Number
実際のサーバーのIPアドレスとSSHポート番号を使用します。
ログインしたら、次のコマンドを実行して、サーバーが最新であることを確認します。
apt update apt upgrade
ステップ2:CSF/LFDをインストールする
サーバーが正常に更新されたら、次のコマンドを実行して、現在のディレクトリを/ optに変更し、最新のCSFソースコードをダウンロードして、同じディレクトリに解凍します。
cd /opt/ wget http://download.configserver.com/csf.tgz tar xzf csf.tgz
インストールを続行する前に、UFWなどの別のファイアウォールを使用していないことを確認してください。次の2つのコマンドは、ディレクトリを/ opt / csf /に変更し、インストールスクリプトを実行します。
cd /opt/csf sh install.sh
ファイアウォールのインストールは完了しましたが、CSFで適切に機能するために必要なiptablesモジュールが利用可能かどうかを確認することをお勧めします。次のコマンドでそれを行うことができます:
perl /usr/local/csf/bin/csftest.pl
出力:
Testing ip_tables/iptable_filter...OK Testing ipt_LOG...OK Testing ipt_multiport/xt_multiport...OK Testing ipt_REJECT...OK Testing ipt_state/xt_state...OK Testing ipt_limit/xt_limit...OK Testing ipt_recent...OK Testing xt_connlimit...OK Testing ipt_owner/xt_owner...OK Testing iptable_nat/ipt_REDIRECT...OK Testing iptable_nat/ipt_DNAT...OK RESULT: csf should function on this server
テストから致命的なエラーが報告されていない場合、CSFファイアウォールは正しく機能します。
ステップ3:基本構成
CSFファイアウォールを構成する場合は、構成ファイル「csf.conf」を編集する必要があります。このチュートリアルでは、エディターとしてnanoを使用しますが、お気に入りのエディターを自由に使用して構成ファイルを編集できます。
nano /etc/csf/csf.conf
構成ファイルを最初にチェックインする必要があるのは、サーバーで開いているポートです。通常、デフォルトでは、最も一般的に使用されるポートはすでに開いていますが、サーバー上の特定のポートを開く必要がある場合もあります。次のリストは、CSFによってデフォルトで開かれているポートのリストです。
# Allow incoming TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995" # Allow outgoing TCP ports TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995" # Allow incoming UDP ports UDP_IN = "20,21,53" # Allow outgoing UDP ports # To allow outgoing traceroute add 33434:33523 to this list UDP_OUT = "20,21,53,113,123"
デフォルトでリストされているサービスの一部がサーバーで使用されていない場合、ベストプラクティスはそれらを閉じることです。サーバー上のポートへのアクセスが少ないほど、サーバーのセキュリティは向上します。
CSFは、構成ファイルでさまざまなオプションを提供します。ただし、最も一般的に使用される設定の一部のみを取り上げます。
ICMP_IN –このオプションは、PINGからサーバーの可用性を制御するためのものです。デフォルトでは、この設定は1に設定されているため、すべての着信PING要求を許可できます。このオプションを無効にすると、外部の監視システムを使用できなくなります。
IGNORE_ALLOW –このオプションを有効にすると、LFDはcsf.allow
にリストされているすべてのIPアドレスを無視します。 ファイル。このオプションは、自宅やオフィスで静的IPアドレスを使用していて、このIPアドレスがサーバーのファイアウォールからブロックされないようにする場合に役立ちます。
SYNFLOOD 、 SUNFLOOD_RATE およびSYNFLOOD_BURST –このオプションは、サーバーがSYNフラッド攻撃を受けている場合にのみ使用してください。このオプションを有効にするとサーバーの速度が大幅に低下し、一部の訪問者が接続に問題を起こす可能性があるため、このオプションを有効にすることはお勧めしません。
LF_ALERT_TO およびLF_ALERT_FROM –ここで、アラートに使用する電子メールアドレスを定義します。
テスト –デフォルトでは、TESTINGは1に設定されています。これは、CSFの起動時に構成に問題が発生した場合に、CSFがiptables構成をクリアするCRONジョブを有効にすることを意味します。これは、サーバーからロックアウトされないようにするための予防策です。すべての設定に問題がないことを完全に確認したら、値をゼロに設定して、LFDサービスを有効にすることができます。
必要なすべての設定を定義したら、構成ファイルを保存して再起動し、CSFおよびLFDサービスを有効にして、起動時に自動的に開始することができます。
systemctl restart csf systemctl enable csf systemctl restart lfd systemctl enable lfd
ステップ4:CSF/LFD通知
CSF LFDの多くのオプションの1つは、サーバー上のイベントを監視するのに役立つさまざまな通知です。記事のこのセクションでは、これらの通知の一部を有効または無効にする方法を説明します。
まず、特定のシステムファイルの変更をチェックするシステム整合性アラートから始めます。これらの通知は、侵害されたファイルを検出するのに役立ちますが、正当なシステムアップデートで変更が加えられたときにもメールを受信します。
システムに加えられた変更を追跡する場合は、これらのタイプの通知を残すことができます。これらの通知を受け取らないことにした場合は、 LF_INTEGRITYを見つけて無効にすることができます。 csf.confファイルのパラメータを指定してその値を0に設定するか、次のコマンドを実行するだけです。
sed -i 's/LF_INTEGRITY = "3600"/LF_INTEGRITY = "0"/g' /etc/csf/csf.conf
話したい2番目のタイプの通知は、過剰なリソース使用量のアラートです。これらのタイプの通知はおそらく最も一般的です。 LFDには、サーバーで実行されているプロセスを監視し、リソースの使用量が多すぎる場合に電子メールを送信できる機能があります。これらの通知の目的は、サーバーでの読み込みの問題を引き起こす可能性のある最も集中的なプロセスを追跡することです。これらの通知を受け取らないことにした場合は、 PT_USERMEMを見つけて無効にすることができます。 およびPT_USERTIME csf.confファイルのパラメータを指定してその値を0に設定するか、次のコマンドを実行するだけです。
sed -i 's/PT_USERTIME = "1800"/PT_USERTIME = "0"/g' /etc/csf/csf.conf sed -i 's/PT_USERMEM = "512"/PT_USERMEM = "0"/g' /etc/csf/csf.conf
プロセス追跡オプションは、サーバー上で疑わしい実行可能ファイルまたは開いているネットワークポートを調べます。これらの通知は、これらのプロセスがシステムサービスとして表示されている場合でも、潜在的に悪用されるプロセスを検出するのに役立ちます。これらの通知を受け取らないことにした場合は、 PT_LIMITを見つけて無効にすることができます。 csf.confファイルのパラメータを指定してその値を0に設定するか、次のSSHコマンドを実行するだけです。
sed -i 's/PT_LIMIT = "60"/PT_LIMIT = "0"/g' /etc/csf/csf.conf
この記事で取り上げる最後の種類の通知は、IPブロックに関するアラートです。
CSF / LFDには、特定の理由でIPアドレスをブロックする機能があります。システムがIPアドレスをブロックするたびに、ブロックされたIPアドレスとブロックされた理由が記載された電子メールで通知されます。これらのタイプの通知を管理する場合は、csf.confファイルを開いて、次のオプションを見つけることができます。
LF_EMAIL_ALERT –IPアドレスが[*]トリガーの1つによってブロックされた場合に電子メールアラートを送信します
LF_PERMBLOCK_ALERT – IPアドレスが数回以上ブロックされた場合(構成するには、 LF_PERMBLOCK_COUNTを使用します )このオプションは、IPアドレスが永続的にブロックされたときに電子メール通知を送信します。
LF_NETBLOCK_ALERT – IPネットワーククラスがブロックされた場合は、電子メール通知を受け取ります。
LF_DISTFTP_ALERT – LF_DISTFTPの場合 がトリガーされると、FTP分散攻撃に関与した理由でブロックされたIPアドレスが記載された電子メール通知を受け取ります。
LF_DISTSMTP_ALERT – LF_DISTSMTPの場合 がトリガーされると、SMTP分散攻撃に関与した理由でブロックされたIPアドレスが記載された電子メール通知を受け取ります。
LT_EMAIL_ALERT –アカウントがIPアドレスあたりの1日のログイン数を超えると、電子メールアラートが送信されます。
CT_EMAIL_ALERT –接続の追跡が原因でIPアドレスがブロックされている場合は、電子メールアラートを受信します。これらのタイプの電子メールアラートは、 CT_LIMITによってトリガーされます 特徴。 CT_LIMIT オプションは、サーバーをDOS攻撃から保護することを目的としています。
これらの通知を受け取らないことを選択した場合は、csf.confファイルで通知を見つけて値を0に設定することで通知をオフにするか、次のコマンドを実行するだけです。
sed -i 's/LF_EMAIL_ALERT = "1"/LF_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/LF_PERMBLOCK_ALERT = "1"/LF_PERMBLOCK_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/LF_NETBLOCK_ALERT = "1"/LF_NETBLOCK_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/LF_DISTFTP_ALERT = "1"/LF_DISTFTP_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/LF_DISTSMTP_ALERT = "1"/LF_DISTSMTP_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/LT_EMAIL_ALERT = "1"/LT_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf sed -i 's/CT_EMAIL_ALERT = "1"/CT_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf
変更を加えたら、次のsystemctlコマンドを使用してCSFとLFDを再起動する必要があります。
systemctl restart csf systemctl restart lfd
ステップ5:コマンドラインからCSFを管理する
CSFは、コマンドラインまたは組み込みのWebユーザーインターフェイスを介して管理できます。チュートリアルのこの部分では、コマンドラインからCSFを管理するのに役立つ便利なコマンドの短いリストを作成します。
CSFの開始、停止、再起動/リロード:
csf -s : Start csf
csf -f : Stop csf
csf -r : Reload/Restart csf
IPを許可し、それをcsf.allowに追加します(IPをホワイトリストに登録します):
csf -a 123.45.67.89
出力:
Adding 123.45.67.89 to csf.allow and iptables ACCEPT... ACCEPT all opt -- in !lo out * 123.45.67.89 -> 0.0.0.0/0 ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.89
csf.allowからIPを削除して削除します:
csf -ar 123.45.67.89
出力:
Removing rule... ACCEPT all opt -- in !lo out * 123.45.67.89 -> 0.0.0.0/0 ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.89
IPを拒否し、csf.denyに追加します(IPをブラックリストに登録します):
csf -d 123.45.67.89
出力:
Adding 123.45.67.89 to csf.deny and iptables DROP... DROP all opt -- in !lo out * 123.45.67.89 -> 0.0.0.0/0 LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.89
csf.denyからIPを削除して削除します(IPアドレスのブロックを解除します):
csf -dr 123.45.67.89
出力:
Removing rule... DROP all opt -- in !lo out * 123.45.67.89 -> 0.0.0.0/0 LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.89
csf.denyからすべてのIPアドレスを削除してブロックを解除します:
csf -df
出力:
DROP all opt -- in !lo out * 123.45.67.88 -> 0.0.0.0/0 LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.88 DROP all opt -- in !lo out * 123.45.67.89 -> 0.0.0.0/0 LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 123.45.67.89 csf: all entries removed from csf.deny
iptablesでパターン一致を検索します(例:IP、CIDR、ポート番号:
)csf -g 123.45.67.89
出力:
Table Chain num pkts bytes target prot opt in out source destination filter DENYIN 1 0 0 DROP all -- !lo * 123.45.67.89 0.0.0.0/0 filter DENYOUT 1 0 0 LOGDROPOUT all -- * !lo 0.0.0.0/0 123.45.67.89
一時的な許可および拒否IPエントリの現在のリストをTTLとコメントとともに表示します:
csf -t
csfの更新を確認し、可能な場合はアップグレードします。
csf -u
CSFとLFDを完全に無効にします:
csf -x
以前に無効にした場合はCSFとLFDを有効にします:
csf -e
CSFバージョンを表示する:
csf -v
出力:
csf: v13.04 (generic)
その他のオプションについては、次のコマンドを確認できます:
csf -h
ステップ6:CSFファイアウォールのWebUIを有効にする
このステップでは、CSFWebユーザーインターフェイスを有効にする方法を示します。この手順はオプションであり、CSF UIをサポートするコントロールパネル(WHM / cPanel、DirectAdmin、Webminなど)を使用しない場合にのみ使用する必要があります
CSF UIでは、サーバーにいくつかのPerlモジュールをインストールする必要があります。次のコマンドを使用してPerlモジュールをインストールすることにより、これらの要件を満たすことができます。
apt install libio-socket-ssl-perl libcrypt-ssleay-perl libnet-libidn-perl libio-socket-inet6-perl libsocket6-perl
次に、CSFWebユーザーインターフェイスを有効にします。 csf.confファイルを編集してCSFWebインターフェイスを有効にできます:
nano /etc/csf/csf.conf
次の値を更新します:
# 1 to enable, 0 to disable web ui UI = "1" # Set port for web UI. The default port is 6666, but # I change this to 7171 for easy access. The default port creates some issue # with the chrome and firefox browsers (in my case) UI_PORT = "7171" # Leave blank to bind to all IP addresses on the server UI_IP = "" # Set username for authetnication UI_USER = "admin" # Set a strong password for authentication UI_PASS = "Str0n9_PasSw0rD"
この例の値を適切な値に自由に変更してください。変更を加えて保存したら、ui.allow構成ファイルを編集してパブリックIPアドレスをホワイトリストに登録できます。
「Your_Public_IP_Address
」を置き換えます ‘実際のIPアドレスを使用して、次のコマンドを実行します:
sudo echo "Your_Public_IP_Address" >> /etc/csf/ui/ui.allow
行った変更を適用するには、LFDサービスを再起動する必要があります。次のコマンドを使用して、サーバーでLFDデーモンを再起動します。
sudo service lfd restart
これで、サーバーのIPアドレスとcsf.confファイルで使用した特定のポートを使用してブラウザーのCSFUIにアクセスできるようになります。この例では、ポート7171を使用しました。
https://Your_Public_IP_Address:7171
ログインに成功すると、CSFユーザーインターフェイスを表示できるようになります。
クイック許可、クイック拒否、またはクイックブロック解除は、CSFUIの非常に便利なオプションです。
この記事では、Debian 9にCSFを使用してファイアウォールをインストールおよび構成する方法と、CSFの使用について簡単に説明しました。これで、このガイドの知識を使用して、サーバーの保護に役立つ独自のCSFファイアウォールルールの作成を開始できます。
もちろん、Debian Hostingをご利用の場合は、サーバー上でCSFを使用してファイアウォールを構成する必要はありません。管理者に聞いて、くつろいでリラックスしてください。管理者がサーバーのファイアウォールルールをすぐに構成します。
PS。 Debian 9でCSFを使用してファイアウォールを構成する方法に関するこの投稿が気に入った場合は、下の共有ボタンを使用してソーシャルネットワーク上の友達とファイアウォールを共有するか、コメントセクションにコメントを残してください。ありがとう。