存档

‘For Linux’ 分类的存档

Linux/centos减轻/防止DDoS攻击的轻量级小程序,DDoS deflate软件防火墙[转]

2011年9月7日 果果 103 条评论

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

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

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

脚本做了什么?

  1. 默认将iptables防火墙作为拦截工具,并将并发数改成了60/秒就触发屏蔽IP
  2. 将本机IP都加入了IP白名单,然后强行不允许自动更新白名单列表。如果你需要修改IP白名单列表,请先执行 chattr -i /usr/local/ddos/ignore.ip.list   然后再vi进行修改
  3. 卸载: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

分类: For Linux 标签: ,

[转]centos上VNC的安装与使用

2011年6月14日 果果 3 条评论

安装前请先确保已经安装gnome桌面程序,否则即使装完VNC,连接时也只会显示一个纯色的背景加上一个X号的鼠标

VNC的安装与使用。
说明:文章内容比较简单,献给那些初学者作为参考。
文章分为两部分,第一部分为VNC简介,第二部分为VNC的安装与使用。
文章为小弟结合书籍与小弟的实际操作总结出来的,如有错误与疏漏之处,还请指出。
fish_ys 2003.8.25

『VNC简介』
网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。
VNC(Virtual Network Computing)是一套由AT&T实验室所开发的可操控远程的计算机的软件,其采用了GPL授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:VNC server及VNC viewer。用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行VNC viewer控制被控端。
(在windows中也由一套著名的网络遥控软件――Symantec公司推出的pcAnywhere。
VNC server与VNC viewer支持多种操作系统,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可将VNC server 及VNC viewer分别安装在不同的操作系统中进行控制。如果目前操作的主控端计算机没有安装VNC viewer,也可以通过一般的网页浏览器来控制被控端。
整个VNC运行的工作流程如下:
(1) VNC客户端通过浏览器或VNC Viewer连接至VNC Server。
(2) VNC Server传送一对话窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。
(3) 在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。
(4) 若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境。
(5) VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。
(6) VNC Server将来由 X Server的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

『VNC的安装与使用』
本人的操作环境:被控端 Redhat8.0,主控端Windows XP。
1. 载VNC Server与VNC viewer.
VNC Server下载地址:http://www.linuxeden.com/download/softdetail.php?softid=744
VNC viewer下载地址:http://download.pchome.net/php/dl.php?sid=2603
2.安装。
rpm –Uvh vnc-3.3.6-2.i386.rpm (如果是源代码请看包里的说明)
安装winvnc.exe
3.在Linux上启动VNC Server
执行vncserver命令:
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: —-为了不想任何人都可以任意遥控此计算机。因此当第
Verify: —1次启动VNC server时,会要求设置网络遥控的密码。
New ‘X’ desktop is linux:1 —-一定要记住这一行稍后会用到。
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/linux:1.log
(经上述步骤后,便已启动了VNC Server。如果你想要更改VNC Server的密码,只要执行vncpasswd命令即可。)
4.在Microsoft Windows上运行VNC Viewer
直接运行“vncviewer.exe”,系统会出现”Connection details”对话框。
在“Connection details”对话框中的“VNC server”文本框中输入VNC Server的IP地址(或主机名及显示装置编号,(请看3。在Linux上启动VNC server的这一行,New ‘X’ desktop is linux:1 得到此信息),例如:192.168.0.1:1(冒号后面的1是执行VNC Server生成的显示装置编号),单击“OK”按钮后,VNC Server即会开始检查所输入的信息,若是信息错误,系统会出现“Failed to connect to server”的错误信息:若是信息正确,则会接着出现“VNC Authentication”对话框。
若是在“VNC Authentication”对话框中输入的密码正确,就可以成功地打开Linux的桌面窗口。
5. 从浏览器远程遥控。
启动VNC Server 后直接打开浏览器,在地址栏中输入被控端的网址或IP地址,并在网址后加上“:5800+显示编号”的端口号即可操控该计算机。
例如:http://192.168.01.:5801 (如果显示编号为1,一般第一次设置的显示编号都是1,就用5800+1=5801。)

6.FAQ
A.为什么连接后,不能显示桌面,而只有一个Terminal窗口?
试着修改/root/.vnc/xstartup,把最后一行 twm& 改成 gnome-session& or kde&(据说KDE在目前的VNC Viewer上的表现不太稳定)

B. 为什么重新启动VNC Server后,连接不上了?
因为重新启动VNC Server时,系统会指定一个新的显示编号,需使用此新的编号,否则就无法连接。
(以上只是本人遇到的一些问题,而且用VNC也不是很多,很不全面,还望多提宝贵意见)

为什么我设成gnome-session &进去什么也没有啊?灰灰的背景,一个大X鼠标标志,求大虾帮忙!!!!!!

是你没有装gnome

分类: For Linux 标签: , ,

centos系统的VPS如何安装WHM/CPANEL控制面板

2011年5月5日 果果 10 条评论

1,一般VPS买来时的centos系统会自带apache,要先卸载掉

yum remove httpd -y

2,安装cpanel控制面板:

1.cd /home

2.wget -N http://httpupdate.cpanel.net/latest

3.sh latest 

然后等待….反复的++++…….,40分钟左右。

然后提示成功,http://IP/whm
进入WHM安装向导进行基础配置,配置完就进入了WHM面板,
运行easy apache,选择需要的环境,重新编译apache


3,购买license

购买网址:http://www.buycpanel.com。购买15美金的VPS版本的许可即可,下订单后大概需要pending半天的时间,状态变为active时,就可以使用了

4,如果进入WHM面板左边还是提示没有许可的错误,就需要重新加载一下许可文件

1. 打开 http://www.cpanel.net/apps/verify 输入你的IP地址查看 cPanel license的状态. 确定是 Active的.

2. 然后运行 /usr/local/cpanel/cpkeyclt 即可

linux下增加swap内存容量,避免因为swap内存溢出导致服务器宕机

2011年3月2日 果果 1 条评论

最近服务器连续抽风两三次,按照托管方的分析,说swap内存太小了,应该至少为内存的2倍。查了一下资料,linux内核的系统不管你物理内存多大,默认swap内存是2G,可通过以下方式增加swap内存。

使用free -k命令即可查看当前swap内存大小,例如:

# free -k
             total       used       free     shared    buffers     cached
Mem:       3082356    2043700    1038656          0      50976    1646268
-/+ buffers/cache:     346456    2735900
Swap:      2096440          0    2096440

可以使用新分区和新建文件作为swap,分区太麻烦了,我使用创建swap文件的方法

我机器内存是4G的,所以swap内存至少要8G,系统自带了2G,我只需要增加6G的空间,这里我尝试增加8G一共10G试试。在剩余空间较多的/home文件夹下创建一个8G的myswapfile文件

# dd if=/dev/zero of=/home/myswapfile bs=1M count=8192
8192+0 records in
8192+0 records out

# ls -l /home/myswapfile
-rw-r--r--    1 root     root     1073741824 Aug 14 23:47 /home/myswapfile

然后修改权限

# chmod 600 /home/myswapfile

把这个文件设置为swap文件

# mkswap /home/myswapfile
Setting up swapspace version 1, size = 8589930 kB

开启新创建的swap文件

# swapon /home/myswapfile

设置重启后能自动加载该文件,编辑/etc/fstab文件,把下面这一行添加到文件最后。

# vi /etc/fstab
/home/myswapfile               swap                    swap    defaults        0 0

使用swapon -s和free -k命令即可查看现在的swap使用情况

root@lyle [/home]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda6                               partition       2096440 180     0
/home/myswapfile                        file            8388600 0       -1
root@lyle [/home]# free -k
total       used       free     shared    buffers     cached
Mem:       4035752    3971300      64452          0      29084    3270948
-/+ buffers/cache:     671268    3364484
Swap:     10485040        180   10484860
# swapon -s Filename Type Size Used Priority /dev/sda6 partition 2096440 180 0 /home/myswapfile file 8388600 0 -1 # free -k total used free shared buffers cached Mem: 4035752 3971300 64452 0 29084 3270948 -/+ buffers/cache: 671268 3364484 Swap: 10485040 180 10484860

这里就看到有两个swap,一个是2G的分区,一个是8G的我们刚才创建的文件,下面就看到实际内存4G,swap是10G。

MYSQL中MY.CNF配置文件优化及参数介绍

2011年3月1日 果果 2 条评论
设置建议:
对于单台运行的WEB服务器,建议加上:
skip-locking
skip-name-resolve
skip-networking
在PHP链接数据库时使用”LOCALHOST”.这样MySQL 客户端库将覆盖之并尝试连接到本地套接字.(
我们可以从PHP.INI中
代码:
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /tmp/mysql.sock
看出 默认情况下 UNIX 将访问/tmp/mysql.sock)
以下是部分选项解释:
my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 避免MySQL的外部锁定,减少出错几率增强稳定性。
skip-name-resolve
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
back_log = 384
指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。
back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。
试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
key_buffer_size = 256M
# key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。
对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
join_buffer_size = 8M
联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
代码:
# > SHOW VARIABLES LIKE ‘%query_cache%’;
# > SHOW STATUS LIKE ‘Qcache%’;
如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
thread_concurrency = 8
该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8
skip-networking
开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
设置建议:
对于单台运行的WEB服务器,建议加上:
skip-locking
skip-name-resolve
skip-networking
在PHP链接数据库时使用”LOCALHOST”.这样MySQL 客户端库将覆盖之并尝试连接到本地套接字.(
我们可以从PHP.INI中
代码:
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /tmp/mysql.sock
看出 默认情况下 UNIX 将访问/tmp/mysql.sock)
以下是部分选项解释:
my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 避免MySQL的外部锁定,减少出错几率增强稳定性。
skip-name-resolve
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
back_log = 384
指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。
back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。
试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
key_buffer_size = 256M
# key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。
对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
join_buffer_size = 8M
联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
代码:
# > SHOW VARIABLES LIKE ‘%query_cache%’;
# > SHOW STATUS LIKE ‘Qcache%’;
如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
thread_concurrency = 8
该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8
skip-networking
开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
分类: For Linux 标签: , ,

rsync 使用说明(转)

2011年3月1日 果果 1 条评论

我主要用rysnc同步文件,rsync是一款非常优秀的文件同步管理软件,它也支持多种操作系统平台,在Unix环境中,rsync有着卓绝的功绩。希望这篇文档能对一些朋友有所帮助。


1. Install

[url]http://www.samba.org/rsync/[/url]

shell> tar zxvf rsync-x.x.x.tar.gz
shell> cd rsync-x.x.x
shell> ./configure && make && make install

目前大部分 Unix/Linux 默认即安装了 rsync。



2. /etc/rsyncd.conf

shell> touch /etc/rsyncd.conf
shell> vi /etc/rsyncd.conf


Edit /etc/rsyncd.conf as below:

uid = nobody
gid = nobody
use chroot = no
max connections = 5
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log

[<dst-dir>]
path = <dst-dir-fullpath>
ignore errors
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.secrets



3. /etc/rsync.secrets

shell> echo “jack:password” >> /etc/rsyncd.secrets
shell> chmod 600 /etc/rsyncd.secrets

*注:一定要把rsyncd.secrets的权限设为600,否则不能正常进行身份认证。
包括–password-file指向的密码文件,也必须设成600权限。



4. Autorun

>>> Idea 1 – only linux <<<

shell> vi /etc/xinetd.d/rsync

set DISABLE to yes, the result looks like this:
service rsync
{
disable         = no  <———- change to yes
socket_type     = stream
wait            = no
user            = root
server          = /usr/bin/rsync
server_args     = –daemon
log_on_failure  += USERID
}


>>> Idea 2 – on openSUSE <<<

shell> echo “/usr/local/bin/rsync –daemon” >> /etc/init.d/boot.local


>>> Idea 3 <<<

shell> echo “/usr/local/bin/rsync –daemon” >> /etc/rc.local



5. Run daemon

shell> rsync –daemon

*注一:在rsync的man手册的 CONNECTING TO AN RSYNC SERVER 处有提到:
It is also possible to use rsync without a remote shell as the transport. In this case you will connect to a remote  rsync server running on TCP port 873.

*注二:在rsync的man手册的 –port=PORT 选项解释中有提到:
This specifies an alternate TCP port number to use rather than the default port 873.



6. rsync 命令实例


6.1 显示目录内容

命令
——
a) rsync <dst-dir>
b) rsync -r <dst-dir>
c) rsync jack@192.168.0.1::<dst-dir>
d) rsync ssh_user@192.168.0.1:<dst-dir>

命令说明
———
a) 显示<dst-dir>目录
内容(第一层)
b) 递归显示<dst-dir>目录
内容
c) 显示远程主机<dst-dir>目录内容
*注1:端口模式, 基于rsync用户的身份验证
*注2:rsync server上的目录必须具有xx7的权限.
d) 查看
远程主机<dst-dir>目录内容
*注1:remote shell模式, 通过ssh连接的基于系统本地用户的身份验证
*注2:这里只使用了一个冒号(:),同时用户名是远
程主机的ssh用户,密码也是ssh用户对应的密码。
*注3:使用”<dst-dir>”,则列出<dst-dir>文件夹本身的信息。若要列出<dst-dir>文件夹内容,应使用”<dst-dir>/”。

参数说明
———
-r          对目录进行递归操作


6.2 本地目录之间同步

命令
——
a) rsync -av  –progress <src-dir>/ <dst-dir>             *** 注意(/) ***
b) rsync -av  –progress <src-dir>  <dst-dir>
c) rsync -avu –progress –delete <src-dir>/  <dst-dir>
d)
rsync -av  –progress –temp-dir=/tmp <src-dir>/ <dst-dir>

命令说明
———
a) 同步src-dir目录下所有文件到dst-dir目录下
b) 同步src-dir目录下所有文件到dst-dir/src-dir目录下
c) 对src-dir目录内容向dst-dir目录下进行差异更新,有增加/更新则添加替换,有减少则对其删减
d) 比a)多了
–temp-dir=/tmp,即指定/tmp为临时交换区,这样可以避免因目标目录空间不够引起的无法同步文件的错误。

参数说明
———
-a          相当于 -rlptgoD 的集合
-u          等同于 –update,在目标文件比源文件新的情况下不更新
-v          显示同步的文件
–progress  显示文件同步时的百分比进度、传输速率
–delete    删除目标目录中多于源目录的文件


6.3 异地主机之间同步

命令
——
a) rsync -avz  –progress <src-dir> jack@192.168.0.1::<dst-dir>/

b) rsync -avz  –progress <src-dir> jack@192.168.0.1::<dst-dir>/ –password-file=/home/jack/rsync.jack

c) rsync -avuz  –progress –delete <src-dir> jack@192.168.0.1::<dst-dir>/ –password-file=/home/jack/rsync.jack

d) rsync -avz  –progress jack@192.168.0.1::<dst-dir>/<src-dir> <dst-dir>

命令说明
———
a) 同步本地<src-dir>目录的内容到远程主机192.168.0.1的<dst-dir>目录下,jack是rsync数据库用户(参见3. /etc/rsync.secrets)
b) 通过自动读取用户密码而实现非交互登录文件同步

c) 较b)多了-u和–delete

d) 同步远程主机内容到本地目录


参数说明
———
-z                等同于 –compress,对传输的文件压缩,这对节约网络带宽或在网络资源紧张的情况下非常有用
–password-file   引用192.168.0.1上rsync用户jack口令的本地文件,创建方法如下
shell> echo “jackpwd” >> /home/jack/
rsync.jack
shell> chown jack:wheel
/home/jack/rsync.jack
shell> chmod 600 /home/jack/rsync.jack








===============================================
2006/07/18  Created  by wandering 
2008/10/12  重新对文档整理,修正了部分错误,增加一些内容
2008/10/22  增加了 –temp-dir 参数



本文出自 Wandering’s Blog 博客

分类: For Linux 标签:

编写脚本让mysql数据库自动备份至本地

2011年3月1日 果果 5 条评论

1、创建备份文件夹

#cd /www
#makedir backup

2、编写运行脚本

#vi autobackup

写入以下内容:

该脚本每天凌晨执行一次,自动备份,而且只保留最近五天的备份在服务器上。

#!/bin/bash 

#This is a ShellScript For Auto DB Backup 

#Powered by aspbiz 

#2004-09 

#Setting 

#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 

#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy 

#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz 

DBName=mysql 

DBUser=root 

DBPasswd= 

BackupPath=/root/ 

LogFile=/root/db.log 

DBPath=/var/lib/mysql/ 

#BackupMethod=mysqldump 

#BackupMethod=mysqlhotcopy 

#BackupMethod=tar 

#Setting End 

NewFile="$BackupPath"db$(date +%y%m%d).tgz 

DumpFile="$BackupPath"db$(date +%y%m%d) 

OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz 

echo "-------------------------------------------" >;>; $LogFile 

echo $(date +"%y-%m-%d %H:%M:%S") >;>; $LogFile 

echo "--------------------------" >;>; $LogFile 

#Delete Old File 

if [ -f $OldFile ] 

then 

   rm -f $OldFile >;>; $LogFile 2>;&1 

   echo "[$OldFile]Delete Old File Success!" >;>; $LogFile 

else 

   echo "[$OldFile]No Old Backup File!" >;>; $LogFile 

fi 

if [ -f $NewFile ] 

then 

   echo "[$NewFile]The Backup File is exists,Can't Backup!" >;>; $LogFile 

else 

   case $BackupMethod in 

   mysqldump) 

      if [ -z $DBPasswd ] 

      then 

         mysqldump -u $DBUser --opt $DBName >; $DumpFile 

      else 

         mysqldump -u $DBUser -p$DBPasswd --opt $DBName >; $DumpFile 

      fi 

      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 

      echo "[$NewFile]Backup Success!" >;>; $LogFile 

      rm -rf $DumpFile 

      ;; 

   mysqlhotcopy) 

      rm -rf $DumpFile 

      mkdir $DumpFile 

      if [ -z $DBPasswd ] 

      then 

         mysqlhotcopy -u $DBUser $DBName $DumpFile >;>; $LogFile 2>;&1 

      else 

         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >;>;$LogFile 2>;&1 

      fi 

      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 

      echo "[$NewFile]Backup Success!" >;>; $LogFile 

      rm -rf $DumpFile 

      ;; 

   *) 

      /etc/init.d/mysqld stop >;/dev/null 2>;&1 

      tar czvf $NewFile $DBPath$DBName >;>; $LogFile 2>;&1 

      /etc/init.d/mysqld start >;/dev/null 2>;&1 

      echo "[$NewFile]Backup Success!" >;>; $LogFile 

      ;; 

   esac 

fi 

echo "-------------------------------------------" >;>; $LogFile

3、为脚本添加执行权限

#chmod +x autobackup

4、让crontab来完成定期执行的任务

Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。

Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。

5、重启crontab

#/etc/rc.d/init.d/crond restart

完成

分类: For Linux 标签: , ,

mod_evasive模块防止DDOS攻击2010修订版

2010年7月11日 果果 6 条评论

网上找到的资料都是过时的,链接不可用,修正版本如下,mark一下备用

ddos全名是Distribution Denial of service (分布式拒绝服务攻击),很多DOS攻击源一起攻击某台服务器就组成了DDOS攻击
1.下载
cd /tmp
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxf mod_evasive_1.10.1.tar.gz

2.安装
cd mod_evasive
/usr/local/apache/bin/apxs -c -i -a mod_evasive20.c

3.配置
vi /usr/local/apache2/conf/httpd.conf
添加下面内容
LoadModule dosevasive20_module libexec/apache22/mod_dosevasive20.so
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>
4.重新启动apache2,配置完毕。
5.测试
打开IE ,访问网站 http://yourdomain.com  不断快速刷新网页就会出现错误提示,说明防泛有效,查看/tmp目录会dow.ip 日志文件。
说明:
DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSPageCount 5 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSSiteCount 50 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。
DOSBlockingPeriod 10 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。

分类: For Linux 标签:

phpmyadmin导入mysql数据库提示”无法读取文件”

2010年5月27日 果果 1 条评论

今天碰到的问题,使用phpmyadmin不能导入数据。由于有root权限,可以直接登录mysql导入数据,mark一下

打开cmd,//进入mysql数据库控制台,
mysql -u root -p
mysql>use 数据库  //进入对应的数据库
//然后使用source命令,后面参数为脚本文件(如这里用到的.sql)www.ctusky.com
mysql>source d:\database.sql
mysql>exit

Centos下zend Optimizer无法启动的解决方法

2010年3月4日 果果 10 条评论

网上搜索一下,基本都是同一篇文章,提供了3种不同情况的解决方法,我试遍了所有方法都不成功,最后重启了centos,搞定了。make一下以备以后使用

1. 对于 php.ini文件路径有问题( 我的在 phpinfo()显示php.ini路径正确,我就不用这个方法 )

解决方法

php -i | grep php.ini 就可以找到当前php使用的php.ini文件

比如, 编译安装时没有指定php.ini存放路径, 那么默认php.ini会放在/usr/local/lib下面

最好是在编译PHP时指定PHP配置文件的路径 如: –with-config-file-path=/usr/local/etc

而一般zend默认安装 php.ini在/etc/目录下面或/usr/local/Zend/etc 所以需要在安装的时候手工指定我们php.ini文件存放的位置

如果, 不知道现在的PHP 的配置文件具体位置的话 可以查看一下:

php -i | grep php.ini

如果php optimizer安装好了 却发现不能加载的话可以 手工指定读取php.ini文件的位置

php -c /etc/ -v 如果可以看到zend opt正确加载

那么做个连接就好了 连接到php默认读取的php.ini路径下面

比如

ln -sf /etc/php.ini /usr/local/lib

[root@localhost /]# php -v

PHP 5.2.5 (cli) (built: Jan 22 2006 12:59:19)

Copyright (c) 1997-2006 The PHP Group

Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies

with Zend Optimizer v3.3.2, Copyright (c) 1998-2006, by Zend Technologies

Ok 正常了 phpinfo()看到的当然也是一样的

2. 调用库文件的问题

有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt,

但是 apache 执行phpinfo的输出里面却看不到

一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的

如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ,

而php.ini文件中加载zend模块是在zend安装路径的lib目录中

比如/usr/local/Zend/lib 这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常

但是apache 却没有加载zend。

解决办法

先把zend模块copy到

/usr/lib里面 然后改一下php.ini里面zend加载模块部分

( 我在 php -i 中显示 Failed loading /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied

看了这个原来是权限问题)

3. 最恶心的SElinux问题

SElinux导致PHP不能使用zend/lib下的库文件。所以,即便是做了link也不行。只能够拷贝库文件到有权限的目录。或者直接关掉SElinux

但我已 在 /etc/selinux/config 的 SELINUX=disabled 关掉SElinux 还是不行, 再网络查询发现

在你保证SElinux 被disable后.还执行下

chcon -t texrel_shlib_t 命令

如: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so (这个文件视具体执行文件.)

就可以了。

我的解决的情况是:

1. 关闭SElinux

2. 运行 #chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so

就可以了。

分类: For Linux 标签: , ,