月度归档:2013 年六月

centos编译安装配置bind

1. 下载bind源码,

wget http://www.bind.com/pub/bind9/9.9.3/bind-9.9.3.tar.gz

2. 安装openssl

yum install -y openssl

3. 安装bind

tar zxvf bind-9.9.3.tar.gz

cd bind-9.9.3

./configure –prefix=/usr/local/named –enable-threads –disable-ipv6 –disable-openssl-version-check

编译时提示找不到openssl,改为

./configure –prefix=/usr/local/named –enable-threads –disable-ipv6 –without-openssl

最后提示BIND is being built without OpenSSL. This means it will not have DNSSEC support.

make

make install

4. 配置bind

生成rndc配置文件

/usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf

//编写named.conf配置文件

tail -n10 /usr/local/named/etc/rndc.conf | head -n9 | sed -e s/#\ //g > /usr/local/named/etc/named.conf

vi /usr/local/named/etc/named.conf

key "rndc-key" {
        algorithm hmac-md5;
        secret "18ZFNXt9bsXEXT1kaSKZ/g==";
};
  
controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};
  
options {
        directory "/data/named";
        allow-query{ any; };
        pid-file "named.pid";
        recursion yes;
};
  
logging {
        channel query_log {
                file "query.log" versions 5 size 20m;
                severity info;
                print-time yes;
                print-category yes;
        };
        category queries {
                query_log;
        };
};
  
zone "." IN {
        type hint;
        file "named.ca";
};
  
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none;};
};
  
zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "localhost.rev";
         allow-update { none;};
};
  
zone "nengzuo.com" IN {
         type master;
         file "nengzuo.com.zone";
         allow-update { none; };
};
  
zone "196.255.116.in-addr.arpa" in {
        type master;
        file "nengzuo.com.rev";
        allow-update { none; };
};

//创建数据文件目录

mkdir /data/named -p

//创建根数据文件

dig > /data/named/named.ca

//创建本地正向解析文件

vi /data/named/localhost.zone

$TTL    86400

$ORIGIN localhost.

@               1D  IN  SOA     @       root    (

                               42      

                               3H      

                               15M    

                               1W      

                               1D)

               1D  IN  NS      @

               1D  IN  A       127.0.0.1

//创建本地反向解析文件

vi /data/named/localhost.rev

$TTL    86400

@       IN  SOA         localhost. root.localhost. (

                               2011040100

                               3H

                               15M

                               1W

                               1D)

       IN  NS          localhost.

1       IN  PTR         localhost

                             

//创建nengzuo.com域正向解析文件

vi /data/named/nengzuo.com.zone

$ORIGIN .

$TTL 600        ;       20      minutes

nengzuo.com      IN      SOA     ns1.nengzuo.com. root.nengzuo.com. (

                                     2011040100      ;serial

                                     20M             ;refresh(20 minutes)

                                     3M              ;retry(3 minutes)

                                     2W              ;expire(2 weeks)

                                     2D              ;minimum(2 hours)

                                     )

                       NS              ns1.nengzuo.com.

                       MX      10      mail.nengzuo.com.

$ORIGIN nengzuo.com.

                       A               116.255.196.184

ns1                     A               116.255.196.184

mail                    A               116.255.196.184

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

www             IN      A       116.255.196.184

//创建youyichunqiu.com域反向解析文件

vi /data/named/nengzuo.com.rev

$TTL    86400

@       IN      SOA     ns1.nengzuo.com. root.nengzuo.com.  (

                                     20111040100; Serial

                                     8H         ; Refresh

                                     4H         ; Retry

                                     41D        ; Expire

                                     1D     ; Minimum

                                     )    

       IN      NS      ns1.nengzuo.com.

       IN      NS      ns2.nengzuo.com.

125       IN      PTR     ns1.nengzuo.com.

125       IN      PTR     ns2.nengzuo.com.

//检查主配置文件语法

/usr/local/named/sbin/named-checkconf /usr/local/named/etc/named.conf

//检查区域数据文件语法

/usr/local/named/sbin/named-checkzone youyichunqiu.com /data/named/youyichunqiu.com.zone

//启动bind服务

/usr/local/named/sbin/rndc reload

//指定配置文件启动bind服务

/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf

//检查bind运行状态

ps -aux | grep named

//检查bind服务网络监听

netstat -an | grep 53

//测试域名解析

//正向

>nslookup

>server bind服务器ip

>www.nengzuo.com

//反向

>116.255.196.184

win server2008使用hyper-v无线安装配置

首先,在hyper-v的虚拟网络管理里新建一个外部虚拟网络“Microsoft Loopback Adapter”,并且将其和无线连接进行桥接。

其次,安装kernel-devel,kernel-headers,gcc

安装完Linux Integration Services v2.1,会出现一个seth0

配置为static

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-seth0
DEVICE=seth0
BOOTPROTO=static
IPADDR=192.168.3.170
BROADCAST=192.168.3.255
NETMASK=255.255.255.0
#NETWORK=192.168.3.1
GATEWAY=192.168.3.1
ONBOOT=yes

另外最好在路由器的配置里把ip和mac地址绑定,下次得启路由不用换ip。

支持高并发的IIS Web服务器常用设置[转]

适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0

适用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012

1、应用程序池(Application Pool)的设置:

  • General->Queue Length设置为65535(队列长度所支持的最大值)

  • Process Model->Idle Time-out设置为0(不让应用程序池因为没有请求而回收)

  • Recycling->Regular Time Interval设置为0(禁用应用程序池定期自动回收)

2、.Net Framework相关设置

a) 在machine.config中将

<processModel autoConfig="true" />

改为:

<processModel enable="true" requestQueueLimit="100000"/>

(保存后该设置立即生效)

b) 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id="Wml" parentID="Default" >,注释<capabilities>部分,然后运行在命令行中运行aspnet_regbrowsers -i。

<defaultBrowser id="Wml" parentID="Default" >
<identification>
<header name="Accept" match="text/vnd\.wap\.wml|text/hdml" />
<header name="Accept" nonMatch="application/xhtml\+xml; profile|application/vnd\.wap\.xhtml\+xml" />
</identification>
<!--
<capabilities>
<capability name="preferredRenderingMime"              value="text/vnd.wap.wml" />
<capability name="preferredRenderingType"              value="wml11" />
</capabilities>
-->
</defaultBrowser>

以解决text/vnd.wap.wml问题。

3、IIS的applicationHost.config设置

设置命令:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

设置结果:

<serverRuntime appConcurrentRequestLimit="100000" />

(保存后该设置立即生效)

4、http.sys的设置

注册表设置命令1(将最大连接数设置为10万):

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

注册表设置命令2(解决Bad Request – Request Too Long问题):

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768

(需要在命令行运行 net stop http  & net start http & iisreset 使设置生效)

5、针对负载均衡场景的设置

在Url Rewrite Module中增加如下的规则:

<rewrite>
<allowedServerVariables>
<add name="REMOTE_ADDR" />
</allowedServerVariables>
<globalRules>
<rule name="HTTP_X_Forwarded_For-to-REMOTE_ADDR">
<match url=".*" />
<serverVariables>
<set name="REMOTE_ADDR" value="{HTTP_X_Forwarded_For}" />
</serverVariables>
<action type="None" />
</rule>
</globalRules>
</rewrite>

修改centos默认内核选项

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00
#rhgb quiet acpi=off noapic
        initrd /initrd-2.6.18-194.el5.img
title CentOS (2.6.18-308.13.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-308.13.1.el5 ro root=/dev/VolGroup00/LogVol00
#rhgb quiet acpi=off noapic
        initrd /initrd-2.6.18-308.13.1.el5.img

default的值刚开始为0,即老的内核,下面308.13.1为升级后的新的内核。机房说默认选第一个是有问题的,改为第二项就好了。

lsof命令【转】

Lsof 是遵从Unix 哲学的典范,它只做一件事情,并且做的相当完美——它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件,目录,NFS文件,块文件,字符文件,共享库,常规管道,明明管道,符号链接,Socket流,网络Socket,UNIX域Socket,以及其它更多。因为Unix系统中几乎所有东西都是文件,你可以想象lsof该有多有用。

如何使用lsof?

这篇文章中我会尽力列举我能想到的所有lsof的用法,让我们先从最简单的开始(或许你已经知道了),然后逐渐增加复杂度:

  • 列出所有打开的文件

# lsof

不带任何参数运行lsof会列出所有进程打开的所有文件。

  • 找出谁在使用某个文件

# lsof /path/to/file

只需要执行文件的路径,lsof就会列出所有使用这个文件的进程,你也可以列出多个文件,lsof会列出所有使用这些文件的进程。

你也可以一次制定多个文件:

# lsof /path/to/file1 /path/to/file2

  • 递归查找某个目录中所有打开的文件

# lsof +D /usr/lib

加上+D参数,lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢:

# lsof | grep ‘/usr/lib’

之所以慢是因为+D首先查找所有的文件,然后一次性输出。

  • 列出某个用户打开的所有文件

# lsof -u pkrumins

-u选项限定只列出所有被用户pkrumins打开的文件,你可以通过逗号指定多个用户:

# lsof -u rms,root

这条命令会列出所有rms和root用户打开的文件。

你也可以像下面这样使用多个-u做同样的事情:

# lsof -u rms -u root

  • 查找某个程序打开的所有文件

# lsof -c apache

-c选项限定只列出以apache开头的进程打开的文件:

所以你可以不用像下面这样写:

# lsof | grep foo

而使用下面这个更简短的版本:

# lsof -c foo

事实上,你可以只制定进程名称的开头:

# lsof -c apa

这会列出所有以apa开头的进程打开的文件

你同样可以制定多个-c参数:

# lsof -c apache -c python

这会列出所有由apache和python打开的文件

  • 列出所有由某个用户或某个进程打开的文件

# lsof -u pkrumins -c apache

你也可以组合使用多个选项,这些选项默认进行或关联,也就是说上面的命令会输入由pkrumins用户或是apache进程打开的文件。

  • 列出所有由一个用户与某个进程打开的文件

# lsof -a -u pkrumins -c bash

-a参数可以将多个选项的组合条件由或变为与,上面的命令会显示所有由pkrumins用户以及bash进程打开的文件。

  • 列出除root用户外的所有用户打开的文件

# lsof -u ^root

注意root前面的^符号,它执行取反操作,因此lsof会列出所有root用户之外的用户打开的文件。

  • 列出所有由某个PID对应的进程打开的文件

# lsof -p 1

-p选项让你可以使用进程id来过滤输出。

记住你也可以用都好来分离多个pid。

# lsof -p 450,980,333

  • 列出所有进程打开的文件除了某个pid的

# lsof -p ^1

同前面的用户一样,你也可以对-p选项使用^来进行取反。

  • 列出所有网络连接

# lsof -i

lsof的-i选项可以列出所有打开了网络套接字(TCP和UDP)的进程。

  • 列出所有TCP网络连接

# lsof -i tcp

也可以为-i选项加上参数,比如tcp,tcp选项会强制lsof只列出打开TCP sockets的进程。

  • 列出所有UDP网络连接

# lsof -i udp

同样udp让lsof只列出使用UDP socket的进程。

  • 找到使用某个端口的进程

# lsof -i :25

:25和-i选项组合可以让lsof列出占用TCP或UDP的25端口的进程。

你也可以使用/etc/services中制定的端口名称来代替端口号,比如:

# lsof -i :smtp

找到使用某个udp端口号的进程

# lsof -i udp:53

同样的,也可以找到使用某个tcp端口的进程:

# lsof -i tcp:80

  • 找到某个用户的所有网络连接

# lsof -a -u hacker -i

使用-a将-u和-i选项组合可以让lsof列出某个用户的所有网络行为。

  • 列出所有NFS(网络文件系统)文件

# lsof -N

这个参数很好记,-N就对应NFS。

  • 列出所有UNIX域Socket文件

# lsof -U

这个选项也很好记,-U就对应UNIX。

  • 列出所有对应某个组id的进程

# lsof -g 1234

进程组用来来逻辑上对进程进行分组,这个例子查找所有PGID为1234的进程打开的文件。

  • 列出所有与某个描述符关联的文件

# lsof -d 2

这个命令会列出所有以描述符2打开的文件。

你也可以为描述符指定一个范围:

# lsof -d 0-2

这会列出所有描述符为0,1,2的文件。

-d选项还支持其它很多特殊值,下面的命令列出所有内存映射文件:

# lsof -d mem

txt则列出所有加载在内存中并正在执行的进程:

# lsof -d txt

  • 输出使用某些资源的进程pid

# lsof -t -i

-t选项输出进程的PID,你可以将它和-i选项组合输出使用某个端口的进程的PID,下面的命令将会杀掉所有使用网络的进程:

# kill -9 `lsof -t -i`

  • 循环列出文件

# lsof -r 1

-r选项让lsof可以循环列出文件直到被中断,参数1的意思是每秒钟重复打印一次,这个选项最好同某个范围比较小的查询组合使用,比如用来监测网络活动:

# lsof -r 1 -u john -i -a

如何安装lsof?

许多Unix系统都内置了lsof,如果你的系统没有安装,你可以从这里直接下载源代码

BSD系统有一个类似的工具可以做同样的事情,叫做fstat。

你可以通过man lsof来了解关于lsof的完整文档,或者通过lsof -h查看。

开始体验lsof的乐趣吧!

linux一个网卡绑定多个ip

刚开始按网上说的使用

ifconfig eth1:0 123.123.145.163 netmask 255.255.255.0

ifconfig down

ifconfig up

ifconfig -a可以看到,但无效,而且使用service network restart后就丢了,而且文件/etc/sysconfig/network-scripts/ifcfg-eth1:0也不存在。

然后手动修改:

/etc/sysconfig/network-scripts/ifcfg-eth1:0

加入

DEVICE="eth1:0"

IPADDR="123.123.145.163"

NETMASK="255.255.255.0"

ONBOOT="yes"

centos减轻防止ddos攻击的轻量级小程序[转]

转自:http://www.ctohome.com/linux-vps-pack/soft/ddos/ddos.sh

centos减轻防止DDoS攻击的轻量级小程序http://baike.xs220.com/LinuxVPS/338.html

DDoS deflate是一款Linux/centos减轻/防止ddos攻击的一个小程序,相当于软件防火墙。注意,此程序仅仅能抵御较低流量的攻击,大流量攻击连用了上百台高档服务器做了负载均衡的新浪都扛不住,何况一个小小的普通服务器或vps。对此程序不要期望过高。这里仅仅介绍一下,对于一些简单的软件攻击可能还有点作用。

制作的DDoS deflate一键安装脚本:

wget http://www.ctohome.com/linux-vps-pack/soft/ddos/ddos.sh; sh ddos.sh;

脚本做了什么?

  •    默认将iptables防火墙作为拦截工具,并将并发数改成了60/秒就触发屏蔽IP

  •    将本机IP都加入了IP白名单,然后强行不允许自动更新白名单列表。如果你需要修改IP白名单列表,请先执行 chattr -i /usr/local/ddos/ignore.ip.list   然后再vi进行修改

  •    卸载:wget http://www.ctohome.com/linux-vps-pack/soft/ddos/uninstall.ddos;sh uninstall.ddos;

安装后,可以手工运行脚本

/usr/local/ddos/ddos.sh -k 30 强行屏蔽连接数大于30的IP 更多使用说明,请直接 more /usr/local/ddos/ddos.sh 查看

DDoS deflate介绍

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多少个连接数。

以下是我自己用VPS测试的结果:

li88-99:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

1 114.226.9.132

1 174.129.237.157

1 58.60.118.142 1 Address 1 servers)

2 118.26.131.78

3 123.125.1.202

3 220.248.43.119

4 117.36.231.253

4 119.162.46.124

6 219.140.232.128

8 220.181.61.31 VPS侦探 http://www.vpser.net/

2311 67.215.242.196 (这个看起来像攻击)

每个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秒,可根据情况调整

用户可根据给默认配置文件加上的注释提示内容,修改配置文件。

卸载

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos

chmod 0700 uninstall.ddos

./uninstall.ddos

白名单设置:

有时候默认的白名单经常有失误,为了避免这个情况,我们可以手工设置白名单的ip,然后强制不允许修改

vi /usr/local/ddos/ignore.ip.list

手工设置白名单IP

chattr +i /usr/local/ddos/ignore.ip.list

强制不允许修改

chattr -i /usr/local/ddos/ignore.ip.list

解除不允许修改

手工用iptables屏蔽IP:

单个IP的命令是

iptables -I INPUT -s 124.115.0.199 -j DROP

恢复单个IP:

iptables -D INPUT -s 124.115.0.199 -j DROP

封IP段的命令是

iptables -I INPUT -s 124.115.0.0/16 -j DROP

iptables -I INPUT -s 124.115.3.0/16 -j DROP

iptables -I INPUT -s 124.115.4.0/16 -j DROP

封整个段的命令是

iptables -I INPUT -s 124.115.0.0/8 -j DROP

封几个段的命令是

iptables -I INPUT -s 61.37.80.0/24 -j DROP

iptables -I INPUT -s 61.37.81.0/24 -j DROP