【转】linux下防DDOS工具

DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP。.

DDoS deflate官方网站:http://deflate.medialayer.com/

如何确认是否受到DDOS攻击?

执行:

netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

执行后,将会显示服务器上所有的每个IP多少个连接数。每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了

1、安装DDoS deflate

wget http://www.inetbase.com/scripts/ddos/install.sh //下载DDoS deflate

chmod 0700 install.sh //添加权限

./install.sh //执行

2、配置DDoS deflate

下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:

##### Paths of the script and other files

PROGDIR=”/usr/local/ddos”

PROG=”/usr/local/ddos/ddos.sh”

IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list” //IP地址白名单

CRON=”/etc/cron.d/ddos.cron” //定时执行程序

APF=”/etc/apf/apf”

IPT=”/sbin/iptables”

##### frequency in minutes for running the script

##### Caution: Every time this setting is changed, run the script with –cron

##### option so that the new frequency takes effect

FREQ=1 //检查时间间隔,默认1分钟

##### How many connections define a bad IP? Indicate that below.

NO_OF_CONNECTIONS=150 //最大连接数,超过这个数IP就会被屏蔽,一般默认即可

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)

##### APF_BAN=0 (Uses iptables for banning ips instead of APF)

APF_BAN=1 //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。

##### KILL=0 (Bad IPs are’nt banned, good for interactive execution of script)

##### KILL=1 (Recommended setting)

KILL=1 //是否屏蔽IP,默认即可

##### An email is sent to the following address when an IP is banned.

##### Blank would suppress sending of mails

EMAIL_TO=”root” //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可

##### Number of seconds the banned ip should remain in blacklist.

BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整

如果/usr/local/ddos/ddos.sh 统计不正确,可能是启用ipv6的缘故

# vi /usr/local/ddos/ddos.sh

117行的内容是这样的netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

如果服务器启用了IPv6的话,可能会导致统计的结果不准确,修改这一行可以修正这个问题。

需要修改成这样

netstat -ntu|awk ‘{print $5}’|cut -d : -f1|sed -n ‘/[0-9]/p’|sort|uniq -c|sort -nr& > $BAD_IP_LIST

或者

netstat -ntu | grep ‘:’ | awk ‘{print $5}’ | sed ‘s/::ffff://’ | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

转自:http://netsecurity.51cto.com/art/201406/441851.htm

【转】通过squid做CND加速

适用: squid-2.7.stable9和squirm-1.0betaB

用来:将优酷,爱奇艺,乐视tv,搜狐视频,凤凰视频,56等等网站的CDN URL重写成内部URL,减少存储占用,增加命中率。

squirm安装:

wget http://squirm.foote.com.au/squirm−1.0betaB.tar.gz
mv squirm−1.0betaB.tar.gz /usr/local/src
cd /usr/local/src/
tar xvf squirm−1.0betaB.tar.gz
cd squirm−1.0betaB
cd regex
./configure
make clean
make
cp −p regex.o regex.h ../
cd ../
make
make install 

squirm.local文件内容:

[root<a href="http://home.51cto.com/index.php?s=/space/159108" target="_blank">@cache</a> ~]# more /usr/local/squirm/etc/squirm.local
# squirm.local.dist
#
# list your client's addresses here.
#
# i.e. the addresses for machines that do 'GET requests',
# but don't include any Squid neighbours

127.0.0
10.1.55
10.1.56

squirm.patterns文件内容:

[root@webcache ~]# more /usr/local/squirm/etc/squirm.patterns
# squirm.patterns.dist
#
# The ordering of lines is this file is critical
# Please see http://www.senet.com.au/squirm/ for examples
## Lines have the form:
#       regex|regexi pattern replacement [[^]accelerator_string[$]]
# or
#       abort filename_extension
#
#
# Examples of valid lines:
#
# regex  ^.*/n32e301\.exe$ http://www.mydomain/path_to/n32e301.exe
# regexi ^.*/n32e301\.exe$ http://www.mydomain/path_to/n32e301.exe
# regex  ^.*/n32e301\.exe$ http://www.mydomain/path_to/n32e301.exe n32e301.exe$
# abort .gif
# abort .html
#regex ^http:\/\/f\.youku\.com\/player\/getFlvPath http://video−srv\.youku\.com.SQUIDINTERNAL\/
#regex http:\/\/[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\/youku\/.*?/(.*?)\.flv$ http://v.youku.com.squid/$1.flv
#regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/youku/.*/(.*−.*−.*−.*−.*) http://www.youku.com/$1

# tudou video cdn has change to youku,but keep it!
regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/f4v/.*id=tudou.itemid\=([0−9]*).* http://www.tudou.com.SQUIDTUDOUA/\1
regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}[^&]*/flv/.*id=tudou.itemid\=([0−9]*).* http://www.tudou.com.SQUIDTUDOUB/\1

#site:sohu tv status:OK date:20141024
regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/sohu/[0−9]/[0−9]*/[0−9]*/(.*)\.mp4\?key=.* http://tv.sohu.com.SQUIDSOHUTV/\1.mp4

#site:iqiyi status:OK date:201403120956
regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/videos/v/.*/(.*\.f4v)?  http://www.iqiyi.com.SQUIDIQIYI/\1

#site:youku part−tudou status:OK date:201403120956
regex http://[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}/youku/.*/(.*−.*−.*−.*−[^?]*)(.*) http://www.youku.com.SQUIDYOUKU/\1

#site:letv status:OK date:201403122047
regex http://[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}/[0−9]*/[0−9]*/[0−9]*/letv−uts/[0−9]*/(.*_mp4)/(.*)\.ts\? http://www.letv.com.SQUIDLETVA/\1/\2.mp4
regex http://[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}/[0−9]*/[0−9]*/[0−9]*/letv−uts/(.*)\.letv\?.*\&video_type=(…)\&.*\&rstart=(.*)\&rend=(.*)  http://www.letv.com.SQUIDLETVB/\1−\3−\4.\2

#site:v.qq.com status:OK date:201403122102
regex http://[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}/[0−9]*/.*\.qq\.com/.*/[0−9]*/[0−9]*/(.*)\.mp4\? http://v.qq.com.SQUIDQQ/\1.mp4

#site:v.ifeng.com status:OK date:201403130838
regex http://[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}/data[0−9]*/documentary/[0−9][0−9][0−9][0−9]/[0−9][0−9]/[0−9][0−9]/(.*)\.mp4 http://v.ifeng.com.SQ
UIDIFENG/\1.mp4

#site:56 status:OK date:201403130846
regex http://[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}/.*\.56\.com/flvdownload/[0−9]*/[0−9]*/(.*)\.flv\?.* http://www.56.com.SQUID56/\1.flv

squid.conf相关配置:

#rewrite store url youku tudou souhu iqiyi

acl store_url url_regex −i ^http:\/\/[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\.[0−9]{1,3}\/.*(\.flv|\.m4v\?|\.f4v\?|\.mp4\?|\.ts\?|\.letv\?)
acl store_url_no_domain urlpath_regex −i ^\/(.*\/.*\.flv$)

storeurl_access allow store_url
storeurl_access allow store_url_no_domain
storeurl_access deny all

storeurl_rewrite_program /usr/local/squirm/bin/squirm
storeurl_rewrite_children 5

转自:http://bbs.51cto.com/thread-1098719-1.html

【原】如何构建图度云办公平台

图度云办公平台:图度工作管理系统首创将论坛、邮箱、即时通讯三大功能融合为一体。为企业、项目组以及任何需要协同工作的大中小型工作团体等提供易操作、可视化、安全的工作管理服务。图度工作管理系统的任务管理模式便于管理者多维度地对任务进行监控跟踪、偏差分析。包括图度工作管理平台和图度talk。——来源“百度百科”

在网上搜了好久,没有搜到一个完整的安装文档,官方提供的文档,也只是大体步骤(当然除了centos5.X版本)。自己构建的时候,出现各种问题,在此写下来,给大家提个醒。

架设环境:RHEL5.4,LNMP

下载需要的包:

memcache-3.0.8.tgz

libpng-1.2.8-config.tar.gz

eaccelerator-eaccelerator-42067ac.tar.gz

freetype-2.1.10.tar.gz

gd-2.0.33.tar.gz

httpsqs-1.7.tar.gz

jpegsrc.v6b.tar

libevent-2.0.12-stable.tar.gz

nginx-1.5.8.tar.gz

php-5.3.20.tar.bz2

tokyocabinet-1.4.47.tar.gz

zlib-1.2.8.tar.gz

tudu-web-master.zip

以上均是源码安装包,下载方式就不一一列出了,百度我在百度盘上传了,地址如下:http://pan.baidu.com/s/1kTE2MlL(密码:dcch)

当然,我们还缺少#yum install mysql mysql-server mysql-devel这步,没有mysql怎么玩 – –

好,我们开始:—————————————分割线—————————————

第一、#yum remove php  (建议卸载php,否则后面源码安装的时候,容易犯一个错误)

第二、创建一个mysql用户以及数据库,将用户赋予权限。

#mysql -u root -p

mysql>insert into mysql.user(Host,User,Password) values (‘localhost’,’tudu’,password(‘tudu’));

    mysql>flush privileges;
    mysql>create database tudu_db;
    mysql>grant all privileges on tudu_db.* to tudu@localhost identified by ‘tudu’;
    mysql>flush privileges;

第三、进入tudu-web-master/install/sql目录,依次执行:

#mysql -u root -p tudu_db < 1.sql

#mysql -u root -p tudu_db < 2.sql

………………

#mysql -u root -p tudu_db < 6.sql

注意:第6个sql文件,很大,时间很长。

第四、编译安装jpeg-6b,编译如下:

    #./configure –-prefix=/usr/local/jpeg6 –enable-shared –enable-static
    #make && make install
注意:这一步可能出现很多问题,那么请执行以下操作后,重新编译安装。
    #mkdir /usr/local/jpeg6
    #mkdir /usr/local/jpeg6/lib
    #mkdir /usr/local/jpeg6/include
    #make install-lib
    #make install
    #mkdir /usr/local/jpeg6/bin
    #mkdir /usr/local/jpeg6/man
    #mkdir /usr/local/jpeg6/man/man1
第五、编译安装freetype:
    #./configure –prefix=/usr/local/freetype
    #make && make install
第六、编译安装zlib:
    #./configure
    #make && make install
第七、编译安装libpng:
    #./configure –prefix=/usr/local/libpng
    #make && make install
第八、编译安装fontconfig以及GD库:
    进入fontconfig目录:#./configure –with-freetype-config=/usr/local/freetype/bin/freetype-config –prefix=/usr/local/fontconfig
    进入GD目录:#./configure –prefix=/usr/local/gd –with-jpeg=/usr/local/jpeg6 –with-png-dir=/usr/local/libpng –with-zlib –with-freetype=/usr/local/modules/freetype –with-fontconfig=/usr/local/fontconfig
    #make && make install
第九、编译安装PHP:
    #./configure –prefix=/usr/local/php –enable-xml –with-bz2 –enable-zip –enable-fpm –with-openssl –with-mysql –with-gd –with-jpeg-dir=/usr/local/jpeg6 –enable-gd-native-ttf –enable-pdo –with-pdo-mysql –with-gd=/usr/local/gd –with-freetype-dir=/usr/local/freetype/ –with-zlib –with-curl –enable-force-cgi-redirect –enable-xml –enable-safe-mode –with-config-file-path=/usr/local/php/etc –enable-mbstring
make && make install
在此列出几个我编译出现的几个问题:
     ①configure: error: mysql configure failed.通过查看config.log日志,有以下几行:
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient

/usr/bin/ld: cannot find -lmysqlclient

collect2: ld returned 1 exit status

configure: failed program was:

#line 59854 “configure”

#include “confdefs.h”

    解决方式:#export LDFLAGS=-L/usr/lib64/mysql 或者修改Makefile文件,-L/usr/lib/mysql改为-L/usr/lib64/mysql即可。
    ②Cannot find MySQL header files.
    解决方式:路径出了问题,因为刚开始YUM安装mysql-devel了,所以执行#find / -name mysql.h查找mysql.h的位置,然后在编译PHP的时候,参数–with-mysql=mysql.h路径
    ③In file included from /kk/php-5.4.0/ext/gd/gd.c:103:
    ……省略

查看后,应该是没有data成员。

解决方式:vim /usr/local/gd/include/gd.io.h

在结构体gdIOCtx中添加“void *data;”即可

第十、编译安装libevent:

#./configure –prefix=/usr/local/libevent-2.0.12-stable/

#make && make install

第十一、编译安装memcache:

切换到memcache解压目录,未发现有configure文件,在当前目录下执行/usr/local/php/bin/phpize生成configure文件。

#./configure –with-php-config=/usr/local/php/bin/php-config –enable-memcache

#make && make install

安装完成后,记住Installing shared extensions:后面的路径。

第十二、编译安装eaccelerator:

#./configure –enable-eaccelerator –with-php-config=/usr/local/php/bin/php-config

#make && make install

安装完成后,再记住Installing shared extensions:后面的路径。

第十三、通过参考tudu-web-master/install/conf/php.ini文件,修改/usr/local/php/etc/php.ini文件(也可以完全复制过去),修改/usr/local/php/etc/php.ini下的extension_dir=第十步记下的路径;zend_extension=第十一步记下的路径。

第十四、进入/usr/local/php/bin/目录,执行./php -m查看模块,查看memcache以及mbstring模块是否被支持。

    注意:若直接执行php -m,由于未修改环境变量,将会显示之前YUM安装的php信息,二者不同。

第十五、修改tudu-web-master/install/conf/php-fpm.conf文件,主要修改[www]组内信息,如:web服务执行的用户以及组;完成后,拷贝到/usr/local/php/etc/目录下。

第十六、编译安装nginx文件:

#./configure –prefix=/usr/local/nginx

#make && nake install

第十七、进入tudu-web-master/install/conf目录,通过nginx.conf以及nginx-tudu.conf配置文件,修改/usr/local/nginx/conf/nginx.conf,根据需求更改里面的内容,为了方便向下叙述,user www  www,name_server要设置。完成后,可以执行/usr/local/nginx/sbin/nginx进行测试。(若出现问题,则请把tudu-web-master下的所有内容拷贝到在nginx.conf文件中指定的工作目录即可。)

第十八、进入/usr/local/php/,执行mkdir logs;然后进入sbin目录,执行./php-fpm。

第十九、chown www:www  NGINX工作目录,输入域名进行访问测试。下一步,进行环境检查。

第二十、编译安装httpsqs服务:

因为httpsqs服务依赖于libevent和tokyocabinet,而libevent在第十步的时候安装了,所以在此只安装tokyocabinet,编译方式如下:

#./configure –prefix=/usr/local/tokyocabinet-1.4.47/

注意:在32位Linux操作系统上编译tokyocabinet,使用#./configure –enable-off64代替#./configure,可以使数据库文件突破2GB的限制。如:#./configure –enable-off64 –prefix=/usr/local/tokyocabinet-1.4.47/

make && make install

接下来配置httpsqs服务,首先#cd httpsqs-1.7/

make && make install

此时,#httpsqs -h 会返回帮助信息。解释如下:

-l 监听的IP地址,默认值为 0.0.0.0

-p 监听的TCP端口(默认值:1218)

-x 数据库目录,目录不存在会自动创建(例如:/opt/httpsqs/data)

-t HTTP请求的超时时间(默认值:3)

-s 同步内存缓冲区内容到磁盘的间隔秒数(默认值:5)

-c 内存中缓存的最大非叶子节点数(默认值:1024)

-m 数据库内存缓存大小,单位:MB(默认值:100)

-i 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)

-a 访问HTTPSQS的验证密码(例如:mypass123)

-d 以守护进程运行

-h 显示这个帮助

此时,我们需要执行:

#httpsqs -l 192.168.196.80 -p 1218 -x /var/httpsqs_data -m 300 -i /var/run/httpsqs.pid -d

第二十一、编译安装memcached服务:

#./configure –prefix=/usr/local/memcached

#make && make install

安装完成后,建立一个memcached的缓存目录,如:#mkdir /var/run/memcached

执行#/usr/local/memcached/bin/memcached -p 12000 -l 192.168.196.80 -d -u root -P /var/run/memcached/memcached.pid -m 512 -c 1024

几个参数的解释如下:

-p memcached监听的TCP端口

-l 监听的ip地址,192.168.196.80是我服务器的IP地址,如果你需要多个服务器都能够读取这台memcached的缓存数据,那么就必须设定这个ip

-d 以daemon方式运行,将程序放入后台,守护程序

-u memcached的运行用户,我设定的是root

-P memcached的pid文件路径

-m memcached可以使用的最大内存数量

-c memcached同时可以接受的最大的连接数

如果你希望以socket方式来访问memcached,那么在启动的时候就必须去掉 -l和-p参数,并加上-s参数:

-s memcached的socket文件路径

第二十二、添加第二十步和第二十一步执行的命令于/etc/rc.local下,否则下次重启计算机后,memcached以及httpsqs服务未启动。

第二十三、环境检查通过后,填写httpsqs以及memcached的端口和IP地址以及MySQL数据库信息,开始使用图度。

———————————————基本的图度架设已结束,接下来,汇总了一些memcached、httpsqs以及eaccelerator等介绍————————————–

一、关于httpsqs:

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

  • 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
  • 非常快速,入队列、出队列速度超过10000次/秒。
  • 高并发,支持上万的并发连接,C10K不成问题。
  • 支持多队列。
  • 单个队列支持的最大队列数量高达10亿条。
  • 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
  • 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
  • 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
  • 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
  • 查看队列内容时,支持多字符集编码。
  • 源代码不超过800行,适合二次开发。

具体信息,推荐在此查看:http://blog.s135.com/httpsqs/7/1/

二、关于memcache:

memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等等。简单来说,就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcached是以守护程序方式运行于一个或者多个服务器中,随时会接收客户端的连接和操作。

三、关于eaccelerator:

eaccelerator是一个自由开源的php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得php脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使php程序代码执行效率提高1-10倍。

四、关于tokyocabinet:

Tokyo Cabinet是一个DBM的实现。这里的数据库由一些列key-value对的记录构成。key和value都可以是任意长度的字节序。