传输到远程:

1
tar czf - file| ssh server "tar zxf -"

压缩到远程:

1
tar czf - file| ssh server "cat > file.tar.gz"

解压到远程:

1
ssh server "tar zxf -" < file.tar.gz

解压到本地:

1
ssh server "cat file.tar.gz" | tar zxf -

另外可以使用-T file备份指定文件。

测试(仅供参考):
测试数据:y目录 大小:12G 文件数:37895

测试命令:
1、time scp -r y 192.168.35.224:/test #直接使用scp传输
2、time tar cf – y |ssh 192.168.35.224 “cd /test2;tar xf -” #传输到远程,不压缩
3、time tar zcf – y |ssh 192.168.35.224 “cd /test3;tar zxf -” #传输到远程,压缩

结果:

命令 1 2 3
耗时 38m4.291s 23m4.931s 33m35.911s

connlimit模块允许你限制每个客户端ip的并发连接数,即每个ip同时连接到一个服务器个数。
connlimit模块主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数。

阅读全文 »

limit模块用于限制匹配数据包的频率或速率

limit的工作方式就像一个单位大门口的保安,当有人要进入时,需要找他办理通行证。早上上班时,保安手里有一定数量的通行证,来一个人,就签发一个,当通行证用完后,再来人就进不去了,但他们不会等,而是到别的地方去(在iptables里,这相当于一个包不符合某条规则,就会由后面的规则来处理,如果都不符合,就由缺省的策略处理)。但有个规定,每隔一段时间保安就要签发一个新的通行证。这样,后面来的人如果恰巧赶上,也就可以进去了。如果没有人来,那通行证就保留下来,以备来的人用。如果一直没人来,可用的通行证的数量就增加了,但不是无限增大的,最多也就是刚开始时保安手里有的那个数量。也就是说,刚开始时,通行证的数量是有限的,但每隔一段时间就有新的通行证可用。limit match有两个参数就对应这种情况,–limit-burst指定刚开始时有多少通行证可用,–limit指定要隔多长时间才能签发一个新的通行证。要注意的是,我这里强调的是“签发一个新的通行证”,这是以iptables的角度考虑的。在你自己写规则时,就要从这个角度考虑。比如,你指定了–limit 3/minute –limit-burst 5 ,意思是开始时有5个通行证,用完之后每20秒增加一个(这就是从iptables的角度看的,要是以用户的角度看,说法就是每一分钟增加三个或者每分钟只能过三个)。你要是想每20分钟过一个,只能写成–limit 3/hour –limit-burst 5,也就是说你要把时间单位凑成整的。

例如设置以下规则:

1
2
iptables -A INPUT -p icmp -m limit --limit 6/m --limit-burst 5 -j ACCEPT
iptables -A INPUT -p icmp -j DROP

然后从另一部主机上ping这部主机,就会发生如下的现象:
首先可以看到前四个包的回应都很正常,然后从第五个包开始,我们每10秒可以收到一个正常的回应。这是因为我们设定了单位时间(在这里是每分钟)内允许通过的数据包的个数是每分钟6个,也即每10秒钟一个;其次我们又设定了事件触发阀值为5,所以我们的前四个包都是正常的,只是从第五个包开始,限制规则开始生效,故只能每10秒收到一个正常回应。
假设我们停止ping,30秒后又开始ping,这时的现象是:
前两个包是正常的,从第三个包开始丢包,这是因为在这里我的允许一个包通过的周期是10秒,如果在一个周期内系统没有收到符合条件的包,系统的触发值就会恢复1,所以假如我们30秒内没有符合条件的包通过,系统的触发值就会恢复到3,假如5个周期内都没有符合条件的包通过,系统都触发值就会完全恢复。

例:
防止SYN-Flood 碎片攻击

1
2
3
4
iptables -N syn-flood
iptables -A syn-flood -m limitlimit 100/s –limit-burst 150 -j RETURN
iptables -A syn-flood -j DROP
iptables -I INPUT -j syn-flood

recent模块可以看作iptables里面维护了一个地址列表,这个地址列表可以通过”–set”、”–update”、”–rcheck”、”–remove”四种方法来修改列表,每次使用时只能选用一种。还可附带”–name”参数来指 定列表的名字(默认为DEFAULT),“–rsource”、“–rdest”指示当前方法应用到数据包的源地址还是目的地址(默认是前者)。

阅读全文 »

首先把mysqld停止

1
service mysqld stop

启动mysql,但是要跳过权限表

1
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

进去mysql,并修改密码

1
2
3
4
5
mysql -u root
mysql>use mysql;
mysql>update user set password=password("newpass") where user="root";
mysql>flush privileges;
mysql>\q

重新启动mysql,正常进入

只能收发邮件,别的都关闭

1
2
3
4
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -j DROP
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p udp --dport 53 -j ACCEPT
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p tcp --dport 25 -j ACCEPT
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p tcp --dport 110 -j ACCEPT
阅读全文 »

图片、css、js等文件往往会占用掉一个网站大量的服务器带宽和页面载入时间,如果使用nginx做前端服务器可以设置类似的静态文件客户端的缓存时间。
例如:

1
2
3
4
location ~ \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ {
expires 15d;
access_log off;
}

将类似静态文件的客户端缓存时间设置为15天,这样客户在30天内重新访问这些文件时只需要在本地缓存中读取,而不用重新从服务器获取,大大提高了网站访问速度。
当然,对于这些静态文件的访问记录计入日志,在一般情况下也是没有意义的,将accss_log设为off,也能在一定程度上降低服务器压力。