热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux下Squid代理服务器的架设与维护(二)

文章标题:Linux下Squid代理服务器的架设与维护(二)。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  Socks5代理的安装
  
  出国代理上选用的socks5代理软件是NEC公司制作的软件。它实际上是一个商业版软件。但是根据它的license文件所述,在非商业用途上使用这个软件是免费的。在RFC-1928对socks5如何运行做了详细的描述。这个标准就是NEC公司的“Ying-Da Lee”和HP及IBM公司制定的。在相应的测试中,NEC公司的这个socks5代理软件的性能是较好的。虽然它有一些安全上的漏洞,但是使用freebsd的ports方式安装,将会自动对源代码打补丁,修正安全隐患。
  
  在/usr/ports/net/socks5下执行make;make install就能安装好该程序。相应的文件将被安装在下列目录:
  
  socks5可执行文件被放在/usr/local/bin
  socks5.conf文件被放在/usr/local/etc下
  
  bugtraq上曾经提到socks5的密码验证部分有安全隐患,因此没有使用该功能。
  
  Socks5代理的配置
  
  Socks5代理的配置文件是socks5.conf,内容如下:
  
  set SOCKS5_MAXCHILD 8000
  permit - - 192.168. - (1024,65535) -
  permit - - 202.112.64.0/255.255.240.0 - (1024,65535) -
  permit - - 211.71.80.0/255.255.240.0 - (1024,65535) ?C
  
  限制工大可以使用该socks5代理,限制目标端口为1024-65535。设置最多可以有8000个进程运行。
  
  配置文件的切换
  
  为了避免带宽的浪费,出国代理设置为夜间取消最大下载对象限制。这是是使用crontab来做到的。每天夜间23:30将配置文件切换为没有最大下载对象限制的。每天上午7:30切换回有最大下载对象限制的。
  
  四、使用情况分析
  
  单位时间内流量
  
  input (total) output
  packets errs bytes packets errs bytes colls
  917 0 646248 1015 0 767928 0
  941 0 667858 1287 0 1548180 0
  832 0 673330 897 0 836839 0
  895 0 655289 1067 0 878449 0
  
  *以上数据为出国代理负载中等时的数据。
  
  Chinanet出口已经被占满,经过cache的作用,送出数据大于进入数据
  
  CPU负荷
  
  使用top命令看到的CPU的负荷: load averages: 0.72, 0.86, 0.86(1mi,5min,15min),此数据为出国代理负载中等时的数据。
  
  Hourly usage
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/hourlyusage.gif[/img:01091db545]
  
  通过这张图可以清晰的了解出国代理的使用情况。
  
  早6时,宿舍通电。出国代理的使用频度增加数倍。
  早8时,机房、实验室开始开放,出国代理的使用频度近一步增多。
  上午11时,课程结束,部分学生离开机房、实验室,午餐时间使用频度略微减少。
  中午13时,下午课程开始,学生离开宿舍,使用频度减少。
  下午15时,机房和实验室用户增多。
  下午17时,部分机房、实验室关闭,教师离开学校,造成使用频度减少。
  晚18-20时,学生去上自习或选修课,使用频度呈减少趋势
  晚21时-22时,选修课结束,学生回到宿舍,使用频度急剧增加,并且达到每天的最高点。
  晚23时,部分宿舍断电,实验室断电。使用频度进一步减少。
  0时-5时,宿舍学生大多已经休息,使用频度程减少趋势。
  
  Daily usage
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/dailyusage.gif  [/img:01091db545]
  
  通过上面可以看出我校Chinanet线路代理服务器每天的使用情况。出国代理的日访问日志在约600M。图中显示出周末,尤其是周日访问量很大。这是由于周末我校宿舍不断电,作为用户主体的学生的使用网络的时间大大增加。对此称为“周末效应”。
  
  五、安全保障
  
  物理安全的保护
  
  供电:该服务器放在我校网络中心主机房,有双路供电。UPS可以保证在没有市电供应下5小时不中断服务。
  
  物理隔离:网络中心24小时有专人值班,进入主机房需要登记。
  
  服务器软件安全保护
  
  操作系统选用了FreeBSD。Freebsd本身几乎没有任何安全漏洞。根据服务最少化原则,出国代理上目前使用的服务有ssh ntp socks5 squid几种。其中ssh没有使用freebsd自带的openssh,而是使用了ssh.com出的非商业版的ssh服务器软件。这个版本的ssh服务器软件相对openssh有更安全效率更高的优势。而且对于非商业应用是免费的。 服务器通过ntp服务与某网络时间服务器进行时间同步,这是为了保证日志文件记录事件发生时间的准确性。另2个为必须提供的代理服务。其余服务没有打开。执行ps命令确认没有任何多余进程。
  
  对SYN-Flood及扫描的防护
  
  SYN Flood是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/tcpconnection.gif[/img:01091db545]
  
  TCP协议的三次握手过程是这样的:
  
  首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
  
  第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
  
  第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
  
  实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃。即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),从而造成DoS。
  
  在freebsd的可以调整的内核参数中有下面2项:net.inet.tcp.blackhole和net.inet.udp.blackhole。相应的描述如下:The blackhole sysctl(8) MIB is used to control system behaviour when connection requests are received on TCP or UDP ports where there is no socket listening. Normal behaviour, when a TCP SYN segment is received on a port where there is no socket accepting connections, is for the system to return a RST segment, and drop the connection. The connecting system will see this as a "Connection reset by peer". By setting the TCP blackhole MIB to a numeric value of one, the incoming SYN segment is merely dropped, and no RST is sent, making the system appear as a blackhole. By setting the MIB value to two, any segment arriving on a closed port is dropped without returning a RST. This provides some degree of protection against stealth port scans.In the UDP instance, enabling blackhole behaviour turns off the sending of an ICMP port unreachable message in response to a UDP datagram which arrives on a port where there is no socket listening. It must be noted that this behaviour will prevent remote systems from running traceroute(8) to a system. The blackhole behaviour is useful to slow down anyone who is port scanning a system, attempting to detect vulnerable services on a system. It could potentially also slow down someone who is attempting a denial of service attack.
  
  根据上面描述可以将net.inet.tcp.blackhole和net.inet.udp.blackhole设置为2和1,这样将防止半开式的端口扫描,并且能对syn-flood有初步的防护。
  
  在内核的配置文件中有options TCP_DROP_SYNFIN这个选项。通过加入这个参数,可以防止通过TCP/IP堆栈对操作系统进行识别。可以将安全问题中的”information gathering”解决
  
  六、优化
  
  内核的优化
  
  FreeBSD有很丰富的可以自定义的内核的参数。默认的内核为了保证通用性和稳定性,有大量优化性能的参数没有加入。
  
  我校Chinanet代理服务器操作系统内核部分优化参数如下:
  
  options MAXDSIZ="(1024*1024*1024)"
  options MAXSSIZ="(1024*1024*1024)"
  options DFLDSIZ="(1024*1024*1024)"
  options CPU_ENABLE_SSE
  options PANIC_REBOOT_WAIT_TIME=16
  
  前三行是对freebsd下运行的应用程序可以使用的最大的内存资源作限制,默认为128M。由于出国代理服务器软件squid占用内存巨大,默认的配置显然不能满足要求,所以要使用自定义的配置。这个配置允许单一进程占用1G的内存资源。
  

推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
author-avatar
lmaster
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有