实验目的实现 Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头 .使其显示任意IP
过程如下:
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 */
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);
}
3.设置配置文件
/usr/local/squid/etc/squid.conf 如下配置
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
make clean
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);
}