Score:1

firewalld: การบล็อกการเชื่อมต่อขาออกบล็อกการเชื่อมต่อขาเข้าด้วย

ธง in

log4shell ทำให้เราต้องปรับปรุงความปลอดภัยของบางเซิร์ฟเวอร์ ตอนนี้เราต้องการบล็อกทราฟฟิกขาออกด้วย (เท่าที่จะเป็นไปได้) กฎไฟร์วอลล์ปัจจุบันคือ:

/>ไฟร์วอลล์-cmd --list-all
สาธารณะ (ใช้งานอยู่)
  เป้าหมาย: ค่าเริ่มต้น
  icmp-block-inversion: ไม่
  อินเทอร์เฟซ: eth0
  แหล่งที่มา: 
  บริการ: dhcpv6-client https smtp ssh
  พอร์ต: 143/tcp 3000/tcp 4949/tcp 8080/tcp 12999/tcp 25/tcp 1194/tcp
  โปรโตคอล: 
  สวมหน้ากาก: ไม่
  พอร์ตไปข้างหน้า: 
  พอร์ตต้นทาง: 
  icmp บล็อก: 
  กฎมากมาย: 

ดังนั้นในตัวอย่าง การเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน ssh จึงเป็นไปได้ในปัจจุบัน (และควรจะเป็นไปได้ในอนาคต) ตอนนี้เราต้องการป้องกันการเชื่อมต่อขาออกทั้งหมด ยกเว้นการเชื่อมต่อผ่าน https (443) ในการทำเช่นนั้นเราได้เพิ่มกฎไฟร์วอลล์ (ดูเพิ่มเติมที่ https://serverfault.com/a/624474/145652):

/> firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 0 -p tcp -m tcp --dport=443 -j ACCEPT
ความสำเร็จ
/> firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -j DROP
ความสำเร็จ
/>ไฟร์วอลล์-cmd --reload

แต่หลังจากคำสั่งเหล่านี้ เราจะสูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ทั้งหมด: ไม่มี ping, ไม่มี ssh, เซิร์ฟเวอร์ไม่ยอมรับการเชื่อมต่อใดๆ เป็นไปได้ว่า firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -j DROP กำลังปิดกั้น ทั้งหมด ทราฟฟิกขาออก รวมถึงเซิร์ฟเวอร์ที่ตอบกลับคำขอ (ssh-) ที่เข้ามา? มีกฎขาดหายไปเพื่ออนุญาตให้ส่งข้อมูลคำตอบของคำขอที่เข้ามาหรือไม่?

A.B avatar
cl flag
A.B
การใช้กฎโดยตรงแทบไม่มีคุณสมบัติเท่ากับการใช้ไฟร์วอลล์ เป็นการเลี่ยงผ่าน (ที่มีค่าความสำคัญต่ำ) มากกว่าการใช้
Score:2
ธง cn

ฉันแค่ปั่นอินสแตนซ์เพื่อทดสอบ แต่ฉันสงสัยว่าเป็นเพราะคุณไม่อนุญาตให้ใช้กฎขาออกที่เกี่ยวข้อง/สร้างขึ้น ดังนั้นเคอร์เนลจึงหยุดการเชื่อมต่อที่มีอยู่ของคุณ

อัปเดต: ฉันแน่ใจว่านี่เป็นปัญหา ฉันเพิ่งทดสอบด้วยการบูต Centos 7 บนอินสแตนซ์ EC2 ติดตั้ง FirewallD แล้ววางในกฎข้อแรกของคุณโดยไม่มี ถาวร ธง. ทั้งหมดทำงานได้ดี

ทันทีที่ฉันวางใน หยด กฎฉันถูกตัดการเชื่อมต่อ

ในลิงก์ที่คุณระบุ กฎข้อแรกที่พวกเขาเพิ่มคือ ก่อตั้งที่เกี่ยวข้อง กฎ. ซึ่งหมายความว่าการเชื่อมต่อที่ได้รับอนุญาตจะถูกอนุญาต (ดังนั้นไฟร์วอลล์จึงมีสถานะ) หากไม่มีกฎนั้น คุณจะไม่มีกฎที่มีสถานะและการเชื่อมต่อ SSH ของคุณก็ไม่สามารถสร้างได้

ดังนั้น รายการกฎที่แท้จริงของคุณจะต้องเป็น:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ยอมรับ
# firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 1 -p udp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ตัวกรอง ipv4 OUTPUT 2 -j DROP

โปรดทราบว่าฉันได้รวม HTTP, HTTPS และ DNS ไว้ด้วย - มิฉะนั้นการเชื่อมต่อจะไม่สร้างชื่อ DNS เนื่องจากเซิร์ฟเวอร์จะไม่สามารถแก้ไขได้...

in flag
ในลิงก์ที่ฉันให้ไว้ ฉันได้อ่านเฉพาะคำตอบที่ยอมรับเท่านั้น แต่บางครั้งก็เป็นความคิดที่ดีที่จะอ่านเพิ่มเติมเฉพาะคำตอบที่ได้รับการยอมรับหรือคำตอบที่มีการโหวตมากที่สุด - ฮ่าๆ ขอบคุณ!

โพสต์คำตอบ

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