iptablesはhttp/https/ssh以外のすべてをブロックします

iptablesはhttp/https/ssh以外のすべてをブロックします

私はWordpressを実行する予定のVPSにこのiptables構成を持っています。私がやりたいのは、ポート80のhttp、ポート443のhttps、ポート22のsshを除くすべての着信要求をブロックすることです。

Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain f2b-sshd (1 references)
    num  target     prot opt source               destination         
    1    REJECT     all  --  [retracted_ip]       anywhere             reject-with icmp-port-unreachable
    2    REJECT     all  --  [retracted].com     anywhere             reject-with icmp-port-unreachable
    3    RETURN     all  --  anywhere             anywhere            

オンラインでいくつかのコマンドを見つけましたが、fail2ban と競合する可能性があるかどうかはわかりません。

答え1

一般的に:

iptables -L -v -n --line-numbersファイアウォール ルールは、設定されて表示された順序 ( 、、iptables -L -v -n -t nat --line-numbersおよび /または同様のコマンドの出力iptables-save) で処理されます。

間違ったチェーンや間違った順序で新しいルールを作成すると、望ましくない結果が生じ、機能やセキュリティが損なわれ、有効なトラフィックがロックアウトされる可能性があります。

ファイアウォールを管理するために低レベルのコマンドを実行することが常に最善の解決策であるとは限らないことに注意してくださいiptables。私の知る限り、Ubuntu では UFW ツールの使用が推奨されており、fail2ban と連携して確実に動作します。


Fail2ban は、チェーンのような 1 つ以上のカスタム チェーン (特定の不正な IP アドレスをブロックするための面倒な作業のほとんどを処理する) を作成しますf2b-sshd。通常、fail2ban にこれらのチェーンのエントリを管理させます。

さらに、fail2banはチェーン内に作成したカスタムチェーンにルールを作成しますINPUT。通常、これらのルールは最初に INPUT作成する他のルールの前に、チェーンを作成します。

現在のファイアウォール設定では、-Aスイッチで iptables を使用して INPUT チェーンに新しいルールを追加すると、すべてが機能するはずです。


次のコマンドを実行すると、通常のルールが追加され、ssh、http、https を許可し、その他のすべての着信トラフィックをブロックするファイアウォールが作成されます。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

答え2

まずはバックアップしましょう:)

sudo iptables-save > ./mybackup

接続が切れてKVMが必要な場合は、バックアップの開始に簡単に戻ることができます。

sudo iptables-restore < ./mybackup

次にルールを追加していきます

sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC  -j DROP

インスタンス以外のIPのファイアウォールを作成したい場合は、上記のYOURIPPUBLIC: 33.33.33.33またはネットマスク33.33.33.33/32を使用します。

関連、確立済み - 接続前に取得した場合は、ファイアウォールの次のルールをすべてスキップします。接続するには、次のルールに従います :)

ネットワーク全体が必要な場合は

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP

後で編集するために保存できます:

iptables-save > /.mynew.iptables.list.txt

関連情報