Configure iptables for PPTPD on CentOS 6

Rules in bold are essential.

#!/bin/bash

# Set defaults. Be careful with -F and -X they will reset your iptable rules.
# iptables -F
# iptables -X
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -A INPUT -j DROP
iptables -A INPUT -i lo -j ACCEPT

# Accept established sessions
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

# Allow Pings.
# iptables -A INPUT -p icmp -j ACCEPT

# Allow SSH
# iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# Allow PPTP Control connection
iptables -A INPUT -p tcp –dport 1723 -j ACCEPT

# Allow GRE
iptables -A INPUT -p gre -j ACCEPT

# NAT for PPTP clients connectivity
iptables -t nat -A POSTROUTING -j SNAT –to-source 192.168.0.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

什么是DDOS攻击及怎么抵抗DDOS攻击?

一、为何要DDOS?

随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDOS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDOS攻击问题成为网络服务商必须考虑的头等大事。

二、什么是DDOS?

DDOS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。虽然同样是拒绝服务攻击,但是DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDOS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDOS攻击。

三、被DDOS了吗?

DDOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。

如何判断网站是否遭受了流量攻击呢?可通过Ping命令来测试,若发现Ping超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。

相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。

当前主要有三种流行的DDOS攻击:

1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。

2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。

·什么是DDOS攻击及怎么抵抗DDOS攻击?(2)
3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。

四、怎么抵御DDOS?

对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDOS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDOS攻击。以下几点是防御DDOS攻击几点:

1、采用高性能的网络设备

首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS攻击是非常有效的。

2、尽量避免NAT的使用

无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。

3、充足的网络带宽保证

网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood攻击,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。

4、升级主机服务器硬件

在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,若有志强双CPU的话就用它吧,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,别只贪IDE价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用3COM或Intel等名牌的,若是Realtek的还是用在自己的PC上吧。

5、把网站做成静态页面

大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。

6、增强操作系统的TCP/IP栈

Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》。

也许有的人会问,那我用的是Linux和FreeBSD怎么办?很简单,按照这篇文章去做吧!《SYN Cookies》。

7、安装专业抗DDOS防火墙

8、其他防御措施

以上几条对抗DDOS建议,适合绝大多数拥有自己主机的用户,但假如采取以上措施后仍然不能解决DDOS问题,就有些麻烦了,可能需要更多投资,增加服务器数量并采用DNS轮巡或负载均衡技术,甚至需要购买七层交换机设备,从而使得抗DDOS攻击能力成倍提高,只要投资足够深入。

[总结]Squid服务在实际工作的应用、优化和流量监控

一、squid的推荐学习及基础配置
1.Squid学习指南(彭勇华)
http://blog.s135.com/book/squid/
二,Squid2.6基础配置重要语法详解(抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … 523c1c8618bf2e.html
3.squid3.0做反向代理服务器(冷锋)
http://hi.baidu.com/billdkj/blog … f379d1f2d38599.html
4.squid3.0与squid.26的区别(NetSeeK,推荐)
http://bbs.linuxtone.org/thread-2746-1-1.html
5.squid2.6做反向代理模型(王斌斌 抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … 826da4cd1166ac.html
6.squid+iptables透明代理+防火墙终极配置(赵兵)
http://hi.baidu.com/yuhongchun02 … 419b21ab184cf9.html
7.squid(2.6)如何使用用户身份认证(抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … 9c7127730eec71.html
8.squid3.0与squid2.7的区别(NetSeek)
http://bbs.linuxtone.org/thread-2746-1-1.html
9.squid安装调试中的几个常用命令(抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … 235b554fc22605.html
10.在squid中refresh_pattern的一些理解和建议(linuxtone)
http://bbs.linuxtone.org/viewthread.php?tid=138
11.squid3.0反向代理基础语法(抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … cd63026f068c73.html

二、Squid优化相关
1.隐藏Squid版本(NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=131
2. squid优化建议(听松一隅)
http://bbs.linuxtone.org/viewthread.php?tid=36
3. 学习CDN不得不读之-Squid优化补遗(ZT)
http://bbs.linuxtone.org/viewthread.php?tid=395
4.squid反向代理基本概述及性能事项(NetSeek)
http://bbs.linuxtone.org/thread-1667-1-1.html
5.header中的Cache-control参数说明 [php编码] (NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=2382
6.减少linux下squid time_wait(张宴)
http://hi.baidu.com/yuhongchun02 … e4b9e7ce1b3e0f.html
7.squid日志TCP命中率字段祥解(NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=1932
8.关于maximum_object_size优化(NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=1124
9.squid动态URL日志记录不完整(ready)
http://bbs.linuxtone.org/viewthread.php?tid=1045
10.squid TCP_NEGATIVE_HIT 缓存错误页面时间 negative_ttl(NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=637
11.squid的优化(扶凯)
http://www.php-oa.com/2008/02/03/squidyouhua.html
12.Squid中有关多线程大文件断点续传和流媒体的处理方法(扶凯)
http://www.php-oa.com/2008/08/07/squidcdn.html
13.网页加速的十四条原则(扶凯)
http://www.php-oa.com/2008/07/27 … b3%95%e5%88%99.html

三,squid在CDN中的应用及负载均衡
1.深度剖析:CDN内容分发网络技术原理
http://bbs.linuxtone.org/viewthr … 26amp%3Btypeid%3D57(NetSeek)
2.CDN内容分发网络架构与四大关键技术
http://bbs.linuxtone.org/viewthr … 26amp%3Btypeid%3D57(NetSeek)
3.CDN应用常识介绍
http://hi.baidu.com/yuhongchun02 … 96aed2ad6e75ce.html(抚琴煮酒)
4.我谈对CDN的看法
http://bbs.linuxtone.org/thread-2689-1-2.html(晓辉)
5.CDN中squid节点的X-Cache和X-Cache-Lookup的意义(扶凯)
http://www.php-oa.com/2008/06/23 … lookupdeyiyi-2.html
6.网络多数据中心站点CDN网络构建实例精讲(田逸推荐!)
http://micangel.ys168.com
7.Squid3.0反向代理+DNS轮询实现负载均衡(抚琴煮酒)
http://hi.baidu.com/yuhongchun02 … 9d70a7cbefd0d0.html

四、Squid缓存删除的问题
squid缓存批量删除的工具(张宴)
http://blog.s135.com/post/308/
squid清除缓存的shell脚本,存在10%的误差(张宴)
http://hi.baidu.com/yuhongchun02 … 55c25a342acc79.html

五、Squid如何防盗链
1.Squid图片及mp3防盗链(NetSeek)
http://bbs.linuxtone.org/viewthread.php?tid=132
2.Squid防盗链终极解决方案(相濡以沫)
http://hi.baidu.com/yuhongchun02 … 327ac97dd92a52.html
3.squid-2.6之Web反向代理加速实做/防盗链/防盗用/防爬虫(HonestQiao )
http://bbs2.chinaunix.net/viewthread.php?tid=798564&extra=

六、squid服务的日志及服务器流量监控
之所以如此推荐mrtg,是因为本人公司的CDN用MRTG+shell监控流量及状态,效果不错)
1.Nagios监控相关资源汇总(NetSeek,推荐)
http://bbs.linuxtone.org/thread-1281-1-1.html
2.安装MRTG进行全面监控(haijd)
http://bbs.linuxtone.org/thread-971-1-1.html
3.MRTG监控squid流量(NetSeek)
http://bbs.linuxtone.org/thread-840-1-1.html
4.sarg对squid的日志流量分析报表(按小时,天,周生成)
http://www.php-oa.com/2008/03/20/sarg-squid-hour.html

Installing and Configuring Windows Server 2008 SMTP

Installing SMTP Server Feature on Windows 2008 is an easy process requiring only few steps to complete. On this article we will describe a step by step configuration and installation of the SMTP Server feature and how to enable the smtp to relay from local server.

Step 1:

Opening Server Manager Console and under Features select Add Features

Step 2:

Selecting SMTP Server option

Step 3:

Click on Install wait until finish and click close

Step 4:

Waiting for installation to finish and clicking on Close

Step 5:

Opening IIS 6.0 Manager under Administrative Tools -> Internet Information Services 6.0

Step 6:

Under [SMTP Virtual Server] second mouse click and properties

Step 7:

Select Relay under Access Tab

Step 8:

Select Only the list below and click on Add button

Step 9:

Enter IP Address 127.0.0.1 for relay

Step 10:

Sending a manual email through telnet to confirm everything working successfully. Telnet localhost 25 or telnet yourpublicip 25 and make sure you open the specific port on your firewall to be available to public.

WebsitePanel not creating DNS entries in secondary name server

You must add an IP Address to each Name Server under Configuration > Servers > Click on the name of the first name server and then choose IP Address, then type an IP address (192.168.0.101) and then add. Do the same for the second Name Server (192.168.0.102).

Then, in the SimpleDNS Server Service Properties look for the section called “Listening IP Address” , choose the IP Address that you assigned this server and then click the Add button. Do this for BOTH Name Servers and BOTH SimpleDNS Server Services.

These IP Addresses are used to tell SimpleDNS which IPs to allow zone transfers from…if they arent specified then SimpleDNS wont allow a zone transfer from your secondary name server like you want it to 🙂

(Also, just as a side note… I went into the SimpleDNS management interface directy, and went into the options and told it to only bind to port 53 on the specific IP Address that I chose above….that way it’s not listening for DNS on all IPs on the machine. This is probably more important in a single server installation, or where your DNS servers have multiple NICs or IPs.)

Websitepanel无法新建网站的解决办法

今天在转移WEBSITEPANEL的时候遇到以下问题,无法新建网站:

[8/16/2010 6:35:19 PM] ERROR: ‘Internet Information Services 7.0’ UpdateSite
System.NullReferenceException: Object reference not set to an instance of an object.
at WebsitePanel.Providers.Web.IIs70.SetWebSiteApplicationPool(WebSite site, Boolean createAppPools)
at WebsitePanel.Providers.Web.IIs70.UpdateSite(WebSite site)
at WebsitePanel.Server.WebServer.UpdateSite(WebSite site)

将BackupCatelog.xml文件中的对应<AspNetInstalled />字段改成<AspNetInstalled>2</AspNetInstalled>即可正常恢复。

 

实战Squid的反向代理在共享IP的VPS上的应用

实战Squid的反向代理在共享IP的VPS上的应用
Web, 服务器 Add comments 八 252009Squid作为一款相当优秀的代理、负载均衡软件,其反向代理功能在提高网站性能上有极大的推动作用,并兼有保护Web服务器、自动负载均衡等功能。今有一服务器,装有VMWare server,其上带着几个VPS,只有一个IP可用。VPS通过NAT访问外网,外网通过IP Forwading访问VPS,IP Forwading中绑定主机端口都不可能是80,所以需要将带有Host头的80端口的包,按照一定的规则,分发给不同的VPS使用。使用Apache的mod_proxy可以实现此功能,但是其效能低下,如今改用Squid来实现此功能。
配置文件如下:
acl all port 80
http_port 80 accel defaultsite=mysite.com vhost
cache_peer 127.0.0.1 parent 10801 0 no-query originserver name=server_1
cache_peer_domain server_1 www.mysite1.com .mysite1.com

cache_peer 127.0.0.1 parent 10802 0 no-query originserver name=server_2
cache_peer_domain server_2 www.mysite2.com .mysite2.com

http_access allow all

第二行中的mysite.com指定当传递的HTTP头中HOST为空时,默认的值。
第三行、第四行是定义服务器1的IP地址、端口和默认域名,泛域名
第六行、第七行是定义服务器2的IP地址、端口和默认域名,泛域名

这样一样,squid就可以根据HOST来分发包了。若再加上Cache特性,其性能一定会发挥得更好。在此就不多叙述了

wordpress IIRF伪静态规则

将以下规则保存为iirf.ini放到网站根目录即可实现伪静态。
RewriteBase /

#store original URL in custom header (substitute for missing REQUEST_URI header in IIS)
RewriteHeader X-REWRITE-URL: ^$ %{REQUEST_URI}

#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RedirectRule ^(.+)$ $1/ [R=301]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

防止服务器网卡被禁用

  防止网卡被意外禁用,这个对大家可能没有多大的用途,但如果你有服务器托管在外面,那可就有用了,如果你那天不小心点到了“禁用”,呵呵,那后果我就不用说了吧,你的服务器马上就跟你说拜拜了,而且必须进入机房去重新启用网卡才可以(我就碰到了这样的倒霉事啊)。
  闲话不多说,下面说重点:
  实现的方法,用组策略来实现。
  步骤:
  1、运行——》gpedit.msc
  2、导航至:用户配置——》管理模板——》网络——》网络连接
  3.1、找到“禁止启用/禁用 LAN 连接的组件”,设置为“已启用”
  3.2、找到“启用/禁用 LAN 连接的能力”,设置为“已禁用”
  3.3、找到“为管理员启用 Windows 2000 网络连接设置”,设置为“已启用”
  4、运行——》gpupdate /force
  你现在检查一下本地连接的属性,“禁用”按钮已经变成灰色的不可用状态,这下你再也不用担心意外点中,让你的服务器跟你说拜拜了。