第1章应用代理概述
1.1概念
应用代理(Application Proxy)技术是指在某一台服务器上运行代理服务器软件,对网络上的信息进行监听和检查,并对访问内网的数据进行过滤,从而起到隔断内网与网外直接通信的作用。
1.2正向代理
用户通过代理服务器去访问Internet(如下图),该服务器在用户视角属于正向代理。

1.3反向代理
用户要访问Web服务,这些web服务被代理服务器所映射,该代理服务器从用户侧角度就是反向代理。

1.4代理方案
Squid+Stunnel Server +Stunnel Client+PC,且Squid和Stunnel Server部署在网络同一侧,Stunnel Client和PC在另外一侧。

第2章 Squid
2.1介绍
Squid是一个开源的高性能的代理缓存服务器,Squid支持HTTP、HTTPS和等FTP协议。Squid 提供丰富的访问控制、授权和日志记录环境来开发 Web 代理和内容服务应用程序。Squid 提供了一组丰富的流量优化选项,其中大部分默认启用,以实现更简单的安装和更高的性能
官方网站:http://www.squid-cache.org/
2.2安装
linux版本:CentOS 7.4
2.2.2自动安装httpd
yum -y install httpd
2.2.3自动安装squid
(1)安装命令:yum -y install squid 或者自行到官网下载。
(2)查看版本:squid -v
(3)默认配置文件:/etc/squid/squid.conf
2.2.4编译安装squid
./configure --prefix=/usr/local/squid --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-underscore --enable-poll --enable-gnuregex
make && makei install
2.3配置
2.3.1生成密钥文件
openssl req -new -keyout ./key.pem -nodes -x509 -days 365 -out ./cert.pem
2.3.2生成访问用户
htpasswd -c /etc/squid/passwd username
2.3.3参考配置文件
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 “this” network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl hasRequest has request
access_log daemon:/var/log/squid/access.log hasRequest
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 2
auth_param basic credentialsttl 10 hours
auth_param basic realm welecome to using valen proxy
acl AuthUsers proxy_auth REQUIRED
http_access allow AuthUsers
http_access deny all
htcp_access allow localnet
htcp_access deny all
visible_hostname valen-vm01
dns_nameservers 1.1.1.1
http_port 3128 #自定义端口
https_port 0.0.0.0:31443 #自定义端口
tls-cert=/etc/squid/publickey.pem #自定义密钥文件
tls-key=/etc/squid/privatekey.pem #自定义密钥文件
cache_mem 60 MB
2.4运行
systemctl start squid
第3章 Stunnel
3.1介绍
Stunnel是一个自由的跨平台软件,用于提供全局的TLS/SSL服务。针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连接。
3.2安装
3.2.1自动安装stunnel
yum install stunnel4
3.2.2编译安装stunnel
wget https://www.stunnel.org/downloads/stunnel-5.60.tar.gz
./configure
make && make install
3.2.3升级openssl
Stunnel 的版本和openssl有匹配关系。
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1k.tar.gz
tar -zxvf openssl-1.1.1k.tar.gz
./config
make && make install
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
3.3配置
3.3.1生成密钥文件
openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem
3.3.2服务端配置文件
cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem
options = NO_SSLv3
[squid-proxy]
; 服务监听的端口,client要连接这个端口与server通信
accept = 9999
; 服务要连接的端口,连接到squid的3128端口,将数据发给squid
connect = 3128
3.3.3客户端配置文件
[squid-proxy]
accept = 8888
; 要连接到的stunnel server的ip与端口
connect = IP:9999
verify = 2
CAfile = stunnel.pem
3.4运行
./stunnel
第4章 代理测试
4.1 FireFox浏览器设置
代理上网设置:部署stunnel的IP 端口8888
测试成功。

2040

被折叠的 条评论
为什么被折叠?



