Sao chép quy tắc iptable


18

Tôi có quy tắc iptable này:

-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

Những dòng kẻ

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

-A fail2ban-ssh -j RETURN

dường như được nhân đôi hoặc viết hai lần. Làm thế nào tôi có thể loại bỏ trùng lặp?


Mở tệp trong trình chỉnh sửa yêu thích của bạn, chuyển đến dòng đang đề cập, giữ phím xóa cho đến khi tất cả các ký tự biến mất. Tôi có thiếu một cái gì đó rõ ràng về lý do tại sao điều này là khó khăn?
Ladadadada

Câu trả lời:


17

Liệt kê với số dòng và xóa theo số.

iptables --line-numbers --list

Sau đó xóa một quy tắc bằng số dòng của nó. Sau đó lặp lại (số dòng thay đổi cho các quy tắc sau khi một quy tắc bị xóa để liệt kê lại trước khi xóa một quy tắc khác).

iptables -D INPUT 6

2
Cảm ơn bạn thân này! Sẽ chấp nhận điều này trong vài phút.
Leandro Garcia

Điều này sẽ còn tồn tại sau khi khởi động lại?
bản địa

10
iptables-save | uniq | iptables-restore

Đó là tất cả những gì bạn cần thực sự.


2
AFAICT, điều này sẽ chỉ loại bỏ các bản sao liền kề. Nó sẽ không loại bỏ các bản sao không liền kề.
sampablokuper

4

Nếu bạn chỉ muốn xóa hai dòng trực tiếp một dòng sau khi bạn có thể xuất, thống nhất và nhập lại với

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

Nếu bạn muốn xóa các dòng khác, hãy sử dụng trình chỉnh sửa trên ~ / tmp / iptables.conf trước khi bạn nhập lại nó theo cùng một cách.

Kiểm tra quy tắc mới của bạn với

iptables-save

Nếu tước các bản sao liền kề là những gì bạn tìm kiếm, thì câu trả lời của Ricky Neff sẽ an toàn hơn, vì nó tránh lộ tường lửa các quy tắc cho những người dùng khác có quyền truy cập /tmp.
sampablokuper

1
Thx, bạn đã đúng, bạn không nên sử dụng / tmp vì nó có thể đọc được trên thế giới. Tôi đã đổi nó thành~/tmp
rubo77

2

Một nhận xét cho fail2ban: fail2ban dường như tự thêm các quy tắc iptables của nó. Vì vậy, bạn không nên lưu trữ các quy tắc này với ví dụ: iptables-save. Sau đó, sau khi khởi động lại, các quy tắc sẽ được nhân đôi (quy tắc đã lưu của bạn + quy tắc được thêm bởi fail2ban).


2

Xóa tất cả các dòng trùng lặp trừ CAM KẾT

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

0

Tôi đang sử dụng một tập lệnh bash nhỏ như vậy chạy qua 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.