banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vấn đề cấu hình https transparent với Squid  XML
  [Question]   Vấn đề cấu hình https transparent với Squid 05/10/2012 21:18:06 (+0700) | #1 | 269929
lion1102
Member

[Minus]    0    [Plus]
Joined: 13/08/2012 22:42:16
Messages: 15
Offline
[Profile] [PM]
Em đang gặp vấn đề với cấu hình Squid làm HTTPS Interception. Bác nào đã làm thì tư vấn, giúp đỡ em với ạ.

Mô hình mạng của em như sau:

Code:
LAN -------------(eth0) Linux Gateway (pppoe)  --------------- Internet
                                      (eth1)  
                                         |
                                         |
                                         |
                                         |
                                      Squid

Mục đích là: bên em đang sử dụng dịch vụ mail của Google Apps có sử dụng https và muốn chỉ cho phép client trong LAN có thể truy cập đến các trang dịch vụ mail của Google Apps mà không cho truy cập đến gmail cá nhân.

Em đã cấu hình thành công trên Linux GW để định tuyến các request trên port 80, 443 từ LAN đi qua Squid proxy rồi mới ra Internet.

Em cũng đã cấu hình Squid proxy ở chế độ transparent và đã có thể "nghe" và "trả lời" các request trên port 80 từ LAN client để cấm truy cập đến 1 số trang web như youtube ...

Vấn đề em đang gặp phải là cấu hình Squid proxy "nghe" và "trả lời" lại các request trên port 443.
Em đã cấu hình cho cả request trên port 80, 443 đến 1 port trên squid hay làm mỗi port 80 và 443 đến một port riêng biệt trên squid đều không được.

Đây là phần cấu hình Squid của em:
Code:
acl localnet src 192.168.3.0/29
acl Safe_ports port 80
acl Safe_ports port 443
http_access deny !Safe_ports
acl Working_mor time MTWHFA 08:00-12:00
acl Working_aft time MTWHFA 13:00-18:30
acl BlockSites url_regex "/etc/squid/deny_site.acl"
acl BlockIP dstdom_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
http_access deny localnet BlockSites
http_access deny localnet BlockIP
acl AcceptSites url_regex "/etc/squid/deny_tempo_site.acl"
http_access deny localnet Working_mor AcceptSites
http_access deny localnet Working_aft AcceptSites
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 8181 transparent ssl-bump cert=/etc/squid/key/cert.pem key=/etc/squid/key/cert.pem
always_direct allow all
ssl_bump allow all

Nếu để transparent thì không phải thiết lập proxy trên browser của client đến IP của proxy thì chỉ có thể can thiệp vào các request trên port 80 của client, không thể can thiệp vào các request trên port 443 được.

Nếu không để transparent thì thiết lập proxy trên browser của client thì có hiện ra bảng thông báo Certificate như truy cập lần đều các trang sử dụng https nhưng không thể truy cập vào được mail của Google Apps hoặc bất cứ 1 trang web nào sử dụng https mà mình cho phép.

Em cảm ơn ạ!
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 06/10/2012 08:05:41 (+0700) | #2 | 269930
tuanksor
Member

[Minus]    0    [Plus]
Joined: 01/11/2011 02:44:03
Messages: 50
Offline
[Profile] [PM]

lion1102 wrote:

Code:
acl localnet src 192.168.3.0/29
acl Safe_ports port 80
acl Safe_ports port 443
http_access deny !Safe_ports
acl Working_mor time MTWHFA 08:00-12:00
acl Working_aft time MTWHFA 13:00-18:30
acl BlockSites url_regex "/etc/squid/deny_site.acl"
acl BlockIP dstdom_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
http_access deny localnet BlockSites
http_access deny localnet BlockIP
acl AcceptSites url_regex "/etc/squid/deny_tempo_site.acl"
http_access deny localnet Working_mor AcceptSites
http_access deny localnet Working_aft AcceptSites
http_access allow localnet
http_access allow localhost
http_access deny all
[color=red]http_port 8181 transparent ssl-bump cert=/etc/squid/key/cert.pem key=/etc/squid/key/cert.pem[/color]
always_direct allow all
ssl_bump allow all



http thì cần gì certificate, chỗ ở trên bạn bỏ cái cert đi.
Bạn muốn cache https thì thêm vào https_port [port number] transparent [path/to/cert]
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 06/10/2012 09:18:44 (+0700) | #3 | 269932
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
Cái tool này có thể giúp bạn: darkk.net.ru/redsocks/.
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 09/10/2012 13:19:04 (+0700) | #4 | 270005
lion1102
Member

[Minus]    0    [Plus]
Joined: 13/08/2012 22:42:16
Messages: 15
Offline
[Profile] [PM]

tuanksor wrote:

lion1102 wrote:

Code:
acl localnet src 192.168.3.0/29
acl Safe_ports port 80
acl Safe_ports port 443
http_access deny !Safe_ports
acl Working_mor time MTWHFA 08:00-12:00
acl Working_aft time MTWHFA 13:00-18:30
acl BlockSites url_regex "/etc/squid/deny_site.acl"
acl BlockIP dstdom_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
http_access deny localnet BlockSites
http_access deny localnet BlockIP
acl AcceptSites url_regex "/etc/squid/deny_tempo_site.acl"
http_access deny localnet Working_mor AcceptSites
http_access deny localnet Working_aft AcceptSites
http_access allow localnet
http_access allow localhost
http_access deny all
[color=red]http_port 8181 transparent ssl-bump cert=/etc/squid/key/cert.pem key=/etc/squid/key/cert.pem[/color]
always_direct allow all
ssl_bump allow all



http thì cần gì certificate, chỗ ở trên bạn bỏ cái cert đi.
Bạn muốn cache https thì thêm vào https_port [port number] transparent [path/to/cert] 


Em đã sửa thành https_port theo như bác hướng dẫn nhưng thử vào link mail Google Apps của bên công ty thì nó hiện ra warning certificate, accept certificate thì cứ load mãi không vào được bác ạ. Em có thử cả trang mail.yahoo.com cũng không được ạ. Em xem log access.log của squid thì hiện ra lỗi:
Code:
TCP_MISS/000 0 GET http://login.yahoo.com/favicon.ico - DIRECT/login.yahoo.com -
TCP_MISS/000 0 GET http://login.yahoo.com/config/login_verify2? - DIRECT/login.yahoo.com
TCP_MISS/504 3953 GET http://login.yahoo.com/config/login_verify2? - DIRECT/66.163.169.186 text/html


Em thử ngay trên máy cài Squid bằng lệnh Code:
squidclient -p 8181 https://www.mail.google.com
thì bị lỗi:
Code:
client: ERROR: Cannot connect to [::1]:8181: Connection refused


Rule Iptables trên máy cài Squid em đã open port 8181 rồi cũng không được.
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 09/10/2012 13:24:21 (+0700) | #5 | 270006
lion1102
Member

[Minus]    0    [Plus]
Joined: 13/08/2012 22:42:16
Messages: 15
Offline
[Profile] [PM]

mrro wrote:
Cái tool này có thể giúp bạn: darkk.net.ru/redsocks/. 

Theo em đọc trên trang này thì tool này giúp điều hướng các kết nối trên Linux Gateway sang https proxy, mà cái này thì em đã làm được bằng Iptables rồi ạ. Em đang vướng mắc việc thực thi các request của user sử dụng port 443 trên proxy ạ
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 09/10/2012 22:46:31 (+0700) | #6 | 270024
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
lion1102: nếu iptables đã làm được thì tại sao lại cần có phần mềm này? smilie. bạn đọc kỹ hơn sẽ thấy lý do. cơ bản là nếu bạn dùng -j REDIRECT thì bạn sẽ bị mất cái địa chỉ IP mà bạn muốn kết nối đến. redsocks giúp bạn lấy lại cái địa chỉ đó. bạn không cần phải cấu hình SQUID thành transparent proxy nữa, mà chỉ cần dùng redsocks đứng giữa là đủ, theo sơ đồ này:

client <-> iptables <-> redsocks <-> SQUID <-> server

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 10/10/2012 12:46:57 (+0700) | #7 | 270037
lion1102
Member

[Minus]    0    [Plus]
Joined: 13/08/2012 22:42:16
Messages: 15
Offline
[Profile] [PM]

mrro wrote:
lion1102: nếu iptables đã làm được thì tại sao lại cần có phần mềm này? smilie. bạn đọc kỹ hơn sẽ thấy lý do. cơ bản là nếu bạn dùng -j REDIRECT thì bạn sẽ bị mất cái địa chỉ IP mà bạn muốn kết nối đến. redsocks giúp bạn lấy lại cái địa chỉ đó. bạn không cần phải cấu hình SQUID thành transparent proxy nữa, mà chỉ cần dùng redsocks đứng giữa là đủ, theo sơ đồ này:

client <-> iptables <-> redsocks <-> SQUID <-> server

-m 


Hi bác mrro,

Ý bác là dùng Iptables bình thường không thể điều hướng connection ở port 443 sang Squid hiệu quả được ạ?

Em không dùng -j REDIRECT để điều hướng connection vì máy cài Squid làm proxy em cài riêng, không chạy chung trên Linux Gateway ạ. Máy làm Gateway có 3 interface: 1 interface để nối với mạng LAN, 1 interface để em nối với máy cài Squid, và 1 interface em nối với modem ra Internet ạ.

Đây là đoạn rule em viết để điều hướng connection ở port 443 sang Squid dùng Iptables ạ

Code:
iptables -A FORWARD -i $INTIF -o $DMZIF -s 192.168.1.160 -d $SQUID -p tcp --sport $HI_PORTS --dport 8181 -j ACCEPT
iptables -A FORWARD -i $DMZIF -o $INTIF -s $SQUID -d 192.168.1.160 -p tcp --sport 8181 --dport $HI_PORTS -j ACCEPT
iptables -t nat -A PREROUTING -i $INTIF -s 192.168.1.160 -p tcp --sport $HI_PORTS --dport 443 -j DNAT --to $SQUID:8181
iptables -t nat -A POSTROUTING -o $DMZIF -s 192.168.1.160 -d $SQUID -j SNAT --to $DMZIP
iptables -t nat -A POSTROUTING -o $EXTIF -s $SQUID -d $EXTNET -j SNAT --to $EXTIP


Chú thích:

- $INTIF: là Lan Interface trên Linux Gateway
- $DMZIF: là Interface trên Linux Gateway mà máy cài Squid nối vào
- $SQUID là IP của máy cài Squid
- $HI_PORTS: là dải port từ 1024 - 65355
- $EXTIF là interface pppoe nối ra Internet
- 192.168.1.160 là IP máy em thử điều hướng connection ở port 443 sang Squid

Mà em cũng muốn dùng Squid để thay Client thực hiện kết nối trên port 80 và 443, không phải chỉ có port 443 đâu ạ
Có gì bác góp ý thêm cho em với ạ.
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 11/10/2012 00:33:35 (+0700) | #8 | 270051
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]

lion1102 wrote:

iptables -t nat -A PREROUTING -i $INTIF -s 192.168.1.160 -p tcp --sport $HI_PORTS --dport 443 -j DNAT --to $SQUID:8181
 


-j REDIRECT thì cũng giống như là cái dòng DNAT ở trên mà bạn làm (chỉ khác là DNAT thì gửi đến máy khác được, còn REDIRECT thì chỉ gửi ở máy nội bộ). khi bạn làm DNAT như thế này thì cái destination IP ban đầu sẽ bị mất. Sở dĩ mà bạn vẫn xài port 80 được là vì nó là HTTP, không có mã hoá, nên SQUID có thể thấy được cái Host header, rồi từ đó kết nối đến đúng chỗ cần kết nối. Nhưng với HTTPS thì SQUID không thấy được gì cả, nên nó không biết nên kết nối đi đâu.

Bạn nên đọc lại bài ở trên của mình, đọc luôn phần documentation của redsock sẽ hiểu rõ hơn. Nên thử redsock trước khi hỏi tiếp.

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Question]   Vấn đề cấu hình https transparent với Squid 12/10/2012 17:21:10 (+0700) | #9 | 270114
lion1102
Member

[Minus]    0    [Plus]
Joined: 13/08/2012 22:42:16
Messages: 15
Offline
[Profile] [PM]
Hi bác mrro,

Khi em cài redsocks trên máy làm Gateway thì bị báo những warning như này:

Code:
In file included from redsocks.c:36:
libevent-compat.h:7:5: warning: #warning Using hardcoded value for evutil_socket_t as libevent headers do not define it.

Code:
In file included from utils.c:28:
libc-compat.h:11:5: warning: #warning Using hardcoded value for IP_ORIGDSTADDR as libc headers do not define it.
libc-compat.h:16:5: warning: #warning Using hardcoded value for IP_RECVORIGDSTADDR as libc headers do not define it.
libc-compat.h:21:5: warning: #warning Using hardcoded value for IP_TRANSPARENT as libc headers do not define it.

Code:
In file included from redudp.c:35:
libc-compat.h:11:5: warning: #warning Using hardcoded value for IP_ORIGDSTADDR as libc headers do not define it.
libc-compat.h:16:5: warning: #warning Using hardcoded value for IP_RECVORIGDSTADDR as libc headers do not define it.
libc-compat.h:21:5: warning: #warning Using hardcoded value for IP_TRANSPARENT as libc headers do not define it.

Máy em sử dụng làm Gateway cài Centos 5.8, có build lại kernel chọn hết các option Netfilter rồi ạ. Vấn đề này có phải do thiếu thư viện C không ạ? Em không biết là phải cài libc nào cho phù hợp ạ.

Mong bác giúp em với ạ
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|