ทำซ้ำกฎ 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

ดูเหมือนว่าจะซ้ำหรือเขียนสองครั้ง ฉันจะลบสิ่งที่ซ้ำกันได้อย่างไร


เปิดไฟล์ในตัวแก้ไขรายการโปรดของคุณไปที่บรรทัดคำถามกดปุ่มลบค้างไว้จนกระทั่งอักขระทั้งหมดหายไป ฉันขาดอะไรบางอย่างที่ชัดเจนว่าทำไมเรื่องนี้ถึงยาก?
Ladadadada

คำตอบ:


17

รายการที่มีหมายเลขบรรทัดและลบตามหมายเลข

iptables --line-numbers --list

จากนั้นลบกฎหนึ่งข้อโดยใช้หมายเลขบรรทัด จากนั้นทำซ้ำ (หมายเลขบรรทัดเปลี่ยนตามกฎต่อไปนี้เมื่อมีการลบรายการใดรายการหนึ่งดังนั้นจึงกลับรายการก่อนที่จะลบอีกรายการ)

iptables -D INPUT 6

2
ขอบคุณสำหรับเพื่อนคนนี้! จะยอมรับสิ่งนี้ในไม่กี่นาที
Leandro Garcia

สิ่งนี้จะยังคงอยู่หลังจากรีบูตหรือไม่
Native Coder

10
iptables-save | uniq | iptables-restore

นั่นคือทั้งหมดที่คุณต้องการจริงๆ


2
AFAICT นี่จะเป็นการลบรายการที่อยู่ติดกันเท่านั้น จะไม่สามารถลบรายการซ้ำที่ไม่อยู่ติดกันได้
sampablokuper

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

หากการลอกคำซ้ำติดกันเป็นสิ่งที่คุณต้องการคำตอบของ Ricky Neff นั้นมีความปลอดภัยมากขึ้นเพราะจะหลีกเลี่ยงการเปิดเผยกฎไฟร์วอลล์แก่ผู้ใช้รายอื่นที่สามารถเข้าถึง/tmpได้
sampablokuper

1
ขอบคุณคุณถูกต้องคุณไม่ควรใช้ / tmp เพราะอ่านได้ทั่วโลก ฉันเปลี่ยนเป็น~/tmp
rubo77

2

ความคิดเห็นที่ fail2ban: fail2ban ดูเหมือนว่าจะเพิ่มกฎ iptables ของตัวเอง ดังนั้นคุณไม่ควรจัดเก็บกฎเหล่านี้ด้วยเช่น iptables-save จากนั้นหลังจากรีบูตกฎจะเพิ่มเป็นสองเท่า (กฎที่บันทึกไว้ของคุณ + กฎที่เพิ่มโดย fail2ban)



0

ฉันใช้สคริปต์ทุบตีเล็ก ๆ เช่นนี้ซึ่งไหลผ่าน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.