Score:4

จะเพิ่มหลาย IP ในบรรทัดคำสั่ง iptables ได้อย่างไร sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4 -j ลดลง

ธง my

อัปเดต:

ฉันเหนื่อย sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4,11.22.33.44 -j ลดลงไม่ทำงานและมันทำให้ฉันเกิดข้อผิดพลาด

iptables v1.8.2 (nf_tables): ! ไม่อนุญาตให้ใช้กับที่อยู่ IP ต้นทางหรือปลายทางหลายรายการ


ตัวอย่างเช่น เป้าหมายของฉันคืออนุญาตเท่านั้น อนุญาตเท่านั้น 1.2.3.4 และ 11.22.33.44 เพื่อเชื่อมต่อ ssh (พอร์ต 22) ของเซิร์ฟเวอร์ของฉัน

และฉันชอบแนวทาง/คำสั่งนี้มากกว่าวิธีอื่น

sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4 -j ลดลง

แต่ฉันไม่รู้วิธีเพิ่ม IP ที่อนุญาตอื่น 11.22.33.44 ในคำสั่งนี้

คุณช่วยแนะนำหรือคำแนะนำเล็กน้อยให้ฉันได้ไหม

ขอบคุณ.

in flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [iptables IP ต้นทางหลายรายการในกฎเดียว](https://serverfault.com/questions/6989/iptables-multiple-source-ips-in-single-rule)
rm -rf avatar
my flag
@NiKiZe โอ้ใช้งานได้ ขอบคุณมากมีความสุข
Michael Hampton avatar
cz flag
หมายเหตุ: โดยทั่วไปแล้วไฟร์วอลล์อินพุตที่อนุญาตเป็นค่าเริ่มต้นจะไม่ถือว่าเป็นแนวปฏิบัติที่ดี
Score:5
ธง cc

คุณสามารถใช้ ตั้งค่าไอพี.

ขึ้นอยู่กับ distro ของคุณ คุณอาจต้องติดตั้ง ipset ยูทิลิตี้ก่อน

#(สำหรับ distros ที่มาจาก Debian และ Debian)
sudo apt ติดตั้ง ipset-persistent

จากนั้นคุณสร้างชุดด้วยชื่อที่จำง่าย

sudo ipset สร้าง ssh_friends iphash

เมื่อคุณตั้งค่าแล้ว คุณสามารถเพิ่ม IP เข้าไปได้

sudo ipset เพิ่ม ssh_friends 1.2.3.4
sudo ipset เพิ่ม ssh_friends 11.22.33.44

ตอนนี้คุณสามารถใช้ชุดที่คุณสร้างขึ้นใน iptables กฎแทนแต่ละ IP

sudo iptables -A INPUT -p tcp --destination-port 22 -m set ! --match-set ssh_friends src -j DROP
Michael Hampton avatar
cz flag
ฉันคิดว่าเขาต้องการให้การแข่งขันกลับด้าน
cc flag
อา ฉันสับสน....และลืมจำกัดกฎเฉพาะพอร์ต......แก้ไขแล้ว!
in flag
ipset ที่สร้างขึ้นจะถูกเก็บไว้ในหน่วยความจำและจะหายไปหลังจากรีบูต อาจเป็นเรื่องที่คุ้มค่าที่จะชี้ไปที่แพ็คเกจ [ipset-persistent](https://packages.debian.org/bullseye/ipset-persistent) เช่นเดียวกับการแจกแจงแบบเดเบียน ดังนั้น `apt install ipset` น่าจะดีกว่า `apt install ipset-persistent`
cc flag
ขอบคุณ @LutzWillek อัปเดตแล้ว!
Score:-1
ธง in

การกำหนด หลายรายการ ที่อยู่โดยใช้เท่านั้น หนึ่ง iptables คำสั่งโดยใช้ ! --แหล่งที่มา เป็นไปไม่ได้

ที่อยู่สามารถเป็นได้ทั้งชื่อเครือข่าย ชื่อโฮสต์ (อาจเป็น ความคิดที่ดีที่จะใช้ชื่อโฮสต์) ที่อยู่ IP เครือข่าย (ที่มี /mask) หรือที่อยู่ IP ธรรมดา มาสก์สามารถเป็นได้ทั้งเน็ตเวิร์กมาสก์หรือตัวเลขธรรมดา

คุณสามารถลองเปลี่ยนชุดกฎเริ่มต้นจากอนุญาตให้ปล่อย สิ่งนี้จะช่วยให้คุณสามารถกำหนดตามสิ่งที่ควรอนุญาตเท่านั้น เช่น คล้ายกันดังนี้:

iptables -A INPUT -i lo -j ยอมรับ
iptables -A INPUT -m state --state ที่เกี่ยวข้อง ก่อตั้ง -j ACCEPT
... กฎอื่น ๆ ของคุณอยู่ที่นี่ ...
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -s 1.2.3.4,11.22.33.44 -j ยอมรับ
iptables -P อินพุตลดลง

ข้อดี/ความสวยงามคือชุดกฎดังกล่าวจะมีประสิทธิภาพมากกว่า เนื่องจากพิจารณาสถานะของบรรจุภัณฑ์ นอกจากนี้ยังช่วยให้ไวยากรณ์ที่ต้องการ Plus ยังเป็นวิธีที่แนะนำในการกำหนดกฎไฟร์วอลล์

อย่างไรก็ตาม โปรดทราบว่าหากใช้ไวยากรณ์ตามที่แสดงด้านบน: -s 1.2.3.4,11.22.33.44 ยังคงสร้างรายการตาราง 2 รายการตามที่คุณเห็นโดยใช้คำสั่ง iptables -L อินพุต. นอกจากนี้ยังใช้งานไม่ได้กับ iptables ทุกเวอร์ชัน นอกจากนี้ โดยส่วนตัวแล้วฉันพบว่ามันยากที่จะอ่านหรือดูแลรักษา นั่นเป็นเหตุผลที่ฉันพยายามหลีกเลี่ยง แทนที่จะใช้ 2 คำสั่งแยกกัน

ในกรณีที่คุณต้องการลดจำนวนกฎ ให้ใกล้เคียงที่สุดที่คุณสามารถทำได้คือใช้ หนึ่ง iptables กฎการใช้ --จับคู่ แทน --แหล่งที่มา. อย่างไรก็ตาม คุณยังคงต้องกำหนดการจับคู่โดยใช้คำสั่งเพิ่มเติม วิธีการทำงานนี้ได้รับการอธิบายอย่างสมบูรณ์ในความคิดเห็นอื่นที่เกี่ยวข้องกับ ipset

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา