iptables để chặn các trang web https


9

Tôi muốn chặn một vài trang web cũng chạy trên https, như facebook, twitter và gmail, trong tổ chức của tôi. Mực không được sử dụng ở đây theo lệnh từ cấp quản lý cao hơn. Chúng tôi có thể sử dụng Gói Untangle Lite và iptables.

Có lựa chọn nào khác ngoài Squid để làm điều này không? Ngoài ra một số iptablesquy tắc để chặn loại lưu lượng này sẽ thực sự hữu ích.

tôi đã tìm thấy cái này

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

nhưng https vẫn hoạt động trên các máy trừ máy cục bộ.


2
bạn nên giải thích cho công ty của mình rằng tránh https cho tài khoản cá nhân không phải là một ý tưởng hay vì nó có thể dẫn đến việc đánh cắp danh tính trong công ty, triển khai chứng chỉ trên tất cả các máy và hoạt động như một người đàn ông ở giữa sẽ là cách tốt hơn để kiểm tra ai kết nối tới Facebook. Ngoài ra tôi không chắc chắn, nhưng tôi nghĩ không thể kết nối gmail mà không có https nữa.
Kiwy

Tôi có thể biết làm thế nào bạn có được tất cả các địa chỉ IP đó không
Jagadeesh

Câu trả lời:


12

Thay vì đối sánh dựa trên URL, hãy thử đối sánh dựa trên nội dung của chứng chỉ.

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

Bạn cũng có thể khớp trên dấu vân tay nhưng nếu đích thay đổi hoặc cập nhật chứng chỉ của họ, điều đó sẽ làm mất hiệu lực quy tắc của bạn.


điều này có thể chặn bất cứ thứ gì phù hợp với www.facebook.com ngay cả trong phần thân html, nhưng điều đó là hợp pháp như thế này trên hộp bình luận. Nó có thể bị chặn ở cấp độ url, nhưng còn ipaddress thì sao?
Nikhil Mulley

@NikhilMulley: Không, nó sẽ chỉ khớp với chứng chỉ SSL được cung cấp bởi Facebook. Mọi thứ khác được mã hóa và không thể nhìn thấy.
bahamat

2
Chỉ gói đầu tiên của kết nối vào natbảng (và không có chuỗi INPUT trong bảng nat), tôi nghĩ bạn có ý filterđó. Ngoài ra, có một cơ hội từ xa (rất) phù hợp với các gói trong đó 443 là cổng máy khách
Stéphane Chazelas

Có ai đã sử dụng giải pháp này? Ngoài việc thiếu -p tcpquy tắc, điều này dường như không phải là một điều hữu ích ..
ivanleoncz

10

Tường lửa không thể kiểm soát URL HTTPS nào mà khách hàng đang cố truy cập, vì URL được mã hóa. Tường lửa chỉ có thể kiểm soát các trang web mà khách hàng đang kết nối, sử dụng địa chỉ IP, nhưng điều này không giúp ích gì nếu các phiên bản HTTP và HTTPS của trang web có cùng một URL (và ngay cả khi chúng không có, bạn sẽ có để duy trì một danh sách lớn các địa chỉ IP).

Cách thực tế duy nhất để chặn HTTPS là chặn hoàn toàn. Khăng khăng rằng tất cả các kết nối phải là HTTP hợp lệ (tức là máy khách bắt đầu bằng cách gửi một HTTPdòng, v.v.). Điều này không thể được thực hiện chỉ với IPtables, bạn cần một proxy nhận biết giao thức thực tế như Squid. (Tôi không biết Untangle Lite có khả năng gì.)

Bạn có thể chặn hầu hết lưu lượng HTTPS bằng cách chặn lưu lượng đi đến cổng 443, vì hầu như tất cả các máy chủ HTTPS đều ở trên cổng đó. Hoặc, theo cách tiếp cận danh sách trắng, chỉ cho phép lưu lượng đi đến cổng 80 (cổng HTTP bình thường).

Một cách tiếp cận khác sẽ là ủy quyền tất cả các kết nối HTTP và HTTPS. Sau đó, bạn có thể kết hợp bằng URL. Điều này đòi hỏi phải tiến hành một cuộc tấn công trung gian vào khách hàng. Bạn có thể làm điều đó nếu bạn triển khai cơ quan chứng nhận của riêng mình cho tất cả các máy khách và đăng ký nó ở đó như một gốc của niềm tin. Điều này có thể được coi là phi đạo đức.

Bất kể bạn làm gì, người dùng đã xác định sẽ thiết lập proxy bên ngoài môi trường của bạn và chạy IP qua HTTP hoặc một cái gì đó tương tự.

Dường như bạn đang cố gắng khắc phục sự cố xã hội bằng các phương tiện kỹ thuật, hầu như không hoạt động hoặc cố gắng hết sức để thực hiện yêu cầu ngớ ngẩn từ ban quản lý (trong trường hợp đó, tôi sẽ đi chặn cổng 443, có lẽ chỉ dành cho một số IP nhất định, cho phép bạn báo cáo rằng bạn đã hoàn thành công việc của mình, bất kể vô dụng như thế nào).


1
Tường lửa chuyên nghiệp như Checkpoint cho phép lọc https mà không cần triển khai chứng chỉ ứng dụng khách trong phiên bản mới nhất, tôi không biết họ quản lý để làm điều đó như thế nào, nhưng nó hoạt động.
Kiwy

4

Tôi biết một lựa chọn.

Nếu bạn có máy chủ DNS nội bộ để sử dụng, sau đó đặt một số tham chiếu tĩnh trong dữ liệu vùng TLD của bạn để giải quyết các tên miền (mà bạn không muốn thiết lập các kết nối bên ngoài) thành chỉ 127.0.0.1. Bằng cách này, tất cả các máy chủ sử dụng DNS trung tâm trong mạng của bạn sẽ phân giải các tên miền (facebook.com/twitter.com mỗi se) thành địa chỉ loopback, sẽ không dẫn đến đâu.

Điều này sẽ hoạt động nếu bạn có toàn quyền kiểm soát trên cấu hình trình phân giải máy khách của mạng của bạn. Nếu máy trạm / máy khách có quyền thay đổi / chỉnh sửa / etc / hosts hoặc /etc/resolv.conf thì họ có thể phá vỡ tùy chọn này.


+1 cho điều đó. Điều này có thể được thực hiện bằng cách chèn các tham chiếu này trong /etc/hoststệp. Ví dụ:127.0.0.1 www.facebook.com

2
Hoặc, để có giải pháp văn minh hơn, hãy đặt các bản ghi DNS A (hoặc các mục lưu trữ / hosts.txt) để chỉ máy chủ mạng nội bộ với máy chủ web giải thích chính xác lý do tại sao người dùng không được gửi tới Facebook, v.v. HTTPS vì tên máy chủ dự định (ví dụ: www.facebook.com) sẽ không khớp với chứng chỉ CN.
Alexios

@Alexios: OpenDNS là một giải pháp tuyệt vời cho việc này.
Kevin M

@KevinM: cảm ơn, thật hữu ích khi biết. Tôi sẽ ghi nhớ điều này (mặc dù chúng tôi có trang trại DNS nhỏ của riêng mình tại nơi làm việc)
Alexios

2

Một tùy chọn là các tuyến lỗ đen đến các khối mạng: (Được liệt kê là dành cho 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
không, không phức tạp lắm khi duy trì một danh sách ip cho facebook twitter hay thậm chí google, những người không liên lạc với phạm vi ip của riêng nó nữa.
Kiwy

1

Bộ lọc nội dung đơn giản không thể chặn trang web ssl.

Sử dụng các công cụ bảo vệ xâm nhập như snort / suricata.

Quy tắc IPS mẫu : Để chặn URL ssl cho địa chỉ IP cụ thể.

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;)

Tải xuống Simplewall : Trong các quy tắc chính sách đơn giản được chia sẻ bởi Squid + Suricata IPS.


0

Bạn nên đặt cái này trên chuỗi FORWARD, vd

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

Nó sẽ ảnh hưởng đến các hệ thống khác trên mạng, ngoại trừ tường lửa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.