ให้คะแนน จำกัด ด้วย UFW: การตั้งค่า จำกัด


22

หน้าคนของ UFW กล่าวว่าสามารถตั้งค่าอัตราการ จำกัด iptables สำหรับฉัน:

ufw รองรับการ จำกัด อัตราการเชื่อมต่อซึ่งเป็นประโยชน์สำหรับการป้องกันการเข้าสู่ระบบที่โหดร้าย ufw จะปฏิเสธการเชื่อมต่อหากที่อยู่ IP พยายามเริ่มการเชื่อมต่อ 6 ครั้งขึ้นไปใน 30 วินาทีที่ผ่านมา ดู http://www.debian-administrator.org/articles/187 สำหรับรายละเอียด การใช้งานทั่วไปคือ:

     ufw limit ssh/tcp

น่าเสียดายที่นี่เป็นเอกสารทั้งหมดที่ฉันสามารถหาได้ ฉันต้องการติดกับ UFW และไม่ใช้คำสั่ง iptables ที่ซับซ้อนมากขึ้น (เพื่อให้สิ่งที่ "ไม่ซับซ้อน")

ฉันจะใช้ ufw เพื่อ จำกัด การรับส่งข้อมูลขาเข้า (ดังนั้นไม่ออก) บนพอร์ต 80 ถึง 20 การเชื่อมต่อต่อ 30 วินาทีได้อย่างไร ฉันจะปิดใช้งานการ จำกัด อัตราสำหรับพอร์ต 30000 ถึง 30005 ได้อย่างไร อัตรา จำกัด ถูกเปิดใช้งานโดยค่าเริ่มต้นสำหรับพอร์ตทั้งหมดหรือไม่

คำตอบ:


21

UFW ถูกออกแบบมาให้ "ไม่ซับซ้อน" ซึ่งในกรณีนี้หมายความว่าคุณไม่สามารถควบคุมรายละเอียดของอัตราที่การเชื่อมต่อถูก จำกัด หากคุณต้องการขุดลงในแหล่งไพ ธ อนของ UFW คุณสามารถหาวิธีปรับแต่งมันได้ ข้อมูลที่เหมาะสมคือ (ในระบบ Ubuntu 10.04 ของฉัน) ใน/usr/share/pyshared/ufw/backend_iptables.py

ดังนั้นการตั้งค่าปัญหาเรื่องเวลาจึงเป็นคำตอบสำหรับคำถามเร่งด่วนของคุณในตอนท้าย

  1. สมมติว่า 10.10.10.0/24 เป็นเครือข่ายท้องถิ่นของคุณสิ่งนี้ใช้กฎการ จำกัด เริ่มต้นกับพอร์ต 80 / tcp ขาเข้า:

    ufw limit proto tcp from any port 80 to 10.10.10.0/24
    
  2. และ 3. การ จำกัด อัตราจะไม่เปิดตามค่าเริ่มต้น หากต้องการเพิ่มลงในทุกพอร์ต (ปลายทาง) ยกเว้นช่วงที่คุณต้องการให้ใช้กฎนี้ โปรดทราบว่ากฎ (แม้จะมีช่วง) เป็นหน่วยอะตอมมิกและไม่สามารถแยกได้ ตัวอย่างเช่นคุณไม่สามารถเพิ่มกฎสำหรับพอร์ตใด ๆ แล้วdeleteกฎ (ไม่มีอยู่) สำหรับช่วงที่เฉพาะเจาะจงเพื่อลบออก limitไม่ใช่อาร์กิวเมนต์ที่ยอมรับได้ufw defaultเช่นกัน

    ufw limit from any to any port 0:29999,30006:65535
    

นี่หมายความว่าไม่สามารถกำหนดอัตราได้ใช่หรือไม่
ทอม

2
ไม่ใช่โดยที่ไม่ได้ทำการแฮ็กแหล่งข้อมูลอย่างน้อยก็ไม่ใช่สำหรับ UFW 0.30pre1-0ubuntu2 ซึ่งเป็นเวอร์ชั่นปัจจุบันสำหรับ Ubuntu 10.04 จากรูปลักษณ์ของสิ่งต่าง ๆในแหล่งที่มาในปัจจุบันนั้นยังไม่เปลี่ยนแปลง อย่างไรก็ตามคุณสามารถใส่กฎ iptables ลงใน /etc/ufw/after.rules (หรือ /etc/ufw/before.rules) และกฎเหล่านั้นจะถูกใช้เช่นกัน ดูman ufw-frameworkสำหรับข้อมูลเพิ่มเติม
bonsaiviking

@bonsaiviking เป็นไปได้iptableไหมถ้าใช่ iptable จะเป็น backend ของ ufw
Nullpointer

6

ตามที่กล่าวไว้ในโพสต์ก่อนหน้านี้คุณสามารถปรับแต่ง user.rules ฉันต้องการอัตราการเชื่อมต่อ smtp สูงสุด 12 การเชื่อมต่อใน 6 วินาที ฉันเพิ่มกฎตามที่แสดงด้านล่างก่อน หมายเหตุ: สิ่งนี้จะเพิ่มกฎขีด จำกัด อนุญาตให้ 6 ใน 30 วินาทีโดยค่าเริ่มต้น

ufw limit smtp

และฉันแก้ไข /lib/ufw/user.rules (ฉันเก็บสำเนาที่กำหนดเองของไฟล์นี้ด้วย tweaks อื่น ๆ จำนวนมาก) ที่แสดงด้านล่าง ...

### tuple ### limit tcp 25 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --set
-A ufw-user-input -p tcp --dport 25 -m state --state NEW -m recent --update --seconds 6 --hitcount 12 -j ufw-user-limit
-A ufw-user-input -p tcp --dport 25 -j ufw-user-limit-accept

ฉันพบ user.rules ใน / etc / ufw
Otto Kanellis

5

ขีด จำกัด อัตราสามารถเปลี่ยนแปลงได้ในไฟล์กฎ ufw ซึ่งสามารถพบได้ /lib/ufw/user.rules ตามค่าเริ่มต้นจะไม่มีการ จำกัด การเปิดใช้งานสำหรับพอร์ตทั้งหมด คุณควรเพิ่มทุกพอร์ตด้วยตนเองหรือแก้ไขไฟล์ user.rules


1

มันคุ้มค่าที่จะชี้ให้เห็นถึงผลที่ไม่ได้ตั้งใจจากการใช้คุณสมบัติ LIMIT ของ ufw

สมมติว่าหนึ่งวางขีด จำกัด แบบครอบคลุมบนพอร์ต 22 / tcp เป็นกฎ ufw แรก:

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                  
...

ด้วยข้อสันนิษฐานว่าการเชื่อมต่อใด ๆ ที่ทำงานภายใต้ขีด จำกัด นั้นยังคงสามารถกรองได้โดยทำตามกฎ ufw และในที่สุดนโยบายเริ่มต้นของ "ปฏิเสธ (ขาเข้า)"

อย่างน้อยสำหรับ ufw 0.35 ข้อสันนิษฐานนั้นจะผิด ในความเป็นจริงตรรกะ LIMIT IN ยอมรับการป้อนข้อมูลใด ๆ ที่ไม่ได้ถูกปฏิเสธโดยเกณฑ์การ จำกัด

ใน psuedocode ตรรกะ LIMIT คือ

if CONDITION then DENY else ACCEPT

ในขณะที่กฎ ufw อื่น ๆ ดูเหมือนจะมีเหตุผล:

if CONDITION then (DENY|ACCEPT) else continue to next rule.

ฉันพบว่าเป็นการกระทำที่ไม่คาดคิดสำหรับ ufw LIMIT ซึ่งฉันค้นพบโดยการค้นพบพอร์ตเข้าสู่ระบบ 22 ครั้งโดยไม่คาดคิดในไฟล์บันทึกระบบซึ่งไม่ควรเกิดขึ้นเนื่องจากถูกกรองโดยกฎ ufw อื่น ๆ

รายละเอียดของการยืนยันพฤติกรรม

บรรทัดที่เกี่ยวข้องของรหัส iptables ที่แทรกโดย ufw มีดังนี้:

-A ufw-user-input -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 --name DEFAULT --mask 255.255.255.255 --rsource -j ufw-user-limit
-A ufw-user-input -p tcp -m tcp --dport 22 -j ufw-user-limit-accept
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT

รายการด้านบนสามารถสร้างได้ด้วย

iptables -S | grep ufw-user-limit

สองบรรทัดแรกนั้นต่อเนื่องกันufw-user-inputซึ่งสามารถยืนยันได้

iptables -S | grep ufw-user-input
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.