กฎ iptables ที่ถูกต้องคืออะไรเพื่อให้สามารถดาวน์โหลดโปรแกรม apt-get ได้?


12

เมื่อฉันพิมพ์บางสิ่งบางsudo apt-get install firefoxอย่างทุกอย่างจะทำงานจนกว่าจะถามฉัน:

After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น: Failed to fetch: <URL>

กฎ iptables ของฉันมีดังนี้:

-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

ฉันควรจะเพิ่มอะไรเพื่อให้สามารถรับการอัพเดต apt-get เพื่อดาวน์โหลด ขอบคุณ

คำตอบ:


17

apt - รับการดาวน์โหลดผ่าน HTTP เกือบทุกครั้ง แต่อาจใช้ FTP ดังนั้นคำตอบสั้น ๆ น่าจะอนุญาตการเชื่อมต่อ HTTP ขาออก ... และ DNS แน่นอน

การกำหนดค่าที่คุณปิดการรับส่งข้อมูลเครือข่ายขาออกทั้งหมด ( ESTABLISHEDกฎที่คุณมีบนOUTPUTเครือข่ายนั้นไม่มีประสิทธิภาพเนื่องจากจะไม่มีการสร้างเซสชัน) คุณจำเป็นต้องอนุญาตให้อัปเดตเฉพาะ apt-get ในขณะที่ยังไม่อนุญาตทุกอย่างหรือไม่ iptablesอาจเป็นเครื่องมือที่ไม่ถูกต้องสำหรับงานนั้นเนื่องจากจะไม่ตีความ URL จริง ๆ และอนุญาตให้มีการถ่ายโอน HTTP แบบคัดเลือก คุณต้องการใช้พร็อกซีเซิร์ฟเวอร์ HTTP สำหรับงานนี้

คุณสามารถใช้การตั้งค่าที่เรียบง่ายซึ่งจะอนุญาตให้ดาวน์โหลด apt-get แต่โปรดทราบว่าการทำเช่นนี้อนุญาตการเชื่อมต่อ DNS และ HTTP ขาออกอื่น ๆ ทั้งหมดซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ

iptables -F OUTPUT  # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

หากแหล่ง APT ของคุณมี HTTPS หรือแหล่ง FTP หรือแหล่ง HTTP บนพอร์ตอื่นที่ไม่ใช่ 80 คุณจะต้องเพิ่มพอร์ตเหล่านั้นด้วย

ถัดไปคุณจะต้องอนุญาตการรับส่งคืน คุณสามารถทำได้ด้วยกฎเดียวนี้ที่อนุญาตการเชื่อมต่อที่สร้างขึ้น:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

(ปลอดภัยที่จะอนุญาตการเชื่อมต่อขาเข้าที่สร้างขึ้นทั้งหมดเมื่อใช้การติดตามการเชื่อมต่อเนื่องจากเฉพาะการเชื่อมต่อที่คุณได้รับอนุญาตเท่านั้นที่จะเข้าสู่สถานะ ESTABLISHED)


สวัสดีขอบคุณสำหรับคำตอบของคุณ ใช้งานได้ แต่คุณคิดว่าอาจมีปัญหาด้านความปลอดภัยใด ๆ เมื่อเปิดพอร์ต OUTPUT เหล่านี้หรือไม่ ขอบคุณ
anthony01

1
ไฟร์วอลล์ส่วนใหญ่รวมถึงกล่องทุกรูปแบบ SOHO อนุญาตการเชื่อมต่อขาออกไม่ จำกัด คนมักจะไม่ต้องการ จำกัด การรับส่งข้อมูลขาออก แต่มันก็ขึ้นอยู่กับความต้องการของคุณ การตั้งค่าที่มีอยู่ของคุณป้องกันผู้ใช้บนเวิร์กสเตชันที่เป็นปัญหาจากการท่องอินเทอร์เน็ต หากนี่คือสิ่งที่คุณต้องทำคุณจะไม่สามารถใช้โซลูชันที่อิงกับ iptables ได้เพราะจะทำให้ได้รับอนุญาตให้ท่องเว็บได้
Celada

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

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