Duplikat aturan iptable


18

Saya punya aturan iptable ini:

-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

Garis

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

dan

-A fail2ban-ssh -j RETURN

tampaknya digandakan atau ditulis dua kali. Bagaimana saya bisa menghapus duplikat?


Buka file di editor favorit Anda, pergi ke baris yang dimaksud, tahan tombol hapus sampai semua karakter hilang. Apakah saya kehilangan sesuatu yang jelas tentang mengapa ini sulit?
Ladadadada

Jawaban:


17

Daftar dengan nomor baris dan hapus dengan nomor.

iptables --line-numbers --list

Kemudian hapus satu aturan menggunakan nomor baris itu. Kemudian ulangi (nomor baris berubah untuk aturan berikut ketika satu dihapus jadi daftar ulang sebelum menghapus yang lain).

iptables -D INPUT 6

2
Terima kasih untuk sobat ini! Akan menerima ini dalam hitungan menit.
Leandro Garcia

Apakah ini akan tetap ada setelah reboot?
Native Coder

10
iptables-save | uniq | iptables-restore

Itu yang benar-benar Anda butuhkan.


2
AFAICT, ini hanya akan menghapus duplikat yang berdekatan. Ini akan gagal untuk menghapus duplikat yang tidak berdekatan.
sampablokuper

4

Jika Anda hanya ingin menghapus dua baris secara langsung satu demi satu, Anda dapat mengekspor, menyatukan, dan mengimpornya kembali dengan

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

Jika Anda ingin menghapus baris lain, gunakan editor di ~ / tmp / iptables.conf sebelum Anda mengimpornya kembali dengan cara yang sama.

Periksa aturan baru Anda dengan

iptables-save

Jika menghapus duplikat yang berdekatan adalah yang Anda cari, maka jawaban Ricky Neff lebih aman, karena itu menghindari mengekspos aturan firewall kepada pengguna lain yang memiliki akses /tmp.
sampablokuper

1
thx, Anda benar, Anda tidak boleh menggunakan / tmp karena itu dapat dibaca dunia. Saya mengubahnya ke~/tmp
rubo77

2

Komentar untuk fail2ban: fail2ban tampaknya menambahkan aturan iptables itu sendiri. Jadi Anda sebaiknya tidak menyimpan aturan ini dengan mis. Iptables-save. Kemudian setelah reboot aturan akan berlipat ganda (aturan tersimpan Anda + aturan ditambahkan oleh fail2ban).


2

Hapus semua baris duplikat kecuali KOMIT

/sbin/iptables-save | awk '!COMMIT||!x[$0]++' | /sbin/iptables-restore

0

Saya menggunakan skrip bash kecil yang dijalankan melalui cron.

     #!/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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.