มีคนบอกฉันว่านี่เป็นไปได้ แต่ฉันไม่พบอะไรเลยบนหน้า google หรือ man
ฉันต้องแบนไอพีในระยะเวลาหนึ่งจากนั้นยกเลิกการแบนโดยอัตโนมัติ
มีคนบอกฉันว่านี่เป็นไปได้ แต่ฉันไม่พบอะไรเลยบนหน้า google หรือ man
ฉันต้องแบนไอพีในระยะเวลาหนึ่งจากนั้นยกเลิกการแบนโดยอัตโนมัติ
คำตอบ:
หากคุณต้องการให้ iptables ลบกฎโดยสมบูรณ์คุณจะไม่สามารถทำได้เท่าที่ฉันรู้ จุดประสงค์ของสิ่งนี้คืออะไร? หากคุณต้องการชนิดของชั่วคราวอัตโนมัติบางอย่างห้ามการแก้ปัญหามาตรฐานคือfail2ban
อีกทางหนึ่งคุณสามารถใช้งาน cron เพื่อลบกฎที่คุณเพิ่มหรือดีกว่าถ้าคุณต้องการทำงานแบบโต้ตอบat
:
iptables -I INPUT -s 192.168.1.100 -j DROP
echo "iptables -D INPUT -s 192.168.1.100 -j DROP" | at @10pm
ยังดูที่recent
โมดูลของ iptables นี้ด้วย--seconds
ตัวเลือกที่อาจจะมีการช่วยเหลือขึ้นอยู่กับความต้องการที่แท้จริงของคุณ man iptables
สำหรับข้อมูลเพิ่มเติม.
/bin/sh
ค่าเริ่มต้น แต่นั่นอาจจะไม่เป็นปัญหาในกรณีนี้
ใส่ความคิดเห็นด้วยการประทับเวลา (อาจวินาทีตั้งแต่ยุค) ในกฎ กวาดกฎที่หมดอายุเป็นระยะ
โปรดทราบว่าเคอร์เนล linux ที่ผ่านมามีการรองรับการโหลดที่อยู่ IP แบบไดนามิกในแคชที่ปรึกษาโดยกฎ iptable แทนที่จะเป็นกฎ iptables โดยตรง
ตัวอย่าง:
iptables -A INPUT -s 192.168.200.100/32 -m comment --comment "expire=`date -d '+ 5 min' +%s`" -j DROP
iptables -L INPUT -n --line-numbers | tac | perl -ne 'next unless /(^\d+).*expire=(\d+)/; if ($2 < time) { print "iptables -D INPUT $1\n"; }'
แน่นอนคุณสามารถiptables -D INPUT $1
แทนการพิมพ์คำสั่ง
iptables -L FORWARD --line-numbers | sort -r | awk 'substr($8,1,4) == "exp@" && substr($8,5) < systime() { systems("iptables -D FORWARD " $1) }'
ที่กฎจะทำเช่น:iptables -A FORWARD -j DROP -m comment --comment "exp@EPOCH"
iptables -L FORWARD --line-numbers | tac | perl -walne 'system "iptables -D FORWARD $F[0]" if $F[-2] =~ /^expire=(\d+)$/ and $1<time()'
iptables มีวิธีการเพิ่มที่อยู่ IP ไปยังรายการโดยอัตโนมัติหากตรงตามเงื่อนไขที่ผู้ใช้กำหนด ฉันใช้สิ่งต่อไปนี้เพื่อช่วยหลีกเลี่ยงการแฮ็คอัตโนมัติไปยังพอร์ต ssh ของฉัน:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name ssh --seconds 60 --reap -j DROP
สิ่งนี้จะช่วย จำกัด การพยายามเข้าถึงเซิร์ฟเวอร์โดยอัตโนมัติโดย จำกัด การพยายามเชื่อมต่อจากที่อยู่ IP เดียวกันให้เป็นหนึ่งเดียวทุก ๆ 60 วินาที
หากคุณต้องการอนุญาตจำนวนครั้งในกรอบเวลาเช่น 4 ใน 5 นาทีและหากเกิดข้อผิดพลาดให้ขึ้นบัญชีดำเป็นระยะเวลานานเช่น 24 ชั่วโมงคุณสามารถทำสิ่งต่อไปนี้
iptables -X black
iptables -N black
iptables -A black -m recent --set --name blacklist -j DROP
iptables -X ssh
iptables -N ssh
iptables -I ssh 1 -m recent --update --name blacklist --reap --seconds 86400 -j DROP
iptables -I ssh 2 -m recent --update --name timer --reap --seconds 600 --hitcount 4 -j black
iptables -I ssh 3 -m recent --set --name timer -j ACCEPT
iptables -A INPUT -p TCP --dport ssh -m state --state NEW -j ssh
ในข้างต้นเราสร้าง 2 โซ่; "ssh" และ "black" และ 2 รายการ; "ตัวจับเวลา" และ "บัญชีดำ"
สั้น ๆ ; ห่วงโซ่สุดท้ายที่แสดงด้านบนคือ "ประตู" เข้าสู่ห่วงโซ่ ssh
ตัวเลือก "--reap" บอกให้เคอร์เนลค้นหารายการและกำจัดรายการใด ๆ ที่เก่ากว่าเวลาที่กำหนด 5 นาทีสำหรับรายการ "จับเวลา" และ 24 ชั่วโมงสำหรับรายการ "บัญชีดำ"
หมายเหตุ: ช่องว่างเพิ่มเติมสำหรับการอ่านและเป็นตัวเลือกในเปลือกสคริปต์ของคุณ
IPTables มีคุณสมบัติที่สร้างขึ้นโดยเฉพาะสำหรับสิ่งนี้: ชุด IP คุณสร้างกฏหนึ่งครั้งและยังคงมีอยู่ตามปกติ แต่จะตรวจสอบในชุดของ ips (หรือพอร์ต) สำหรับการจับคู่ สิ่งที่ยอดเยี่ยมคือชุดนี้สามารถอัปเดตแบบไดนามิกและมีประสิทธิภาพโดยไม่รบกวนส่วนที่เหลือของไฟร์วอลล์
หลักเว็บไซต์ , ตัวอย่าง
ดังนั้นในการใช้งานคุณจะยังคงต้องใช้at
หรือcron
กำหนดเวลาการลบ
คุณสามารถใช้fail2banเพื่อแบนที่อยู่ IP และกำหนดระยะเวลาที่จะถูกห้าม
ตามที่มีคนกล่าวไว้แล้ว: คุณควรใช้ ipset สำหรับคุณสมบัตินี้
ipset สามารถเพิ่มที่อยู่ ip ด้วยค่าการหมดเวลา เมื่อหมดเวลาสิ้นสุดบันทึกจะถูกลบโดยอัตโนมัติจาก ipset
timeout
All set types supports the optional timeout parameter when creating a set and adding entries. The value of the timeout parameter for the create command means the default timeout value (in seconds) for new entries. If a set is created with timeout support, then the same timeout option can be used to specify non-default timeout values when adding entries. Zero timeout value means the entry is added permanent to the set. The timeout value of already added elements can be changed by readding the element using the -exist option. Example:
ipset create test hash:ip timeout 300
ipset add test 192.168.0.1 timeout 60
ipset -exist add test 192.168.0.1 timeout 600
http://ipset.netfilter.org/ipset.man.html
นี่เป็นวิธีที่ดีกว่าในการควบคุมพฤติกรรมนี้
ฉันต้องแบนไอพีในระยะเวลาหนึ่งจากนั้นยกเลิกการแบนโดยอัตโนมัติ
คุณสามารถลองสิ่งต่อไปนี้
# iptables -I INTPUT -s xxx.xxx.xxx.xxx -m time --utc --datestart 2013-09-09T15:00 --datestop 2013-09-09T15:30 -j DROP
ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณต้องการที่จะบรรลุโมดูลnetfilter ล่าสุดหรือเวลาที่สามารถใช้ในการบรรลุสิ่งนี้
ทั้งสองได้รับการบันทึกไว้ในหน้า iptables คน