一、安装
这里我选择的是CentOS,当然,版本你可以自己选择,官网地址 http://www.centos.org
当然,有一点要值得注意,就是32位和64位的选择。如果机器符合64位,那就没必要用32位的
安装这里就没什么好讲的了,尽量最小化安装,留个“开发工具”就可以了!
至于分区,google一下,很多!但我们在第一次接触时,尽量选择默认分区。先顺利的达成应用,以后再慢慢研究尚可。这能增加你的信心和学习效率!
二、AMP的安装和配置、优化
也就是 apache、mysql、php
我的学习过程是,用一个集成的安装包,而不是一上来就挨个的那样配置,会对信心大打折扣,并且引出的问题会很多!
这里,我推荐的是:LAMPP 官方地址: http://www.apachefriends.org/zh_cn/xampp-linux.html
下载源码包,然后解压进行安装、启动
wget http://nchc.dl.sourceforge.net/s ... linux-1.6.8a.tar.gz
tar xvfz xampp-linux-1.6.8a.tar.gz -C /opt
/opt/lampp/lampp start
此时,lampp组件就成功启动了,但它并不是每次随系统启动
ln -s /opt/lampp/lampp /etc/rc.d/rc3.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc4.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc5.d/S99lampp
这样,就OK了!
然后我们来重启服务器,看下成功与否
shutdown -r now
——————————————————————————————————————————
但这个时候是比较危险的,如果你的服务器已经在公网的话,那么你需要马上执行下面的命令,根据提示,设定密码。具体的可参照上面给出的lampp官方说明
/opt/lampp/lampp security
——————————————————————————————————————————
开启 eAccelerator
vi /opt/lampp/etc/php.ini
查找 eAccelerator 将前面的 # 去掉,重启apache即可
另外,参数可以默认即可,当然,你也可以改一下,比如我把 eaccelerator.shm_size 修改为 32
意思是eAccelerator缓存可用的共享内存数量为32M
——————————————————————————————————————————
这个时候,实质上,你的LAMP已经是基本可以应用了!但有一点你要知道,这个组件默认是没有zend的,你可以再另外安装配置
wget http://网址/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.2.2-linux-glibc21-i386
./install.sh
在Please specify the location for installing ZendOptimizer:提示后输入ZendOptimizer安装路径,例如/data/webserver/zend
在Confirm the location of your php.ini file:提示后输入php.ini文件所在目录,例如/data/webserver/php/etc
在Specify the full path to the Apache control utility (apachectl):提示输入apachectl绝对路径,例如/data/webserver/apache/bin/apachectl
——————————————————————————————————————————
时间差问题
在php.ini添加 (eaccelerator下边)
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
date.timezone = Etc/GMT-8
——————————————————————————————————————————
修改mysql最大连接数
my.cnf
在 [mysqld] 下面加入一行
max_connections = 1500
——————————————————————————————————————————
伪静态
打开apache的配置文件(httpd.conf)
找到
#LoadModule rewrite_module modules/mod_rewrite.so
把前面的#去掉
然后找到AllowOverride None
将其全部改成AllowOverride All
即可支持伪静态功能
在bbs等站点根目录下放置相应htaccess规则即可。
——————————————————————————————————————————
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-default.conf 值默认
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf 这个就是apache虚拟主机的配置文件了
去掉前边的# 按照相关原则进行合理配置!
影响最大的是 httpd-mpm.conf
<IfModule prefork.c>
ServerLimit 2000
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
这是我的配置
虚拟主机配置
#Include conf/extra/httpd-vhosts.conf 这个就是apache虚拟主机的配置文件了
<VirtualHost *:80>
ServerAdmin
DocumentRoot /opt/lampp/htdocs/wwwroot/bbs (网站目录)
ServerName bbs.123.com (域名)
ServerAlias bbs2.123.com (别名)
ErrorLog logs/bbs.123.com-error_log
CustomLog logs/bbs.123.com-access_log common
</VirtualHost>
现在,bbs.123.com和bbs2.123.com 即可同时访问这个目录,那么如果你不想让 bbs2 访问,那么去掉 ServerAlias bbs2.123.com 这行就可以了
——————————————————————————————————————————
三、安全方面的问题
这个一看就知道什么意思吧?
修改 Options Indexes FollowSymLinks ExecCGI Includes
为 Options FollowSymLinks Includes
隐藏apache版本相关信息 (错误页面)
添加到httpd.conf文件结尾即可:
ServerSignature Off
ServerTokens Prod
提升PHP安全性
php.ini
找到:
disable_functions =
设置为:
disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,ini_restore
disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
这里我给出了两组,根据你自己需求写吧
——————————————————————————————————————————
关闭 ipv6 以最大限度保证安全和快速
ifconfig -a 列出全部网络接口信息
sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态
vi /etc/modprobe.conf ← 修改相应配置文件,添加如下行到文尾:
alias net-pf-10 off
alias ipv6 off
shutdown -r now ← 重新启动系统,使设置生效
——————————————————————————————————————————
如果你安装了X,那么想让linux默认不启动X,而是启动字符文本....
etc/inittab 文档中,将 id:5改成3即可
(在/etc/inittab修改运行等级为5是系统开机进入X windows,运行等级为3是系统开机进入文本。)
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
字符终端模式下启动x-windows:
startx
——————————————————————————————————————————
ARP绑定:
为了开机启动
vi /etc/rc.d/rc.local 增加
arp -s 网关IP 网关MAC
arp -s 服务器IP 服务器MAC
——————————————————————————————————————————
SYN、DDOS的解决办法 (没有硬防的情况下)
这个只能抵御,不能本质上防范
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
原帖为: http://linux.chinaunix.net/bbs/thread-1045310-1-2.html (2楼、5楼)
如果你有幸能分析出攻击者的真实肉机IP地址
那么你可以同样通过linux防火墙来封掉他的IP地址或IP段,比如
单个IP的命令是
iptables -I INPUT -s 127.0.0.1 -j DROP
封IP段的命令是
iptables -I INPUT -s 127.1.0.0/16 -j DROP
iptables -I INPUT -s 127.2.0.0/16 -j DROP
iptables -I INPUT -s 127.3.0.0/16 -j DROP
封整个段的命令是
iptables -I INPUT -s 127.0.0.0/8 -j DROP
封几个段的命令是
iptables -I INPUT -s 127.0.1.0/24 -j DROP
iptables -I INPUT -s 127.0.2.0/24 -j DROP
这里我选择的是CentOS,当然,版本你可以自己选择,官网地址 http://www.centos.org
当然,有一点要值得注意,就是32位和64位的选择。如果机器符合64位,那就没必要用32位的
安装这里就没什么好讲的了,尽量最小化安装,留个“开发工具”就可以了!
至于分区,google一下,很多!但我们在第一次接触时,尽量选择默认分区。先顺利的达成应用,以后再慢慢研究尚可。这能增加你的信心和学习效率!
二、AMP的安装和配置、优化
也就是 apache、mysql、php
我的学习过程是,用一个集成的安装包,而不是一上来就挨个的那样配置,会对信心大打折扣,并且引出的问题会很多!
这里,我推荐的是:LAMPP 官方地址: http://www.apachefriends.org/zh_cn/xampp-linux.html
下载源码包,然后解压进行安装、启动
wget http://nchc.dl.sourceforge.net/s ... linux-1.6.8a.tar.gz
tar xvfz xampp-linux-1.6.8a.tar.gz -C /opt
/opt/lampp/lampp start
此时,lampp组件就成功启动了,但它并不是每次随系统启动
ln -s /opt/lampp/lampp /etc/rc.d/rc3.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc4.d/S99lampp
ln -s /opt/lampp/lampp /etc/rc.d/rc5.d/S99lampp
这样,就OK了!
然后我们来重启服务器,看下成功与否
shutdown -r now
——————————————————————————————————————————
但这个时候是比较危险的,如果你的服务器已经在公网的话,那么你需要马上执行下面的命令,根据提示,设定密码。具体的可参照上面给出的lampp官方说明
/opt/lampp/lampp security
——————————————————————————————————————————
开启 eAccelerator
vi /opt/lampp/etc/php.ini
查找 eAccelerator 将前面的 # 去掉,重启apache即可
另外,参数可以默认即可,当然,你也可以改一下,比如我把 eaccelerator.shm_size 修改为 32
意思是eAccelerator缓存可用的共享内存数量为32M
——————————————————————————————————————————
这个时候,实质上,你的LAMP已经是基本可以应用了!但有一点你要知道,这个组件默认是没有zend的,你可以再另外安装配置
wget http://网址/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.2.2-linux-glibc21-i386
./install.sh
在Please specify the location for installing ZendOptimizer:提示后输入ZendOptimizer安装路径,例如/data/webserver/zend
在Confirm the location of your php.ini file:提示后输入php.ini文件所在目录,例如/data/webserver/php/etc
在Specify the full path to the Apache control utility (apachectl):提示输入apachectl绝对路径,例如/data/webserver/apache/bin/apachectl
——————————————————————————————————————————
时间差问题
在php.ini添加 (eaccelerator下边)
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
date.timezone = Etc/GMT-8
——————————————————————————————————————————
修改mysql最大连接数
my.cnf
在 [mysqld] 下面加入一行
max_connections = 1500
——————————————————————————————————————————
伪静态
打开apache的配置文件(httpd.conf)
找到
#LoadModule rewrite_module modules/mod_rewrite.so
把前面的#去掉
然后找到AllowOverride None
将其全部改成AllowOverride All
即可支持伪静态功能
在bbs等站点根目录下放置相应htaccess规则即可。
——————————————————————————————————————————
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-default.conf 值默认
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf 这个就是apache虚拟主机的配置文件了
去掉前边的# 按照相关原则进行合理配置!
影响最大的是 httpd-mpm.conf
<IfModule prefork.c>
ServerLimit 2000
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
这是我的配置
虚拟主机配置
#Include conf/extra/httpd-vhosts.conf 这个就是apache虚拟主机的配置文件了
<VirtualHost *:80>
ServerAdmin
DocumentRoot /opt/lampp/htdocs/wwwroot/bbs (网站目录)
ServerName bbs.123.com (域名)
ServerAlias bbs2.123.com (别名)
ErrorLog logs/bbs.123.com-error_log
CustomLog logs/bbs.123.com-access_log common
</VirtualHost>
现在,bbs.123.com和bbs2.123.com 即可同时访问这个目录,那么如果你不想让 bbs2 访问,那么去掉 ServerAlias bbs2.123.com 这行就可以了
——————————————————————————————————————————
三、安全方面的问题
这个一看就知道什么意思吧?
修改 Options Indexes FollowSymLinks ExecCGI Includes
为 Options FollowSymLinks Includes
隐藏apache版本相关信息 (错误页面)
添加到httpd.conf文件结尾即可:
ServerSignature Off
ServerTokens Prod
提升PHP安全性
php.ini
找到:
disable_functions =
设置为:
disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,ini_restore
disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
这里我给出了两组,根据你自己需求写吧
——————————————————————————————————————————
关闭 ipv6 以最大限度保证安全和快速
ifconfig -a 列出全部网络接口信息
sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态
vi /etc/modprobe.conf ← 修改相应配置文件,添加如下行到文尾:
alias net-pf-10 off
alias ipv6 off
shutdown -r now ← 重新启动系统,使设置生效
——————————————————————————————————————————
如果你安装了X,那么想让linux默认不启动X,而是启动字符文本....
etc/inittab 文档中,将 id:5改成3即可
(在/etc/inittab修改运行等级为5是系统开机进入X windows,运行等级为3是系统开机进入文本。)
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
字符终端模式下启动x-windows:
startx
——————————————————————————————————————————
ARP绑定:
为了开机启动
vi /etc/rc.d/rc.local 增加
arp -s 网关IP 网关MAC
arp -s 服务器IP 服务器MAC
——————————————————————————————————————————
SYN、DDOS的解决办法 (没有硬防的情况下)
这个只能抵御,不能本质上防范
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
原帖为: http://linux.chinaunix.net/bbs/thread-1045310-1-2.html (2楼、5楼)
如果你有幸能分析出攻击者的真实肉机IP地址
那么你可以同样通过linux防火墙来封掉他的IP地址或IP段,比如
单个IP的命令是
iptables -I INPUT -s 127.0.0.1 -j DROP
封IP段的命令是
iptables -I INPUT -s 127.1.0.0/16 -j DROP
iptables -I INPUT -s 127.2.0.0/16 -j DROP
iptables -I INPUT -s 127.3.0.0/16 -j DROP
封整个段的命令是
iptables -I INPUT -s 127.0.0.0/8 -j DROP
封几个段的命令是
iptables -I INPUT -s 127.0.1.0/24 -j DROP
iptables -I INPUT -s 127.0.2.0/24 -j DROP