Web代理的工作机制:
缓存网页对象,减少重复请求
代理的基本类型:
传统代理:适用于Internet,客户端上网需明确指定服务端IP以及端代理口;
透明代理:适用于共享上网网关,客户端上网不需指定服务端IP以及端代理口。
使用代理的好处:
1.提高Web访问速度
2.隐藏客户机的真实IP地址
安装编译squid服务:
[root@localhost ~]# tar -zxf squid-3.5.23.tar.gz
[root@localhost ~]# cd squid-3.5.23/
[root@localhost squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 --enable-default-err-language=Simplify_Chinese --disable-poll --enable-epoll --enable-gnuregex
[root@localhost squid-3.5.23]# make && make install ##编译安装
装完后创建连接文件,创建用户和组
[root@localhost squid-3.5.23]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/ ##软连接ln -s [源文件或目录] [目标文件或目录]
[root@localhost squid-3.5.23]# useradd -M -s /sbin/nologin squid ##创建squid用户,并且不允许登陆系统
[root@localhost squid-3.5.23]# chown -R squid:squid /usr/local/squid/var/ ##指定文件的拥有者改为指定的用户或组
squid的配置文件
[root@localhost squid-3.5.23]# vi /etc/squid.conf ##在coredump_dir /usr/local/squid/var/cache/squid上边添加一下两条配置
http_port 3128 ##默认自带(用来指定代理的监听端口)
cache_effective_user squid ##指定squid程序用户,用来设置初始化,运行时缓存的账号,否则启动不成功
cache_effective_group squid
:wq
[root@localhost squid-3.5.23]# squid -k parse ##检查配置文件是否正确
启动、停止squid
[root@localhost ~]# squid -z ##-z选项用来初始化缓存目录
[root@localhost ~]# squid ##启动squid服务
[root@localhost ~]# netstat -anpt |grep squid ##监听3128端口是否开启
tcp6 0 0 :::3128 :::* LISTEN 82716/(squid-1)
编辑squid服务脚本
[root@localhost ~]# vi /etc/init.d/squid
#!/bin/bash
# chkconfig: 2345 90 25
# Squid Server Script
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -anpt | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid正在运行"
else
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
echo "squid正在运行...."
else
echo "squid未启动"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "请输入正确参数{start|stop|reload|restart|check|status}"
;;
esac
:wq
[root@localhost ~]# chmod +x /etc/init.d/squid ##添加执行权限
[root@localhost ~]# chkconfig --add squid ##添加为系统服务
[root@localhost ~]# systemctl restart squid ##重启测试脚本
[root@localhost ~]# netstat -anpt |grep squid
tcp6 0 0 :::3128 :::* LISTEN 82942/(squid-1)
一.传统代理 :
squid服务器的配置:添加如下配置
[root@localhost ~]# vim /etc/squid.conf
http_access allow all ##表示允许任意客户机使用代理,放在http_access deny all之前
reply_body_max_size 10 MB ##表示允许下载的最大文件大小(10MB)
:wq
重启squid服务
[root@localhost ~]# systemctl restart squid
或
[root@localhost ~]# squid -k reconfigure
测试:
在Windows中设置代理
打开IE浏览器–>工具–>Intelnet选项–>连接–>局域网设置–>“勾上"代理服务器的勾–>地址中写代理服务器的IP,
端口中写"3128”–>确定,访问百度即可
在Linux中设置代理,需要通过环境变量来制定代理服务器的地址、端口
[root@localhost ~]# vi /etc/profile ##配置文件中添加一下内容
HTTP_PROXY=http://192.168.10.30:3128 ##http协议
HTTPS_PROXY=http://192.168.10.30:3128 ##https协议
FTP_PROXY=http://192.168.10.30:3128 ##ftp协议
NO_PROXY=192.168.1.,192.168.2. ##对这两个局域网网段不适用代理
export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY
[root@localhost ~]# source /etc/profile ##刷新配置文件
代理服务器验证方法
1、chakansquid访问日志的新增记录
[root@localhost ~]# tail -f /usr/local/squid/var/logs/access.log
1536938536.649 3 192.168.10.100 TCP_MISS/404 525 GET http://192.168.10.40/noindex/css/fonts/L
ightItalic/OpenSans-LightItalic.eot? - HIER_DIRECT/192.168.10.40 text/html
2、查看被访问端的web访问日志的新增记录
[root@localhost ~]# tail -f /var/log/httpd/access_log
192.168.10.30 - - [14/Sep/2018:23:22:17 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.eot? HT
TP/1.1" 404 240 "http://192.168.10.40/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; T
rident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0;
InfoPath.2)"
二.透明代理:
[root@localhost ~]#vim /etc/squid.conf
http_port 192.168.3.1:3128 transparent
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]#sysctl -p
设置防火墙重定向策略
[root@localhost ~]#systemctl start firewalld.service
[root@localhost ~]#firewall-cmd --zone=internal --add-interface==ens34 ###外网
[root@localhost ~]#firewall-cmd --zone=external --add-interface==ens32 ###内网
[root@localhost ~]#firewall-cmd --zone=external --add-service=http
[root@localhost ~]#firewall-cmd --zone=external --add-service=httpds
[root@localhost ~]#firewall-cmd --zone=external --add-port=3128/tcp
[root@localhost ~]#firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens32 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@localhost ~]#firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens32 -p tcp --dport 443 -j REDIRECT --to-ports 3128
[root@localhost ~]#firewall-cmd --runtime-to-permanent
[root@localhost ~]#unset HTTP_PROXY HTTPS_PROXY
定义ACL列表
[root@localhost ~]#vim /etc/squid.conf
acl localhost src 127.0.0.1/255.255.255.255.25 #源地址为127.0.0.1
acl MYLAN src 192.168.3.0/24 192.168.1.0/24 #客户机网段
acl to_localhost dst 127.0.0.0/8 #目标地址为127.0.0.1/8网段
acl MC20 maxconn 20 #最大并发连接20
acl BlackURL url_regex -i ^rtsp:// ^emule:// #以rtsp://等开头的URL
acl MEDIAFILE url_regex -i \.mp3$ \.mp4$ \.rmvb$ #以.mp3/.mp4/.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30 #时间为周一到周五
建立目标地址黑名单文件
[root@localhost ~]#mkdir /etc/squid_acl
[root@localhost ~]#cd /etc/squid_acl
[root@localhost squid_acl]#vim ipblock.list
61.135.167.36
125.39.127.25
[root@localhost squid_acl]#vim dmblock.list
.qq.com
.msn.com
[root@localhost ~]#vim /etc/squid.conf
acl IPBLOCK dst "/etc/squid_acl/ipblock.list"
acl DMBLOCK dstdomain "/etc/squid_acl/dmblock.list"
设置访问权限
[root@localhost ~]#vim /etc/squid.conf
http_access deny MEDIAFILE #禁止客户端下载MP3.MP4文件
http_access deny IPBLOCK #禁止客户端访问黑名单中的IP地址
http_access deny DMBLOCK #禁止客户端访问黑名单中的网站域
http_access deny MC20 #禁止客户端并发连接超过20时将被阻止
http_access allow WORKYIME #允许客户端在工作时间上网
http_access deny all #默认禁止所有客户端使用代理
三.Squid日志分析:
[root@localhost ~]#yum -y install gc gc-devel
[root@localhost ~]#mkdir /usr/local/sarg
[root@localhost ~]#tar -zxvf sarg-2.3.7.tar.gz
[root@localhost ~]#cd sarg-2.3.7
[root@localhost ~]#./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotectiom && make && make install
[root@localhost ~]#cd /etc/sarg/
[root@localhost sarg]#vim sarg.conf
access_log /usr/local/squid/var/logs/access.log #指定squid访问的日志文件
title "Squid User Access Reports" #网页标题
output_dir /var/www/html/sarg #sarg报告输出位置
user_ip no #使用用户名显示
exclude_hosts /usr/local/sarg/noreport #指定不计入排序的站点列表文件
user_sort_field connect reverse #对于用户访问记录连接次数将按降序排列
overwrite_report no #当那个日期报告文件已存在是否覆盖
mail_utility mailq.postfix #发送邮件报告
charset utf-8 #使用字符集
weekdays 0-6 #指定top排序时的星期周期,0为周日
hours 9-12,14-16,18-20 #指定top排序时的时间周期
www_document_root /var/www/html #网页根目录
[root@localhost ~]#touch /usr/local/sarg/noreport
[root@localhost ~]#ln -s /usr/local/sarg/bin/sarg /usr/local/bin
[root@localhost ~]#sarg
[root@localhost ~]#yum -y install httpd
[root@localhost ~]#systemctl restart httpd
[root@localhost ~]#systemctl enable httpd