บล็อกการเชื่อมต่อขาออกบน RHEL7 / CentOS7 ด้วย firewalld หรือไม่


12

RHEL7 / CentOS7 มีบริการfirewalldไฟร์วอลล์ใหม่ซึ่งแทนที่iptables service(ซึ่งทั้งคู่ใช้iptablesเครื่องมือในการโต้ตอบกับ Netfilter ของเคอร์เนลด้านล่าง)

firewalldสามารถปรับได้อย่างง่ายดายเพื่อป้องกันการรับส่งข้อมูล แต่ตามที่ระบุไว้โดย Thomas Woerner 1,5 ปีที่แล้ว "การ จำกัด การรับส่งข้อมูลขาออกเป็นไปไม่ได้ด้วย firewalld ในวิธีที่ง่ายในขณะนี้" และเท่าที่ฉันเห็นสถานการณ์ก็ไม่เปลี่ยนแปลงตั้งแต่นั้นมา หรือว่ามัน? มีวิธีใดบ้างในการบล็อกทราฟฟิกขาออกด้วยfirewalld? หากไม่มีวิธี "มาตรฐาน" อื่น ๆ (ใน RHEL7 distro) ของการบล็อกทราฟฟิกขาออกยกเว้นการเพิ่มกฎด้วยตนเองผ่านiptablesเครื่องมือ?

คำตอบ:


13

ฉันไม่พบตัวเลือกใด ๆ ใน GUI ที่ดี แต่ก็เป็นไปได้ผ่านทางอินเตอร์เฟสโดยตรง

หากต้องการเปิดใช้งานพอร์ตขาออก 80 เท่านั้น:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

สิ่งนี้จะเพิ่มลงในกฎถาวรไม่ใช่กฎรันไทม์
คุณจะต้องโหลดกฎถาวรอีกครั้งเพื่อให้เป็นกฎรันไทม์

firewall-cmd --reload

เพื่อแสดงกฎถาวร

firewall-cmd --permanent --direct --get-all-rules

เพื่อแสดงกฎรันไทม์

firewall-cmd --direct --get-all-rules

เราจะบรรลุสิ่งนี้ได้อย่างไรโดยใช้ภาษาที่อุดมไปด้วยกฎจริง?
Casey

@Casey จากความเข้าใจของฉันมีการใช้กฎเกณฑ์ที่เข้มงวดสำหรับเครือข่าย INPUT
ข้าว

ฉันคิดว่ากฎข้างต้นใช้งานได้เฉพาะสำหรับipv4(iptables) มันอาจเป็นที่พึงปรารถนาที่จะมีกฎที่คล้ายกันสำหรับipv6(สำหรับ ip6tables) หรือeb(สำหรับ ebtables)
mwfearnley

นอกจากนี้ยังเป็นการทำลายการเชื่อมต่อ SSH ของฉันไปยังเซิร์ฟเวอร์! ดูคำตอบของ user253068 สำหรับวิธีการรักษาการเชื่อมต่อที่สร้างไว้แล้ว
mwfearnley

6

หลังจากถามคำถามเดียวกันด้วยตัวเองและด้วยการแก้ไขบางอย่างฉันได้รวบรวมกฎที่ดีสำหรับการ จำกัด ทราฟฟิกขาออกไปยัง HTTP / HTTPS และการสืบค้น DNS:

อนุญาตการเชื่อมต่อที่จัดตั้งขึ้น:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

อนุญาต HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

อนุญาต HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

อนุญาตการสืบค้น DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

ปฏิเสธทุกอย่างอื่น:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

อาจเป็นความคิดที่ดีที่จะทดสอบก่อนโดยการละเว้นอาร์กิวเมนต์ '--permanent'

ฉันไม่ได้เป็นผู้เชี่ยวชาญ แต่ดูเหมือนว่าฉันจะทำงานได้ดี :)


ในบางจุดคุณอาจพบว่ามีประโยชน์ในการลบกฎ การลบกฏโดยตรงเพียงครั้งเดียวนั้นดูยุ่งยาก แต่สำหรับค้อนขนาดใหญ่firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTจะทำการลบจำนวนมาก
mwfearnley

1

เกี่ยวกับ GUI ฉันคิดว่าคุณพบสิ่งนี้ภายใต้ " การกำหนดค่าโดยตรง " ในการเข้าถึงคุณต้องเลือกใน " มุมมอง " ฉันอาจจะผิด

ข้อความด้านข้าง

ในการลบกฎ คุณต้องออกแล้วเข้าใหม่

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