频道栏目
首页 > 资讯 > 系统安全 > 正文

用Linux下的代理服务器保护主干网

11-01-14        来源:[db:作者]  
收藏   我要投稿
/ 西邮猎手(王聪)
前一段时间学校要给每个实验室都安装代理服务器,于是我找到学校网络中心,在真实环境中实践了一下。学校的代理服务器上主要使用squid进行Web代理,用Socks5进行其它的代理,用iptables给代理服务器加上一道防火墙。之所以要安装代理服务器,是因为实验室里的电脑病毒非常多,如果将这些电脑直接连接在中心交换机上,对网络资源将是极大的浪费。而装上代理服务器后,不但可以上网,而且通过iptables的限制,局域网内的用户只能访问3128和1080这两个端口,使得一些木马无法向外连接。
代理服务器有什么用?
代理服务器的用途很广泛,一般用户可以用它来提高访问某些网络 (比如教育网,国外的网络) 的速度。而我们学校用它主要是让实验室里的电脑可以上网的同时又将它们与主干网络隔离开来。对于一些流量比较大的网站,代理服务器还可以起到Web加速的作用,比如一些在线视频分享网站,扫描其80端口,会发现它运行的服务是http-proxy而不是http。我用nmap来扫描www.56.com的80端口,输入下面的命令[root@localhost ~]# nmap  -PN -sV -p80 www.56.com,可以得到如图1所示的结果,原来56.com是使用代理服务器将信息传给用户的,这样做不但安全,而且还大大提高了访问速度。可能有些朋友要问为什么加上代理服务器就能提高访问速度,这是因为代理服务器可以将用户经常访问的东西放在内存里,当用户需要时,可直接将信息传给用户,而像Apache这样的Web服务器是从磁盘中将信息读到内存中,然后才将信息传给用户的,这样做明显没有用代理的速度快,当然,一个很大的内存是十分必要的。
1
 
安装前的准备
在安装squid和Socks5之前,先要创建一个单独的分区来保存缓存文件,还要创建一个专门的用户来启动squid和Socks5,即使黑客利用了这两个软件的漏洞,他也没有Root权限。
1)查看服务器所挂硬盘的名称
 [root@localhost ~]#fdisk -l
显示Disk /dev/hda,说明这台服务器硬盘的设备名是/dev/hda。
2)创建一个新的squid缓存分区
因为squid要将缓存文件保存在硬盘里,这样会频繁读写硬盘,所以要单独建一个分区,最好是单独用一块硬盘。输入命令:
[root@localhost ~]#fdisk /dev/hda 
接着按m取得帮助,从帮助中可以看出按n是创建一个新的分区,接着按l是增加逻辑分区。
当显示“First cylinder (731-2431, default 731):”,是要求我们输入起始柱面,直接按回车就行了。当显示:
Using default value 731
Last cylinder or +size or +sizeM or +sizeK (731-1176, default 1176):
这是要求我们输入结束柱面,输入+2000M后回车,表示创建一个大小为2G的分区。
3)格式化分区为ext3格式
 [root@localhost ~]#mke2fs -j -L "logical" /dev/hda5
4)挂载刚才创建的分区
 [root@localhost ~]#mkdir /mnt/cache
 [root@localhost ~]#mount /dev/hda5 /mnt/cache
命令执行完毕后,在/etc/fstab中添加一行:“/dev/hda5 /mnt/cache/ ext3 defaults 0 0”,可以让系统启动时能自动挂载分区。
5)创建一个proxy用户
 [root@localhost ~]#useradd proxy
6)设置用户密码
 [root@localhost ~]#passwd proxy
接着输入两次密码即可。
7)配置服务器ip
服务器上有两块网卡:eth0连接内网,网段为192.168.1.0/24;eth1连接外网。
执行命令配置eth0的ip:
[root@localhost ~]# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
再执行命令配置eth1的ip:
[root@localhost ~]# ifconfig eth1 a.a.a.a netmask 255.255.255.0
其中a.a.a.a为公网ip地址。之后再添加一条路由,x.x.x.x为公网的网关:
[root@localhost ~]#route add -net 0.0.0.0 gw x.x.x.x eth1
安装squid
1)安装squid的rpm包,命令如下。
 [root@localhost ~]#rpm -ivh squid-2.6.STABLE6-3.el5.i386.rpm
2)修改squid的配置文件
 [root@localhost ~]#vim /etc/squid/squid.conf
squid.conf里的配置菜单如下,其它选项可以使用默认值。
 
http_port 3128 #监听端口为3128
cache_mem 700MB #设置squid的高速缓存大小。因为物理内存为1G,文本模式启动系统只占内存65M,加上squid、Socks5和iptables的守护进程占部分内存,故700M比较合适
maximum_object_size 4096 KB
#超过4M的文件不保存到硬盘上,否则硬盘的缓存空间很快会被占满
maximum_object_size_in_memory 1024 KB
#超过1MB的文件不保存到内存里
ipcache_size 1024
#DNS解析后的IP放在缓存中,可免去重复查询DNS,提高访问速度
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
#IP与主机名称的记录
visible_hostname 你的计算机名
#不设置有时无法启动
squid logfile_rotate 6
#设置日志轮转,6表示会生成0~6共7个日志文件,这个设置非常重要,后面要讲到它
cache_dir ufs /mnt/cache 2000 16 256
#/mnt/cache为squid缓存分区的挂载点,2000是缓存分区的大小,与刚才新建的分区一样大
cache_swap_low 90 cache_swap_high 95
#当高速缓存占用到95%时,自动减小到90%
cache_effective_user proxy cache_effective_group proxy
#将squid的拥有者设成前面新建的那个用户
proxy acl safe_ports port 80 8000 8080 443 http_access allow safe_ports http_access deny !safe_ports
#可访问的远程计算机的端口,之所以没有25端口是防止此代理服务器成为垃圾邮件的转发器
acl all src 0.0.0.0/0
acl lan src 192.168.1.0/24 http_access allow lan http_access deny all
#只允许内网用户使用此代理服务器,访问控制列表里的功能非常丰富,可以根据自己的需要进行设置
3)创建缓存目录
将缓存目录的拥有者设成配置文件中cache_effective_user指定的用户,属主设成cache_effective_group中指定的属主,这里的用户一定要对应,否则会启动失败
[root@localhost ~]#chown -R proxy:proxy /mnt/cache
将保存日志的目录的拥有者也设成proxy。
[root@localhost ~]#chown –R proxy:proxy /var/log/squid
生成缓存目录。
[root@localhost ~]#squid -z
4)日志轮转
假如cache非常忙,那么在一段时间后,squid的日志文件可能变得很大,严重的会导致squid无法正常工作,所以必须定期轮转日志。每执行一次轮转时,squid删除log.6并重命名log.5为log.6,然后重命名log.4为log.5,依此类推。当前log变成log.0,并且Squid创建一个新的空文件,命名为log。 如果嫌每次手动执行轮转日志太麻烦,我们可以在/etc/crontab里添加一行作业,前提是cron服务必须启动。
0 3 * * * /usr/sbin/squid -k rotate
这条命令表示每天的早上3点轮转日志,其中squid的路径可以用[root@localhost ~]#type squid查到。
5)启动squid
启动前可输入如下命令对配置文件进行查错。
[root@localhost ~]#squid -k parse
如果没有错误,输入如下命令即可以proxy用户身份启动squid。
[root@localhost ~]#su proxy /etc/rc.d/init.d/squid start
6)设定开机自动启动squid服务
以3(多用户文本界面)或5(多用户图形界面)级别启动系统时启动squid服务。
[root@localhost ~]#chkconfig --level 35 squid on
 
安装Socks5
有些协议不能使用squid作代理,所以我们要再安装一个Socks5
1)编译并安装socks5
 [root@localhost ~]#tar -xzvf socks5-v1.0r11.patched.tar.gz
 [root@localhost socks5]# cd socks5-v1.0r11
 [root@localhost socks5-v1.0r11]# ./configure --with-threads
 [root@localhost socks5-v1.0r11]#make
 [root@localhost socks5-v1.0r11]#make install
2)创建配置文件
创建一个文件/etc/socks5.conf并输入“permit - - 192.168.1. - -”,表示只允许192.168.1.0/24网段的用户使用Socks代理。
3)启动socks5
[root@localhost ~]#su proxy
相关TAG标签
上一篇:系统优化大师V2007算法分析
下一篇:jquery+php实现用户输入搜索内容时自动提示
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站