Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头

本实验操作系统选用 CentOS release 5.6 (Final)

实验目的实现 Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR  请求头 .使其显示任意IP 

过程如下: 

1.下载对应系统的squid源码版本

Squid源码连接:http://www.squid-cache.org/Versions/

 本次实验下载:http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE21.tar.gz

命令: wget  http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE21.tar.gz

2.解压修改编译源码 一次执行如下命令

 yum -y install gcc perl make

tar xzf squid-2.6.STABLE21.tar.gz

cd squid-2.6.STABLE21

         修改代码文件 http.c  

  /* append X-Forwarded-For */

     if (opt_forwarded_for) {
    strFwd = httpHeaderGetList(hdr_in, HDR_X_FORWARDED_FOR);
    strListAdd(&strFwd, " 112.121.182.45 "' , ');
    httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strBuf(strFwd));
    stringClean(&strFwd);
    }
 
cd squid-2.6.STABLE21
./configure --prefix=/usr/local/squid --disable-internal-dns
make
make install

3.设置配置文件  

 /usr/local/squid/etc/squid.conf 如下配置

visible_hostname nginxs.com
http_port  3128
icp_port  3130
cache_log /dev/ null
cache_store_log none
pid_filename / var/run/squid.pid
maximum_object_size  32768 KB
acl all src  0.0. 0.0/ 0.0. 0.0
http_access allow all
icp_access allow all
dns_nameservers  8.8. 8.8
header_access Via deny all

 

chmod -R 777 /usr/local/squid/var

 /usr/local/squid/sbin/squid -z

/usr/local/squid/sbin/squid start

echo "/usr/local/squid/sbin/squid start" >> /etc/rc.local

vi /etc/rc.local

不出意外 现在可以打开IE 挂上代理IP测试了
 
对于修改之后重新编译
make   uninstall
make   clean
 
对于启动出现错误 squid: Cannot open HTTP Port
原来是Selinux防火墙阻止了,把SELinux关闭掉之后,便可以正常启动squid服务了!

vi /etc/selinux/config
改成SELINUX=disabled

 

header_access Via deny all
header_access X-Forwarded-For deny all
header_access Server deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all

CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录。
shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter。
网上找了资料才知道
如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A。如果你将这个脚本文件直接放到Linux上执行就会报/bin/bash^M: bad interpreter错误提示。
解决方法很简单,首先你先要检查一下看看你的脚本文件是不是这个问题导致的,用vi命令打开要检查的脚本文件,然后用
:set ff?
命令检查一下,看看是不是dos字样,如果是dos格式的,继续执行
:set ff=unix
然后执行
:qw
保存退出即可。

 

 方法2:修改squid,confi 中visible_hostname 8.8.8.8 这样不用每次编译

/* append X-Forwarded-For */
if (opt_forwarded_for) {
strFwd = httpHeaderGetList(hdr_in, HDR_X_FORWARDED_FOR);
strListAdd(&strFwd,Config.visibleHostname, ',');
httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strBuf(strFwd));
stringClean(&strFwd);
}

 

 

转载于:https://www.cnblogs.com/xishi/archive/2012/04/10/ada.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值