!/空/sh

!/空/sh

これは、ほとんどのサーバーと同様に、遠くから継続的に攻撃を受けているcPanelサーバーに関するものです。アメリカとカナダのクライアントだけを務めるという点を考慮すると、アシアナ南アメリカなどの地域へのフルアクセスを許可する理由はありません。

ファイアウォールのルールが多すぎると遅延時間が長くなり、最悪の場合はファイアウォールが破損する可能性があります。しかし、毎日の攻撃件数が多いため、最大7000のルールを管理するようにCSFを構成しました。攻撃が少ない日もあるが、1日にはSMTP(669)とcPanel(2)に接続しようとしていたところ、671個のIPがブロックされた。

この問題をよりよく制御するために、誰もがWebアクセスを許可し、特定のチャンクのFTPまたはSMTPアクセスをブロックすることを検討しました。だから、これは私がCSF辞書規則[/usr/local/csf/bin/csfpre.sh]に入れたものです。

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21:25 -s 1.0.0.0/8 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -s 2.0.0.0/8 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -s 112.0.0.0/8 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -s 113.0.0.0/8 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -s 117.0.0.0/8 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -s 190.0.0.0/8 -j DROP

今私は私のiptables技術に完全に自信がないので、これについてのコメントを聞きたいです。もちろんここに問題がある場合はフィードバックも受けたいです。

私はこれが潜在的に良い電子メールをたくさんブロックするだけでなく、サーバー上でホストされているサイトで作業するために雇用されている分野のすべてのWeb開発者をブロックすることを知っています。私の考えでは、有効な電子メールがこれらのIP範囲から出る可能性ははるかに少ないです。また、攻撃回数に応じてブロックを選択しました。

たとえば、ロシアの実際のIPブロックを6000〜7000個ロードするのではなく、クラスAブロック全体を一括ブロックすることに集中するだけで、ファイアウォールルールを大幅に削減し、単純に保つことができます。

私はこのサイトを使用してブロックされる国を特定します。 tcpiputils.com

答え1

スパムソフトウェアはこの状況をよりよく処理できますか? 1日に670のホストは大量のホストではありません。この規模では、誰もが許可されるようにホストの速度制限を考慮することもできますが、誰かが繰り返し接続してスパムを試みる場合はブロックできます。これは接続追跡を介して行うことができます。何百万ものホストが連絡している場合、接続追跡は大幅に間違っている可能性がありますが、1日に670回程度は問題ありません。これは次の意味です(テストされていない、申し訳ありません)。

iptables -A INPUT -p tcp --dport 21:25 -i eth0 -m conntrack --ctstate NEW -m recent  --update --seconds 300 --hitcount 20 -j DROP
iptables -A INPUT -p tcp --dport 21:25 -i eth0 -m conntrack --ctstate NEW -m recent --set

(もちろん、一括メールを送信した人をホワイトリストに追加することもできます。)

答え2

まあ、まだ良い反応を得ていません。これを達成するには、何が効果的であるかを判断するために試行錯誤と監視が必要になります。

実行可能ファイルでフルパスを使用する必要があるため、上記の例がすべてのシステムで機能しないように何かが必要であることがわかりました。また、ポート範囲を指定するときに--match multiportを追加する必要があります。それ以外の場合、ルールは完全に無視されます。最後に、シェルがスクリプトを正しく実行できるように、上部にshebangを追加しました。

これが最終版です。

/usr/local/csf/bin/csfpre.sh

#!/bin/sh
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p all -s 60.168.112.0/20 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 1.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 112.0.0.0/7 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 116.96.0.0/12 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 116.118.0.0/16 -j DROP
/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26,110,465,587,995 -s 117.0.0.0/8 -j DROP

次に、CSFファイアウォールがインストールされているcPanelサーバーで何が起こるかを詳しく見てみましょう。

  1. CSFを使用すると、別のグループで実行されるカスタムルールを追加できます。すべてのグループは最終的にiptablesによって実行されます。まず、csfpre.sh、CSF、csfpost.shです。

  2. csfpre.shファイルが存在しない場合は作成します。 /etc/フォルダに入れることもできますが、常に/usr/local/csf/bin/にあるバージョンに優先順位が付けられます。

  3. 上部にshebangを追加します。

    !/空/sh

  4. 私の計画はcsfpre.shを介していくつかのポートブロックを実行することですが、すべてのルールを実行するのではなく、まず接続がWebアクセス用であるかどうかを検出します。これを最初に確認すると、遅延時間/応答時間を短縮できます。

ポート80および443は、HTTPおよびHTTPSプロトコルに使用されます。まず、これらのポートのルールを入力した場合は、このcsfpreグループのルールチェックを受け入れて停止します。

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. 次の行が次のようになると、80と443を除く他のすべてのポートを完全にブロックできます。

    /sbin/iptables -A Enter -p all -s 60.168.112.0/20 -j 削除

すべてのネットワークトラフィックが許可されるため、この範囲内のウェブサイトトラフィックはブロックされません。この行が最初に表示されると、ネットワークトラフィックを含むすべてのトラフィックがブロックされます。私はサブネット全体をブロックして、良いユーザーがサイトを見るのを防ぎたくありません。

  1. ブロックが特定のポートに縮小されると、特定のポート、範囲、リスト、またはこれらのポートの組み合わせをブロックできます。

FTPのみブロック:

/sbin/iptables -A INPUT -p tcp --dport 21 -s 1.0.0.0/8 -j DROP

FTPは実際にはいくつかの異なるポートを使用して接続を確立し、標準ポートが22のSFTP / SSHも使用するため、コロンで区切られた開始ポートと終了ポートを使用して範囲をブロックするのが最善です。

/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26 -s 1.0.0.0/8 -j DROP

範囲またはリストを使用する場合は、複数のポートに--matchを使用する必要があります。リストは15個のポートを超えることはできず、範囲内の各ポートは合計15個のポートに含まれています。

標準のSMTPメールポートをブロックすることもできます。

/sbin/iptables -A INPUT -p tcp --match multiport --dport 110,465,587,995 -s 117.0.0.0/8 -j DROP

そして、リストの範囲を使用して、ルールで実際にFTPとメールポートをブロックできます。

/sbin/iptables -A INPUT -p tcp --match multiport --dport 21:26,110,465,587,995 -s 117.0.0.0/8 -j DROP
  1. スクリプトを保存してファイアウォールを再起動します。

  2. 必要に応じてCSFとcpHulkが個々のIPアドレスをブロックするようにします。

ローカル接続なしでスマートフォンを使用してテストできます。携帯電話のIPアドレスを確認し、使用しているコンピュータと異なることを確認してください。その後、サーバーとFTPプログラムを介して電子メールを確認または送信するように携帯電話を設定したと仮定して、すべてのシナリオを実行できます。

ブロックするために、サブネット全体に対するFTPへのアクセスを制限し、場合によってはSMTPへのアクセスを制限することにしました。これを減らすために受信したすべての警告を分析し、最悪のサブネットをこのサイトにリストされている国と比較しました。http://www.tcpiputils.com/browse/ip-住所

究極の目標は、CSFによってブロックされる個々のIPの数を減らすことです。何千ものIPをブロックすると遅延の問題が発生する可能性があるため、悪意のあるユーザーが多くの国をブロックする標準ルールを設定すると、このように多数の個々のIPを管理する必要性を減らすことができます。

有効なサブネット範囲を再計算するには、次のツールを使用してください。http://www.subnet-calculator.com/cidr.php

112.0.0.0/7期間112.0.0.0到着113.255.255.255、しかし111.0.0.0/7無効ブロックなので、110.0.0.0到着111.255.255.255。間違ったIPをブロックしないようにサブネットの範囲を確認することが重要です。

関連情報