iptables เพื่อบล็อกเว็บไซต์ https


9

ฉันต้องการบล็อกบางเว็บไซต์ที่ทำงานบน https เช่น facebook, twitter และ gmail ในองค์กรของฉัน Squid ไม่ควรใช้ที่นี่ตามคำสั่งจากผู้บริหารระดับสูง เราสามารถใช้แก้ให้หายยุ่งแพคเกจ Lite iptablesและ

มีตัวเลือกอื่นนอกจาก Squid ทำเช่นนี้? อีกทั้งiptablesกฎบางข้อในการบล็อกทราฟฟิกประเภทนี้จะมีประโยชน์จริงๆ

ฉันพบสิ่งนี้

iptables -t filter -I INPUT -m string --string facebook.com -j LOG --algo bm
iptables -t filter -I INPUT -m string --string facebook.com -j REJECT --algo bm

แต่ https ยังคงใช้งานได้บนเครื่องยกเว้นเครื่องโลคอล


2
คุณควรอธิบาย บริษัท ของคุณว่าการหลีกเลี่ยง https สำหรับบัญชีบุคคลไม่ใช่ความคิดที่ดีเพราะอาจนำไปสู่การขโมยข้อมูลประจำตัวภายใน บริษัท การปรับใช้ใบรับรองในเครื่องทั้งหมดและทำหน้าที่เป็นคนกลางจะเป็นวิธีที่ดีกว่ามากในการตรวจสอบว่า กำลังเชื่อมต่อกับ Facebook ฉันก็ไม่แน่ใจเหมือนกัน แต่ฉันคิดว่ามันเป็นไปไม่ได้อีกต่อไปที่จะเชื่อมต่อ gmail โดยไม่ต้อง https
Kiwy

ฉันขอทราบว่าคุณได้รับที่อยู่ IP ทั้งหมดเหล่านี้ได้อย่างไร
Jagadeesh

คำตอบ:


12

แทนที่จะจับคู่ตาม URL ให้ลองจับคู่ตามเนื้อหาของใบรับรอง

iptables -t nat -I INPUT --sport 443 -m string \
                 --string www.facebook.com --algo bm -j REJECT

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


สามารถบล็อกสิ่งใดก็ได้ที่ตรงกับ www.facebook.com แม้ในเนื้อหา html แต่สิ่งนี้ถูกต้องตามกฎหมายในช่องแสดงความคิดเห็น มันสามารถถูกบล็อกได้ที่ระดับ url แต่แล้ว ipaddress ล่ะ?
Nikhil Mulley

@NikhilMulley: ไม่มีก็จะเพียงตรงกับใบรับรอง SSL ให้บริการโดย Facebook ทุกอย่างถูกเข้ารหัสและไม่สามารถมองเห็นได้
บาฮามาต

2
เฉพาะแพ็กเก็ตแรกของการเชื่อมต่อเข้าสู่natตาราง (และไม่มีเชน INPUT ในตาราง nat) ฉันคิดว่าคุณหมายถึงที่filterนั่น นอกจากนี้ยังมีโอกาสระยะไกล (มาก) ที่ตรงกับแพ็กเก็ตโดยที่ 443 เป็นพอร์ตไคลเอ็นต์
Stéphane Chazelas

มีใครใช้วิธีนี้หรือไม่? นอกเหนือจากขาด-p tcpสำหรับกฎนี้ไม่ได้ดูเหมือนจะเป็นสิ่งที่มีประโยชน์ ..
ivanleoncz

10

ไฟร์วอลล์ไม่สามารถควบคุม HTTPS URL ที่ไคลเอ็นต์พยายามเข้าถึงได้เนื่องจาก URL นั้นถูกเข้ารหัส ไฟร์วอลล์สามารถควบคุมได้เฉพาะเว็บไซต์ที่ลูกค้ากำลังเชื่อมต่อด้วยการใช้ที่อยู่ IP แต่สิ่งนี้ไม่ได้ช่วยหากเว็บไซต์รุ่น HTTP และ HTTPS อยู่ใน URL เดียวกัน (และแม้ว่าจะไม่ใช่ก็ตามคุณก็มี เพื่อรักษารายการที่อยู่ IP จำนวนมาก)

วิธีเดียวที่เหมือนจริงในการบล็อก HTTPS คือการปิดกั้นมันโดยสิ้นเชิง ยืนยันว่าการเชื่อมต่อทั้งหมดจะต้องเป็น HTTP ที่ถูกต้อง (เช่นลูกค้าเริ่มต้นด้วยการส่งHTTPบรรทัดและอื่น ๆ ) สิ่งนี้ไม่สามารถทำได้ด้วย IPtables เพียงอย่างเดียวคุณต้องใช้พร็อกซีที่รับรู้ถึงโปรโตคอลจริงเช่น Squid (ฉันไม่รู้ว่า Untangle Lite สามารถใช้อะไรได้)

คุณสามารถบล็อกทราฟฟิก HTTPS ส่วนใหญ่ได้โดยบล็อกทราฟฟิกขาออกไปยังพอร์ต 443 เนื่องจากเซิร์ฟเวอร์ HTTPS เกือบทั้งหมดอยู่ในพอร์ตนั้น หรือทำตามวิธีที่อนุญาตพิเศษอนุญาตเฉพาะทราฟฟิกขาออกไปยังพอร์ต 80 (พอร์ต HTTP ปกติ)

แนวทางที่แตกต่างคือการเชื่อมต่อ HTTP และ HTTPS ทั้งหมด จากนั้นคุณสามารถจับคู่โดยใช้ URL สิ่งนี้จำเป็นต้องมีการโจมตีลูกค้าแบบตรงกลาง คุณสามารถทำเช่นนั้นได้หากคุณปรับใช้สิทธิ์การรับรองของคุณเองไปยังเครื่องไคลเอนต์ทั้งหมดและลงทะเบียนที่นั่นเป็นรากฐานของความไว้วางใจ สิ่งนี้อาจถือว่าผิดจรรยาบรรณ

ไม่ว่าคุณจะทำอะไรผู้ใช้ที่กำหนดจะตั้งค่าพร็อกซีนอกสภาพแวดล้อมของคุณและรัน IP ผ่าน HTTP หรืออะไรทำนองนั้น

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


1
ไฟร์วอลล์ระดับมืออาชีพเช่น Checkpoint อนุญาตให้มีการกรอง https โดยไม่ต้องปรับใช้หนังสือรับรองลูกค้าในเวอร์ชันล่าสุดฉันไม่รู้ว่าพวกเขาจัดการอย่างไร แต่ก็ใช้งานได้
Kiwy

4

ฉันรู้หนึ่งทางเลือก

หากคุณมีเซิร์ฟเวอร์ DNS ภายในสำหรับการใช้งานให้ใส่การอ้างอิงแบบคงที่ในข้อมูลโซน TLD ของคุณที่แก้ไขโดเมน (ที่คุณไม่ต้องการสร้างการเชื่อมต่อภายนอก) เพียง 127.0.0.1 วิธีนี้โฮสต์ทั้งหมดที่ใช้ DNS กลางภายในเครือข่ายของคุณจะแก้ไขโดเมน (facebook.com/twitter.com ต่อ se) เป็นที่อยู่ลูปแบ็คซึ่งจะนำไปสู่ที่ไหน

สิ่งนี้จะใช้งานได้หากคุณมีสิทธิ์ควบคุมทั้งหมดในการกำหนดค่าตัวแก้ไขเครื่องไคลเอนต์ในเครือข่ายของคุณ หากเวิร์กสเตชัน / ลูกค้ามีสิทธิ์เปลี่ยน / แก้ไข / etc / hosts หรือ /etc/resolv.conf พวกเขาอาจหลีกเลี่ยงตัวเลือกนี้


+1 สำหรับสิ่งนั้น ซึ่งสามารถทำได้โดยการแทรกการอ้างอิงเหล่านี้ใน/etc/hostsไฟล์ ตัวอย่างเช่น:127.0.0.1 www.facebook.com

2
หรือสำหรับโซลูชันที่มีความเจริญมากขึ้นให้ตั้งค่าระเบียน DNS A (หรือรายการโฮสต์ / hosts.txt) เพื่ออ้างถึงโฮสต์อินทราเน็ตที่มีเว็บเซิร์ฟเวอร์ซึ่งอธิบายได้อย่างชัดเจนว่าเหตุใดผู้ใช้จึงไม่ถูกส่งไปที่ Facebook ฯลฯ โปรดทราบว่า HTTPS เนื่องจากชื่อโฮสต์ที่ต้องการ (เช่น www.facebook.com) จะไม่ตรงกับใบรับรอง CN
Alexios

@Alexios: OpenDNS เป็นทางออกที่ดีสำหรับเรื่องนี้
เควินเอ็ม

@KevinM: ขอบคุณมันมีประโยชน์ที่จะรู้ ฉันจะเก็บไว้ในใจ (แม้ว่าเราจะมีฟาร์ม DNS ตัวเล็ก ๆ ของเราที่ทำงาน)
Alexios

2

ตัวเลือกคือไปยังเส้นทาง blackhole ไปยังบล็อกเครือข่าย: (แสดงรายการสำหรับ FB)

ip route add blackhole 69.171.224.0/19
ip route add blackhole 74.119.76.0/22 
ip route add blackhole 204.15.20.0/22
ip route add blackhole 66.220.144.0/20
ip route add blackhole 69.63.176.0/20
ip route add blackhole 173.252.64.0/18

1
ไม่มันไม่ใช่วิธีที่ซับซ้อนในการรักษารายการ ip สำหรับ facebook twitter หรือแม้แต่ google ที่ไม่สื่อสารช่วงช่วง ip ของตัวเองอีกต่อไป
Kiwy

1

ตัวกรองเนื้อหาธรรมดาไม่สามารถปิดกั้นเว็บไซต์ SSL

ใช้เครื่องมือป้องกันการบุกรุกเช่นsnort / suricata

ตัวอย่างกฎ IPS : สำหรับการบล็อก ssl URLS สำหรับที่อยู่ IP เฉพาะ

drop ip any 443 -> 192.168.3.30 any (content:".facebook.com"; msg:"Simplewall Ssl block for User30 : Urls => .facebook.com " sid:26648513;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".fbcdn.net"; msg:"Simplewall Ssl block for User30 : Urls => .fbcdn.net " ;sid:11469443;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".youtube.com"; msg:"Simplewall Ssl block for User30 : Urls => .youtube.com " ;sid:13989722;rev:1;)

ดาวน์โหลดSimplewall : ในกฎนโยบาย simplewall ที่แชร์โดย Squid + Suricata IPS


0

คุณควรใส่สิ่งนี้ในห่วงโซ่ไปข้างหน้าเช่น

iptables -I FORWARD  -m string --string "facebook.com" \
                     --algo bm --from 1 --to 600 -j REJECT

มันจะส่งผลกระทบต่อระบบอื่น ๆ ในเครือข่ายยกเว้นไฟร์วอลล์

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