当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
1.系统要求
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
(2)iptables版本:1.3.7
2. 安装
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
3. 配置相应的iptables规则
示例如下:
(1)控制单个IP的最大并发连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit \
--connlimit-above 50 -j REJECT
#允许单个IP的最大连接数为 30(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
iptables -A INPUT -p tcp --dport 80 -m recent \
--name BAD_HTTP_ACCESS --update --seconds 60 \
--hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent \
--name BAD_HTTP_ACCESS --set -j ACCEPT
#单个IP在60秒内只允许最多新建30个连接4. 验证
(1)工具:flood_connect.c(用来模拟攻击)
(2)查看效果:
使用
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'实时查看模拟攻击客户机建立起来的连接数,
使用
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'查看模拟攻击客户机被 DROP 的数据包数。
5.注意
为了增强iptables防止CC攻击的能力,最好调整一下ipt_recent的参数如下:
#cat/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
#记录1000个IP地址,每个地址记录60个数据包
#modprobe ipt_recent
本文来自黑色电视机,原文地址:http://www.blacktv.com.cn
1.系统要求
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
(2)iptables版本:1.3.7
2. 安装
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
3. 配置相应的iptables规则
示例如下:
(1)控制单个IP的最大并发连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit \
--connlimit-above 50 -j REJECT
#允许单个IP的最大连接数为 30(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
iptables -A INPUT -p tcp --dport 80 -m recent \
--name BAD_HTTP_ACCESS --update --seconds 60 \
--hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent \
--name BAD_HTTP_ACCESS --set -j ACCEPT
#单个IP在60秒内只允许最多新建30个连接4. 验证
(1)工具:flood_connect.c(用来模拟攻击)
(2)查看效果:
使用
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'实时查看模拟攻击客户机建立起来的连接数,
使用
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'查看模拟攻击客户机被 DROP 的数据包数。
5.注意
为了增强iptables防止CC攻击的能力,最好调整一下ipt_recent的参数如下:
#cat/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
#记录1000个IP地址,每个地址记录60个数据包
#modprobe ipt_recent
本文来自黑色电视机,原文地址:http://www.blacktv.com.cn
useradd -d /home/xxxx -s /sbin/nologin
useradd -d /home/xxxx -s /sbin/nologin xxxxx
linux useradd 命令详解
功能说明:建立用户帐号。
语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
参 数:
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的启始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 自动建立用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s 指定用户登入后所使用的shell。
-u 指定用户ID。
useradd -d /home/xxxx -s /sbin/nologin xxxxx
linux useradd 命令详解
功能说明:建立用户帐号。
语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
参 数:
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的启始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 自动建立用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s 指定用户登入后所使用的shell。
-u 指定用户ID。
要支持扩展,编译了好几次,也许是版本匹配的问题,
最后终于编译成功了:
把关键部分写一下:
mkdir /usr/local/modules
——————————————————————
开始编译:
tar -zxf zlib-1.2.3.tar.tar
ls
cd zlib
cd zlib-1.2.3
./configure --prefix=/usr/local/zlib
make
make install
cd ..
————————————————————
tar zxvf freetype-2.3.7.tar.gz
cd freetype-2.3.7
ls
./configure --prefix=/usr/local/modules/freetype
make
make install
freetype编译完毕
——————————————————————
wget http://prdownloads.sourceforge.net/png-mng/libpng-1.2.5.tar.gz?download
tar zxvf libpng-1.2.5.tar.gz
cd libpng-1.2.5
ls
cp scripts/makefile.linux makefile
cp scripts/makefile.linux makefile
make test
make install
——————————————————
cd ..
wget ftp://ftp.ro.debian.org/pub/mirrors/openwrt.org/sources/jpegsrc.v6b.tar.gz
tar -xzvf jpegsrc.v6b.tar.gz
ls
cd jpeg-6b/
mkdir /usr/local/modules/jpeg6
mkdir /usr/local/modules/jpeg6/bin
mkdir /usr/local/modules/jpeg6/lib
mkdir /usr/local/modules/jpeg6/include
mkdir /usr/local/modules/jpeg6/man
mkdir /usr/local/modules/jpeg6/man/man1
./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static
make
make install
————————————————————
cd ..
tar -xzvf gd-2.0.35.tar.gz
cd gd-2.0.35
ls
./configure --prefix=/usr/local/modules/gd --with-jpeg=/usr/local/modules/jpeg6 --with-png --with-zlib --with-freetype=/usr/local/modules/freetype
make
make install
cd ..
——————————————————
开始编译php:
tar -xzvf php-5.2.6.tar.gz
cd php-5.2.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-freetype-dir=/usr/local/modules/freetype/ --with-mysql=/usr/local/mysql --with-zlib --with-libxml-dir=/usr/local/libxml --enable-shared --with-gd=/usr/local/modules/gd/ --with-jpeg-dir=/usr/local/modules/jpeg6/ --with-png-dir --enable-mbstring=all --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-gd-native-ttf
make
make test
make install
———————————————————
编译完毕。
重启apache服务。
注:在编译的过程中,如果发现错误,什么目录没有,就mkdir建立。之后再编译。
看phpinfo是否支持你想要的模块,若没有再编译即可。
最后终于编译成功了:
把关键部分写一下:
mkdir /usr/local/modules
——————————————————————
开始编译:
tar -zxf zlib-1.2.3.tar.tar
ls
cd zlib
cd zlib-1.2.3
./configure --prefix=/usr/local/zlib
make
make install
cd ..
————————————————————
tar zxvf freetype-2.3.7.tar.gz
cd freetype-2.3.7
ls
./configure --prefix=/usr/local/modules/freetype
make
make install
freetype编译完毕
——————————————————————
wget http://prdownloads.sourceforge.net/png-mng/libpng-1.2.5.tar.gz?download
tar zxvf libpng-1.2.5.tar.gz
cd libpng-1.2.5
ls
cp scripts/makefile.linux makefile
cp scripts/makefile.linux makefile
make test
make install
——————————————————
cd ..
wget ftp://ftp.ro.debian.org/pub/mirrors/openwrt.org/sources/jpegsrc.v6b.tar.gz
tar -xzvf jpegsrc.v6b.tar.gz
ls
cd jpeg-6b/
mkdir /usr/local/modules/jpeg6
mkdir /usr/local/modules/jpeg6/bin
mkdir /usr/local/modules/jpeg6/lib
mkdir /usr/local/modules/jpeg6/include
mkdir /usr/local/modules/jpeg6/man
mkdir /usr/local/modules/jpeg6/man/man1
./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static
make
make install
————————————————————
cd ..
tar -xzvf gd-2.0.35.tar.gz
cd gd-2.0.35
ls
./configure --prefix=/usr/local/modules/gd --with-jpeg=/usr/local/modules/jpeg6 --with-png --with-zlib --with-freetype=/usr/local/modules/freetype
make
make install
cd ..
——————————————————
开始编译php:
tar -xzvf php-5.2.6.tar.gz
cd php-5.2.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-freetype-dir=/usr/local/modules/freetype/ --with-mysql=/usr/local/mysql --with-zlib --with-libxml-dir=/usr/local/libxml --enable-shared --with-gd=/usr/local/modules/gd/ --with-jpeg-dir=/usr/local/modules/jpeg6/ --with-png-dir --enable-mbstring=all --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-gd-native-ttf
make
make test
make install
———————————————————
编译完毕。
重启apache服务。
注:在编译的过程中,如果发现错误,什么目录没有,就mkdir建立。之后再编译。
看phpinfo是否支持你想要的模块,若没有再编译即可。
编译完成mysql,之后把这个相应的权限给改了
下面这几句很重要
(这个顺序也很重要,一定不要颠倒)
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chown -R mysql /usr/local/mysql/var/
chown -R mysql /usr/local/mysql/var/.
chown -R mysql /usr/local/mysql/var/mysql
chown -R mysql /usr/local/mysql/var/mysql/
chgrp -R mysql /usr/local/mysql
cp ../support-files/my-medium.cnf /etc/my.cnf
vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
/usr/local/lib
保存。
载入库:
/sbin/ldconfig -v
cp mysql.server /etc/rc.d/init.d/mysqld
cd /etc/rc.d/init.d/
vi mysqld
找到
$bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
wait_for_pid created $!; return_value=$?
改为:
$bindir/mysqld_safe --user=root --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
wait_for_pid created $!; return_value=$?
之后:
service mysqld start
service mysqld restart 就可以了。
最后是在启动机器的时候也启动服务
我们的机器是在rulevel 3 所以只加level 3就可以了
chkconfig --level 3 mysqld on
这样就不要在rc.local里面加/usr/local/mysql/bin/mysqld-safe --user=mysql & 了
可以这样启动或者重启或者关闭mysql
service mysqld start
service mysqld restart
service mysqld stop
——————————————————————
over
下面这几句很重要
(这个顺序也很重要,一定不要颠倒)
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chown -R mysql /usr/local/mysql/var/
chown -R mysql /usr/local/mysql/var/.
chown -R mysql /usr/local/mysql/var/mysql
chown -R mysql /usr/local/mysql/var/mysql/
chgrp -R mysql /usr/local/mysql
cp ../support-files/my-medium.cnf /etc/my.cnf
vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
/usr/local/lib
保存。
载入库:
/sbin/ldconfig -v
cp mysql.server /etc/rc.d/init.d/mysqld
cd /etc/rc.d/init.d/
vi mysqld
找到
$bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
wait_for_pid created $!; return_value=$?
改为:
$bindir/mysqld_safe --user=root --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
wait_for_pid created $!; return_value=$?
之后:
service mysqld start
service mysqld restart 就可以了。
最后是在启动机器的时候也启动服务
我们的机器是在rulevel 3 所以只加level 3就可以了
chkconfig --level 3 mysqld on
这样就不要在rc.local里面加/usr/local/mysql/bin/mysqld-safe --user=mysql & 了
可以这样启动或者重启或者关闭mysql
service mysqld start
service mysqld restart
service mysqld stop
——————————————————————
over
1、建用户:
adduser phpq //新建phpq用户
passwd phpq //给phpq用户设置密码
2、建工作组
groupadd test //新建test工作组
3、新建用户同时增加工作组
useradd -g test phpq //新建phpq用户并增加到test工作组
注::-g 所属组 -d 家目录 -s 所用的SHELL
4、给已有的用户增加工作组
usermod -G groupname username
或者:gpasswd -a user group
5、临时关闭:在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。
或者使用如下命令关闭用户账号:
passwd peter –l
重新释放:
passwd peter –u
6、永久性删除用户账号
userdel peter
groupdel peter
usermod –G peter peter (强制删除该用户的主目录和主目录下的所有文件和子目录)
7、从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP
8、显示用户信息
id user
cat /etc/passwd
更详细的用户和用户组的解说请参考
Linux 用户和用户组详细解说
本文主要讲述在Linux 系统中用户(user)和用户组(group)管理相应的概念;用户(user)和用户组(group)相关命令的列举;其中也对单用户多任务,多用户多任务也做以解说。
本篇文章来源于 PHP资讯 原文链接:http://www.phpq.net/linux/linux-add-delete-user-group.html
adduser phpq //新建phpq用户
passwd phpq //给phpq用户设置密码
2、建工作组
groupadd test //新建test工作组
3、新建用户同时增加工作组
useradd -g test phpq //新建phpq用户并增加到test工作组
注::-g 所属组 -d 家目录 -s 所用的SHELL
4、给已有的用户增加工作组
usermod -G groupname username
或者:gpasswd -a user group
5、临时关闭:在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。
或者使用如下命令关闭用户账号:
passwd peter –l
重新释放:
passwd peter –u
6、永久性删除用户账号
userdel peter
groupdel peter
usermod –G peter peter (强制删除该用户的主目录和主目录下的所有文件和子目录)
7、从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP
8、显示用户信息
id user
cat /etc/passwd
更详细的用户和用户组的解说请参考
Linux 用户和用户组详细解说
本文主要讲述在Linux 系统中用户(user)和用户组(group)管理相应的概念;用户(user)和用户组(group)相关命令的列举;其中也对单用户多任务,多用户多任务也做以解说。
本篇文章来源于 PHP资讯 原文链接:http://www.phpq.net/linux/linux-add-delete-user-group.html
linux userdel 命令详解
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-r 删除用户登入目录以及目录中所有文件。
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-r 删除用户登入目录以及目录中所有文件。
好多人在网上问linux怎么重启mysql,回答也是各式各样的。mysql并没有像apache那样可以通过/usr/local/apache/bin/apachetl restart这样来重启。好多提到的都是killall mysqld ,杀掉所有mysql进程,然后重新启动mysql,这样容易造成mysql数据库的损坏,特别是在应用的情况下。mysql其实是可以作为服务来重启的。
方法如下:
源码目录下/support-files/mysql.server 拷贝到/etc/rc.d/init.d/下。然后把启动mysql命令添加到/etc/rc.d/rc.local。这样启动以后,mysql就自动启动了。运行过程中,就可以用server mysql restart来运行。
方法如下:
源码目录下/support-files/mysql.server 拷贝到/etc/rc.d/init.d/下。然后把启动mysql命令添加到/etc/rc.d/rc.local。这样启动以后,mysql就自动启动了。运行过程中,就可以用server mysql restart来运行。
is_writeable() 函数判断指定的文件是否可写。
该函数是 is_writable() 函数的别名。
语法
is_writeable(file)
说明
如果文件存在并且可写则返回 true。file 参数可以是一个允许进行是否可写检查的目录名。
<?php
$file = "test.txt";
if(is_writeable($file))
{
echo ("$file is writeable");
}
else
{
echo ("$file is not writeable");
}
?>
该函数是 is_writable() 函数的别名。
语法
is_writeable(file)
说明
如果文件存在并且可写则返回 true。file 参数可以是一个允许进行是否可写检查的目录名。
<?php
$file = "test.txt";
if(is_writeable($file))
{
echo ("$file is writeable");
}
else
{
echo ("$file is not writeable");
}
?>
PHP 内置函数 file_put_contents 用于写入文件。
file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下:
file_put_contents(filepath,data)
如果文件不存在,file_put_contents 函数会自动创建文件;如果文件已存在,原有文件被重写。
你可以利用 file_put_contents 函数创建并写入一个新文件,或者重写一个原有文件。
下面是一个使用 file_put_contents 函数的 PHP 代码示例:
file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下:
file_put_contents(filepath,data)
如果文件不存在,file_put_contents 函数会自动创建文件;如果文件已存在,原有文件被重写。
你可以利用 file_put_contents 函数创建并写入一个新文件,或者重写一个原有文件。
下面是一个使用 file_put_contents 函数的 PHP 代码示例: