存档

‘Linux 技术’ 分类的存档

cc 攻击及其解决方案

2009年12月2日 无风的飘逸 没有评论

        首先攻击者拥有一个流量巨大的网站,这个网站的流量,很可能是他花钱买回来的,当然也可能是他控制的肉鸡,在控制的肉鸡上面访问他的网站。黑客的网站首页非常简单,但是在他的源代码中,却隐藏了达到上百个<iframe>标签。对!聪明的你,应该想得出他的<iframe>标签里面放的是什么了吧?没错!他的<iframe>里面,放的就是他要攻击的网站的地址。

        举一个例子来说明一下攻击者的威力,假设黑客的网站是aaa.com,你的网站是BBB.com。如果有人在163的首页代码中,有这么一段:<iframe src="http://aaa.com" border="0" width="0" height="0"></iframe>,那么在所有人访问163的主页时,也会不知不觉的访问http://aaa.com。然后http://aaa.com的首页中可能有100个如下的代码:<iframe src=http://BBB.com border="0" width="0" height="0"></iframe>,当然他还可能放上bbb.com这个网站十个甚至更多不同的地址。那就表明:凡是有一个人访问了163,就可能会访问BBB.com十次。以每秒300个请求来说,一天就是25920000个请求,再加上页面上的图片和其它文件等,估计就是上亿个请求了。1天上亿个请求,普通的网站受得了吗?有很多被攻击的网站用的是虚拟主机,每秒不到100个连接可能就无法提供服务了。即使是那种单独几台服务器的网站,也根本就无法承受!即使WEB Server可以承受,那带宽呢?即使带宽可以承受,那么Db Server呢?

        朋友的网站就受到此种攻击,他试着将网站转移到他朋友的服务器上面,当然最后的结果还是照样拖累他朋友的服务器瘫痪。

        这种就是是典型的CC攻击CC攻击比DDOS攻击更可怕的就是,CC攻击一般是硬防很难防止住的。为什么呢?一、因为CC攻击来的IP都是真实的,分散的;二、CC攻击的数据包都是正常的数据包;三、CC攻击的请求,全都是有效的请求,无法拒绝的请求。

        其实只要仔细研究了一下这种攻击的模式,发现这种攻击,理论上是可以防止的,即只要通过有效的手段,完全可以将危害降低到最轻。因为这种攻击有一个致命的弱点。它致命的弱点在哪里呢?当然就是在<iframe>上面。通过<iframe>进行CC攻击,攻击者的想法和创意,确实很让人惊叹,但这正好造成了他的完美失败。熟悉网页程序的朋友应该都知道,用<iframe>嵌入的网页,自然都会有HTTP_REFERER值,而有了这个值,从这个值上面屏蔽或是转发掉来源的网站即可。也就是说,你可以访问我,但是我不将真实的页面返回给你,我可以把你随意打发掉,或是将你随意转到另外一个网站上去(如:公安部?哈哈,我就见过有人类似这样做的),这样我就可以大量的节省我的带宽、我的DB Server资源、我的Web Server资源。你最多就是占用了我大量的TCP连接罢了。
        下面贴一段Web server的配置代码,用于解决此类攻击:

        valid_referers none blocked server_names google.com google.cn *.google.com *.google.cn baidu.com *.baidu.com *.你自己的域名(在这里还可以加入其他的,比如说SOSO,YAHOO,SOGOU YOUDAO等);
if ($invalid_referer) {

        return   404;
        }

        上面的代码,很简单的设置了,只要不是HTTP_REFERER来源于上面设置网址来源的请求,通通转发至404。
        在此顺便提醒一下那些卖流量的站长们,不要因为自己的一点小利,就不小心成了黑客攻击者们的肉鸡。

Share
分类: Linux 技术 标签:

nginx的重写规则

2009年11月26日 无风的飘逸 1 条评论

nginx 的重写需要注意以下几点:
有三个部分,1、rewrite  2、重写后的URL  3、重写前的URL  

一、以 "rewrite"开头(不包含引号);
二、第2部分,重写后的URL要用引号包起来,一般来讲引号内部需要以“^”表示一个URL正则表达式的开头,以“$”表示结尾;符号“^”后一般需要跟上一个“/”(location);
三、第3部分,一般以“/”打头,&% last;结尾,请注意last前的空格;

注意这些点一般可以保证你写的重写可用。

Share
分类: Linux 技术 标签:

三个适合做外贸仿牌网站的空间

2009年11月24日 无风的飘逸 5 条评论

最近一些朋友的bluehost主机一直因侵权被封,无奈下准备放弃bluehost,寻找一些离岸主机,即只受理本土投诉,不受理境外投诉的主机;真的有这么好用的虚拟主机吗?先试试了

www.underhost.us (经过验证,这家已经不支持部分仿牌了)

据说是美国的一家离岸主机商,提供德国、荷兰、和新西兰的离岸主机,速度和服务都不错,可以按月买,没有配置费用,支持paypal等支付,支持20个域名,20G空间,400G流量才7美元一个月,性价比还不错,用的是Cpanel,和bluehost差不多

www.shinjiru.com

马来西亚的,提的口号也是离岸主机,可以省不少麻烦,就是不知道对仿牌侵权这一块处理是如何

买个支持5个域名,50G空间,每月台100G流量的测试就行了,一年59美元,支持信用卡和paypal等,开通点有慢,支付完后,order status 为paid,等转变为active要等24小时,所以暂时不知道性能如何,还没启用

www.altushost.com (目前证明是可行的,至少没听过有被关的)
这家是朋友介绍的,据说对侵权投诉也不敏感,真的还是假的有待验证,速度和服务不错,买了第一个后即时开空,第二个买了后一直是pending状态,和客服沟通后才开通,总体来说还不错,用的是cpanel

域名解析服务器为:ns1.altushost.com\ns2.altushost.com
转载疯狂的柠檬

Share

如何在CentOS 5.2操作系统上搭建VPN虚拟拔号网络

2009年11月24日 无风的飘逸 没有评论

1、安装ppp和iptables
yum install -y ppp iptables

2、下载pptpd的rpm包并安装
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

3、编辑配置文件 vi /etc/pptpd.conf
需要有如下内容:
option /etc/ppp/options.pptpd
logwtmp
localip  172.16.195.1
remoteip 172.16.195.101-200
一般只需加入后两行即可,即分配服务器IP和客户端IP范围,可自己选择合适的IP

4、编辑配置文件 vi /etc/ppp/options.pptpd
需要如下内容:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 208.67.222.222
ms-dns 208.67.220.220
一般只需设定后两行的dns服务器地址即可,即去掉#号,把IP改为服务器的dns IP供客户端使用

5、编辑配置文件 vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret   IP addresses
(user) pptpd (passwd) *
四项分别为客户端用户名,vpn服务器名(一般不改动),登陆密码,IP分配址(*为自动),中间用空格或Tab键隔开
可加入多个用户,分行录入

6、开启ip转发功能(否则只能连到vpn服务器,不能通过vpn服务器访问外部网络),修改配置文件

vi /etc/sysctl.conf 中的相应内容如下
net.ipv4.ip_forward = 1
使配置立即生效:
/sbin/sysctl -p

7、启用日志 vi /etc/syslog.conf

追加一行:

daemon.debug /var/log/pptpd.log

重起syslog:

kill -SIGHUP `cat /var/run/syslogd.pid`

8、配置iptables
/sbin/iptablesiptables -t nat -A POSTROUTING -o eth0 -s 172.16.195.0/24 -j MASQUERADE

/sbin/iptablesiptables -t nat -A POSTROUTING -j MASQUERADE

/sbin/iptablesiptables -F FORWARD

/sbin/iptables -A FORWARD -p udp -s 172.16.195.0/24 –dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -s 172.16.195.0/24 –dport 1723 -j ACCEPT
/sbin/iptables -A FORWARD -p gre -s 172.16.195.0/24 -j ACCEPT
/sbin/iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

如果要为不同客户端IP分配不同公网IP,可类似如下设置

/sbin/iptables -A POSTROUTING -s 172.16.195.101 -j SNAT –to-source 204.13.64.190
/sbin/iptables -A POSTROUTING -s 172.16.195.102 -j SNAT –to-source 204.13.70.201

……

 
/etc/init.d/iptables save
/etc/init.d/iptables restart
注意:防火墙一定要开启,否则无法通过vpn服务器访问外网

8、设置iptables和pptpd开机自动启动:
chkconfig pptpd on
chkconfig iptables on

启动pptpd

service pptpd start

9、一些常用命令:

centos:
启动vpn服务器
service pptpd start
停止vpn服务器,但已有连接不受影晌
service pptpd stop
重启vpn服务器,并切断已连接的客户端
service pptpd restart-kill
service pptpd start
查看本机dns服务器地址
cat /etc/resolv.conf
查看所有网卡的信息
ifconfig -a

windows:
显示所有当前的TCP/IP 网络配置值、刷新动态主机配置协议(DHCP) 和域名系统(DNS) 设置
ipconfig/all

11、客户端配置:
以 windows xp 操作系统为例
打开网络连接,执行新建连接向导,先择连接到我的工作场所有网络->虚拟专用网络连接(vpn),写入连接名(自定义),根据实际情况选择是否先进行拨号,
然后输入vps服务器IP,属性默认,连接后即可通过vpn服务器上网

转自疯狂的柠檬

Share
分类: Linux 技术 标签: ,

linux 查看硬盘使用状况的六个方法

2009年11月24日 无风的飘逸 没有评论

一、df -lh 命令

df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;
[root@localhost ~]# df -l
文件系统                 容量       已用       可用    已用% 挂载点
/dev/sda3              4956316   3565088   1135396 76% /
tmpfs                   241320         12    241308   1%   /dev/shm
/dev/sda6              4806904   2523708   2039012 56% /media/disk
/dev/sda1              4956284   3529796   1170656 76% /media/_
/dev/sda5              4845056   2581484   2019388 57% /media/disk-1

可以看到系统挂在sda3上,另外还挂了sda6/sda1/sda5三个系统。

二、fdisk -l 命令

fdisk 是一款强大的磁盘操作工具,来自util-linux软件包,我们在这里只说他如何查看磁盘分区表及分区结构;通过-l 参数,能获得机器中所有的硬盘的分区情况;
[root@localhost ~]# fdisk -l

Disk /dev/sda: 40.0 GB, 40000000000 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x62a9f8d0

   Device Boot      Start         End      Blocks   Id System
/dev/sda1   *           1         637     5116671   83 Linux
/dev/sda2             638         891     2040255   82 Linux swap / Solaris
/dev/sda3             892        1528     5116702+ 83 Linux
/dev/sda4            1529        2744     9767520    5 Extended
/dev/sda5            1529        2136     4883728+ 83 Linux
/dev/sda6            2137        2744     4883728+ 83 Linux

sda1 是MBR(主引导记录)所在的分区;sda2是交换分区;sda4是扩展分区,包括了sda5,sda6两个逻辑分区。系统划分分区的时候只能划分4个主分区(扩展分区也算主分区),我在上面分了3个主分区+1个Extended分区,5.6是逻辑分区。所以才会有sda1.2.3.4.5.6。如果你只划分了1个主分区+1个扩展分区,那么逻辑分区就从sda5开始了,sda1.2.5.6...

三、cfdisk -Ps命令 (注意P是大写)
cfdisk 也是一款不错的分区工具;在有些发行版中,此工具已经从util-linux包中剔除;cfdisk 简单易用是他的特点;
查看磁盘分区的用法   cfdisk   -Ps 磁盘设备名 只有一个硬盘也可以用 cfdisk -Ps

例1:[root@localhost ~]# cfdisk -Ps
Partition Table for /dev/sda

                First         Last
# Type        Sector      Sector       Offset     Length      Filesystem Type         (ID) Flag
-- -------   ----------- -----------    ------   ----------- --------------------      -------
1 Primary           0     10233404     63      10233405         Linux (83)             Boot
2 Primary    10233405    14313914      0       4080510       Linux swap / So (82)    None
3 Primary    14313915    24547319      0      10233405         Linux (83)             None
4 Primary    24547320    44082359      0      19535040       Extended (05)           None
5 Logical    24547320     34314839     63       9767520        Linux (83)             None
6 Logical    34314840    44082359     63       9767520         Linux (83)             None
   Logical    44082360    78124094      0      34041735         Free Space            None

例2:[root@localhost ~]# cfdisk -Ps /dev/sda
Partition Table for /dev/sda

               First       Last
# Type       Sector      Sector   Offset    Length   Filesystem Type (ID) Flag
-- ------- ----------- ----------- ------ ----------- -------------------- ----
1 Primary           0    10233404     63    10233405 Linux (83)           Boot
2 Primary    10233405    14313914      0     4080510 Linux swap / So (82) None
3 Primary    14313915    24547319      0    10233405 Linux (83)           None
4 Primary    24547320    44082359      0    19535040 Extended (05)        None
5 Logical    24547320    34314839     63     9767520 Linux (83)           None
6 Logical    34314840    44082359     63     9767520 Linux (83)           None
   Logical    44082360    78124094      0    34041735 Free Space           None

四、parted 命令
parted   功能不错的分区工具;在Fedora 8中有带,可以自己安装上;调用方法简单,parted 默认是打开的设备是/dev/hda ,也可以自己指定;比如   parted /dev/hda 或/dev/sda 等;退出的方法是 quit

输入parted命令后要等会儿才会出现下面的内容:
[root@localhost ~]# parted
GNU Parted 1.8.6
使用 /dev/sda
Welcome to GNU Parted! Type ’help’ to view a list of commands.
(parted) 

在光标那里输入p回车出现下面内容:

Model: ATA Maxtor 5T040H4 (scsi)
Disk /dev/sda: 40.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start     End     S ize     Type   File system     标志
1      32.3kB   5240MB 5239MB   主分区    ext3          启动
2      5240MB 7329MB 2089MB 主分区    linux-swap       
3      7329MB 12.6GB 5240MB   主分区    ext3             
4      12.6GB 22.6GB   10.0GB 扩展分区                   
5      12.6GB 17.6GB   5001MB 逻辑分区   ext3             
6      17.6GB 22.6GB   5001MB 逻辑分区   ext3             

(parted) 
在光标后面输入quit退出。

五、sfdisk -l

[root@localhost ~]# sfdisk -l

Disk /dev/sda: 4863 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id System
/dev/sda1   *      0+    636     637-   5116671   83 Linux
/dev/sda2        637     890     254    2040255   82 Linux swap / Solaris
/dev/sda3        891    1527     637    5116702+ 83 Linux
/dev/sda4       1528    2743    1216    9767520    5 Extended
/dev/sda5       1528+   2135     608-   4883728+ 83 Linux
/dev/sda6       2136+   2743     608-   4883728+ 83 Linux

六、也可以使用   应用程序>系统工具>磁盘使用分析器   来查看磁盘使用情况。

 

原文出处:http://www.01ruodian.com/school/news.asp?id=5708

Share
分类: Linux 技术, 邹清水 标签:

做了一个SCP和软链接的测试

2009年11月18日 无风的飘逸 1 条评论

今天做了一个软件 链接在SCP下的测试;
使用SCP传输一个文件夹的时候,如果该文件下含有软链接,则会把这个软件 链接当成一个真实的“文件(夹)”进行处理。
如,我的网站根目录下有一个images软链接,是连接到/data0/images 的,我使用SCP传输这个网站的时候,/data0/images里的文件全部跑到网站根目录的images下了。
想想,如果传输的站群都有同样的一个软链接,那就会有无数个images文件夹被复制,产生大量的冗余数据。可怕!

Share
分类: Linux 技术 标签: ,

centOS服务器的时区设置

2009年11月15日 无风的飘逸 没有评论

买来的服务器,时区五花八门,实在不好管理。
今天决心将他们统一成西六区,可是西六区的城市是哪个呢?
终于打到了,原来是CST
现在开始配置服务器的时区。(为了节省时间,我把命令写在记事本里,然后每台服务器的ssh窗口里都粘贴一次,哈哈哈)
这样做的好处在于,我只要检查一次我的命令就可以了,其它的就一样的了。
5:52:58 开始设置时区,所有服务器的时间均为GMT-6(CST)时区的时间
一、 安装ntp时间同步服务
  yum install -y ntp
二、 设置时区为CST
cp /usr/share/zoneinfo/CST6CDT /etc/localtime
三、 手动同步一次时间
ntpdate us.pool.ntp.org

Share
分类: Linux 技术, 邹清水 标签: , ,

Linux 下如何快速找到文件_locate命令详解

2009年11月15日 无风的飘逸 没有评论

我在linux下,不是很熟悉使用find的命令,所以比较习惯用locate命令。

不过这次iredos由于精简的原因,没有安装locate包,

我尝试yum install locate,结果没有这个包。

yum list | grep locate

yum install mlocate

updatedb

这个时候,你就可以使用locate来查找文件。

Share
分类: Linux 技术 标签: ,

mysqldump: Got error: 1556: You can’t use locks with log tables. when using LOCK TABLES

2009年11月13日 无风的飘逸 没有评论

最近在做数据库备份的时候,遇到这样的一个错误:

mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES

我是把一些mysqldump语句放在一个批量命令文件(传说中的.sh文件)中执行的,而当我把这些
mysqldump语句分离开来一个一个执行的时候,我发现是没有任何错误的,于是在网络上找了一些资料:
发现是mysql默认数据库里的logs表,不能被加锁(lock tables)引起的。
于是我测试了一下,把关于mysql这个默认数据库相关的语句清空后,整个文件即可正常运行。
还有一个解决方法:
便是在mysql这个数据库相关的那句mysqldump加上 --lock-tables=0 这个参数,不锁表备份,也是可行的。

Share

教你怎么看top命令-linux进度

2009年11月4日 无风的飘逸 没有评论

在linux里执行top命令,看得我眼都花了,特地去找了这个方面的知识,收藏起来以备急用!
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si

Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h

很可惜,没有hi和si的解释。

Share
分类: Linux 技术 标签: ,