重複したiptableルール


18

私はこのiptableルールを持っています:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -s xx.xxx.xx.xx/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh -j RETURN

台詞

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

そして

-A fail2ban-ssh -j RETURN

複製または2回書き込まれたようです。重複を削除するにはどうすればよいですか?


お気に入りのエディターでファイルを開き、問題の行に移動して、すべての文字が消えるまで削除キーを押し続けます。なぜこれが難しいのか、明らかな何かを見逃していますか?
ラダダダダ

回答:


17

行番号をリストし、番号で削除します。

iptables --line-numbers --list

次に、行番号を使用して1つのルールを削除します。その後、繰り返します(あるルールが削除されると、次のルールの行番号が変わるので、別のルールを削除する前に再リストしてください)。

iptables -D INPUT 6

2
この仲間をありがとう!数分でこれを受け入れます。
レアンドロガルシア14

これは再起動後も持続しますか?
ネイティブコーダー


4

anothe rの直後にある二重線のみを削除する場合は、次のコマンドでエクスポート、統合、再インポートできます。

mkdir ~/tmp
iptables-save > ~/tmp/iptables.conf
uniq /tmp/iptables.conf > ~/tmp/iptables_new.conf
iptables-restore < ~/tmp/iptables_new.conf

他の行を削​​除する場合は、同じ方法で再インポートする前に〜/ tmp / iptables.confのエディターを使用します。

で新しいルールを確認してください

iptables-save

隣接する重複を取り除くことが求められる場合、リッキーネフの答えはより安全/tmpです。これは、にアクセスできる他のユーザーにファイアウォールのルールを公開することを避けるためです。
サンパブロクパー

1
thx、あなたは正しいです、あなたがそれが誰でも読めるので、あなたは/ tmpを使うべきではありません。変更して~/tmp
rubo77

2

fail2banへのコメント:fail2banは、iptablesルール自体を追加しているようです。したがって、これらのルールをiptables-saveなどで保存しないでください。その後、再起動後にルールが2倍になります(保存したルール+ fail2banによって追加されたルール)。



0

cronを実行するこのような小さなbashスクリプトを使用しています。

     #!/bin/bash 
         readarray -t tabl_lines <<< "$(iptables -nL INPUT --line-number | grep "fail2ban-ssh")"
            i=''
            for tline in "${tabl_lines[@]}"
            do 
            #skip the first result
            if [ -n "$i" ]; then
            sudo iptables -D INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
            # if necessary, you can erase and other rules, 
            # because they usually repeat the same number of times
            # sudo iptables -D INPUT -p tcp -m multiport --dports 21 -j fail2ban-vsftpd
save_iptables=yes
            else 
            i=start_remove
            fi
            done
if [ "$save_iptables" == "yes" ]; then
/sbin/service iptables save
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.