大纲:

一、系统安装
二、编译安装基本环境
三、配置虚拟主机及基本性能调优
四、基本安全设置
五、附录及相关介绍
一、系统约定

  软件源代码包存放位置
  
  /usr/local/src
  
  源码包编译安装位置(prefix)
  
  /usr/local/software_name
  
  脚本以及维护程序存放位置
  
  /usr/local/sbin
  
  MySQL 数据库位置
  
  /var/lib/mysql
  
  Apache 网站根目录
  
  /data/wwwroot
  
  Apache 虚拟主机日志根目录
  
  /data/logs/www
  
  Apache 运行账户
  
  www:www
  
  yum RPM包信息文件
  
  /etc/yum.list
  
二、系统环境部署及调整
1.
检查系统是否正常
# more/var/log/messages
(检查有无系统内核级错误信息)
# dmesg
(检查硬件设备是否有错误信息)
# ifconfig
(检查网卡设置是否正确)
# ping
(检查网络是否正常)
2.
关闭不需要的服务
# ntsysv
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
crond
Unix
下的一个传统程序,该程序周期地运行用户调度的任务。比起传统的
Unix
版本,
Vixie
版本添加了不少属性,而且更安全,配置更简单
irqbalance
仅当服务器
CPU
S.M.P
架构或支持双核心、
HT
技术时,才需开启,否则关闭
microcode_ctl
可以编码以及发送新的微代码到
kernel
以更新
Intel IA32
系列处理器
mysql
一个快速高效可靠的轻型
SQL
数据库引擎
network
激活/关闭启动时的各个网络接口
网络。
random
保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。
sendmail
邮件服务器
sshd
OpenSSH
守护进程。用于在不可信网络上提供安全的连接通道
Syslog
syslog
是操作系统提供的一种机制,守护程序通常使用这种机制将各种信息写到各个系统日志文件。通常应该启动该服务
3.
TCP/IP
网络参数进行调整,加强抗
SYNFlood
能力
# echo 'net.ipv4.tcp_syncookies = 1'>> /etc/sysctl.conf
# sysctl -p
4.
配置
yum
,导入
CentOS RPM-GPG-KEY
#rpm --import  
Or
rpm ?import/etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-5
# yum list | tee /etc/yum.list
5.
重新启动系统
# init 6
6.
使用
yum
程序安装所需开发包(以下为标准的
RPM
包名称)
#yum install ntp vim-enhanced gccgcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel
ncurses-devel zlib-devel libjpeg-devellibpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-develkernel
7.
定时校正服务器时钟,定时与中国国家授时中心授时服务器同步
# crontab -e
加入一行:
15 3 * * */usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
8.
源码编译安装所需包
(Source)
(1)
GD2
gd
库是
php
处理图形的扩展库,
gd
库提供了一系列用来处理图片的
API
,使用
GD
库可以处理图片,或者生成图片。
在网站上
GD
库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。
# cd /usr/local/src
# wget
# tar xzvf gd-2.0.34.tar.gz
# cd gd-2.0.34
# ./configure --prefix=/usr/local/gd2
#
配置安装路径
# make
# make install
(2) LibXML2
Libxml2
是一个
xml c
语言版的解析器,本来是为
Gnome
项目开发的工具,是一个基于
MITLicense
的免费开源软件。它除了支持
c
语言版以外,还支持
c++
PHP
Pascal
Ruby
Tcl
等语言的绑定,能在
Windows
linux
Solaris
MacOsX
等平台上运行
# cd /usr/local/src
# wget
http://xmlsoft.org/sources/libxml2-2.6.32.tar.gz
# tar zvxf libxml2-2.6.32.tar.gz
# cd libxml2-2.6.32
# ./configure--prefix=/usr/local/libxml2
# make
# make install
(3) LibMcrytpt
libmcrypt
是编码函数库,前身是
mcrypt
# cd /usr/local/src
#wget
http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
# tar zvxf libmcrypt-2.5.8.tar.gz
# cd libmcrypt-2.5.8
# ./configure --prefix=/usr/local/libmcrypt
# make
# make install
(4) Zlib
zlib
是一套公开源代码的压缩,解压缩的函数库,提供了很多文件操作的方法,但是他不是一套类库,所以有兴趣的人都可以把他进行封装,实现自己的类库,和更高层的接口。
# cd /usr/local/src
# wget
http://down.itlearner.com/downsoft/tools/zlib-1.2.3.tar.gz
# tar xzvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure --prefix=/usr/local/zlib
# make
# make install
(5) Apache
日志截断程序
Cronolog
是一个小巧高效的日志文件处理工具,可以实现自动的按规则生成周期性的日志文件
# cd /usr/local/src
# wget
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure?prefix=/usr/local/cronolog
# make
# make install
10.
升级
OpenSSL
OpenSSH
Openssl
包括与加密相关的管理工具和库文件,可以向其它软件包提供加密支持,尤其是
OpenSSH
和网络浏览器
(
为了浏览安全的
https
网站
).
OpenSSH
是一组用于安全地访问远程计算机的连接工具。它可以作为
rlogin
rsh rcp
以及
telnet
的直接替代品使用。更进一步,
其他任何
TCP/IP
连接都可以通过
SSH
安全地进行隧道
/
转发。
OpenSSH
对所有的传输进行加密,
从而有效地阻止了窃听、
连接劫持,以及其他网络级的***。
# cd /usr/local/src
# wget
# wget
# tar xzvf openssl-0.9.8h.tar.gz
# cd openssl-0.9.8h
# ./config --prefix=/usr/local/openssl
# make
# make test
# make install
# cd ..
# tar xzvf openssh-5.0p1.tar.gz
# cd openssh-5.0p1
# ./configure
\
"--prefix=/usr" \
"--with-pam" \
"--with-zlib" \
"--sysconfdir=/etc/ssh"\
"--with-ssl-dir=/usr/local/openssl"\
"--with-zlib=/usr/local/zlib"\
"--with-md5-passwords"
# make
# make install
代码说明:
"--with-pam"
à
启用
PAM(PluggableAuthentication Modules)
支持,使用此选项后还必须在
sshd_config
中开启
UsePAM
指令
"--sysconfdir=/etc/ssh"
à
配置文件目录
[PREFIX/etc]
"--with-md5-passwords"
à
支持读取
/etc/passwd
/etc/shadow
中经过
MD5
加密的口令
1
)禁用
SSH V1
协议
SSH
是指
Secure Shell
SSH
协议族由
IETF
InternetEngineering Task Force
Network Working Group
制定,
SSH
协议的内容
SSH
协议是建立在应用层和传输层基础上的安全协议。
SSH
(SecureShell)
是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用
SSH
协议可以有效防止远程管理过程中的信息泄露问题。通过
SSH
,可以把所有传输的数据进行加密,也能够防止
DNS
欺骗和
IP
欺骗。
SSH
,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
SSH
有很多功能,它既可以代替
Telnet
,又可以为
FTP
Pop
、甚至为
PPP
提供一个安全的
"
通道
"
#vi /etc/ssh/sshd_config
找到:
#Protocol 2,1
改为:
Protocol 2
#
2
)禁止
root
直接登录
#
此处先建立一个普通系统用户:
#
# useradd
username
#
# passwd
username
#
找到:
#
#PermitRootLoginyes
#
改为:
#
PermitRootLogin no
3
)禁用
GSSAPI
#vi /etc/ssh/sshd_config
找到以下两行,并将他们注释:
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
4
)禁用
DNS
名称解析
找到:
#UseDNS yes
改为:
UseDNS no
5
)禁用客户端
GSSAPI
   # vi /etc/ssh/ssh_config
找到:
GSSAPIAuthentication yes
将这行注释掉。
最后,确认修改正确后重新启动
SSH
服务
  
# servicesshd restart
   # ssh -V
确认
OpenSSH
以及
OpenSSL
版本正确。
以上
SSH
配置可利用以下脚本自动修改:
代码:
#init_ssh
ssh_cf="/etc/ssh/sshd_config"
sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
#client
sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
echo "ssh is init is ok.............."
三、编译安装
L.A.M.P
环境
1.
下载软件
# cd /usr/local/src
# wget
#wget
# wget
#wget
#wget
2.
编译安装
MySQL
MySQL
是一个真正的多用户、多线程
SQL
数据库服务器,它是一个客户机
/
服务器结构的实现。
MySQL
是现在流行的关系
数据库
中其中的一种,相比其它的数据库管理系统
DBMS
来说,
MySQL
具有小巧、功能齐全、查询迅捷等优点。
MySQL
主要目标是快速、健壮和易用。
查看软件安装模块可以进入解压目录下执行:
#./configure ?help |less
若是以前编译过了,重新编译前执行
:
#
make clean
查看分析你的
CPU
型号
:
  
http://gentoo-wiki.com/Safe_Cflags
查找您的
GCC
编译参数
.
确定系统
CPU
类型:
# cat /proc/cpuinfo | grep "model name"
执行后会看到系统中
CPU
的具体型号,记下
CPU
型号。
# tar xzvf mysql-5.0.51b.tar.gz
# cd mysql-5.0.51b
à
#
./configure \
        "--prefix=/usr/local/mysql" \
        "--localstatedir=/data/mysql/data"\
        "--with-comment=Source" \
        "--with-server-suffix=-learningsky"\
        "--with-mysqld-user=mysql" \
        "--without-debug" \
        "--with-big-tables" \
        "--with-charset=utf8" \
       "--with-collation=utf8_chinese_ci" \
        "--with-extra-charsets=all" \
        "--with-pthread" \
        "--enable-static" \
        "--enable-thread-safe-client" \
       "--with-client-ldflags=-all-static" \
       "--with-mysqld-ldflags=-all-static" \
        "--enable-assembler" \
        "--without-isam" \
        "--without-innodb" \
        "--without-ndb-debug"
#make
#make install
# useradd mysql -d /data/mysql -s/sbin/nologin
#/usr/local/mysql/bin/mysql_install_db--user=mysql
#cd /usr/local/mysql
#chown -R root:mysql .
#chown -R mysql /data/mysql/data
#cp share/mysql/my-huge.cnf /etc/my.cnf
#cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
#chmod 755 /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld
#/etc/rc.d/init.d/mysqld start
#cd /usr/local/mysql/bin
#for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
或用代码编译
à
# vi mysql.sh
代码:
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
./configure \
        "--prefix=/usr/local/mysql" \
        "--localstatedir=/data/mysql/data"\
        "--with-comment=Source" \
        "--with-server-suffix=-learningsky"\
        "--with-mysqld-user=mysql" \
        "--without-debug" \
        "--with-big-tables" \
        "--with-charset=utf8" \
        "--with-collation=utf8_chinese_ci"\
        "--with-extra-charsets=all" \
        "--with-pthread" \
        "--enable-static" \
        "--enable-thread-safe-client" \
       "--with-client-ldflags=-all-static" \
       "--with-mysqld-ldflags=-all-static" \
        "--enable-assembler" \
        "--without-isam" \
        "--without-innodb" \
        "--without-ndb-debug"
make && make install
mkdir -p /data/mysql/data
useradd mysql -d /data/mysql -s /sbin/nologin
/usr/local/mysql/bin/mysql_install_db --user=mysql
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql /data/mysql/data
cp share/mysql/my-huge.cnf /etc/my.cnf
cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
/etc/rc.d/init.d/mysqld start
cd /usr/local/mysql/bin
for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
#sh mysql.sh
即可开始编译
代码说明:
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
./configure \
        "--prefix=/usr/local/mysql" \
       "--localstatedir=/data/mysql/data" \
#
指定默认数据库文件保存目录
        "--with-comment=Source" \
        "--with-server-suffix=-
mylinuxsky
" \
#
服务器后缀名改成主机后缀
        "--with-mysqld-user=mysql" \
#MySQL
用户名
        "--without-debug" \
#
去除
debug
排除故障模式
        "--with-big-tables" \
#
在32位平台上支持大于4
G
行的表
        "--with-charset=utf8" \
#
指定你所需要的字符集参数(
utf8,utf8...
)
       "--with-collation=utf8_chinese_ci" \
#
字符集校正码(
utf8_chinese_ci
,...)
        "--with-extra-charsets=all" \
#
添加所有文字符支持
        "--with-pthread" \
#
强制使用
pthread
(posix
线程库
)
        "--enable-static" \
#
使用静态方式
        "--enable-thread-safe-client" \
#
以线程方式编译客户端
       "--with-client-ldflags=-all-static" \
#
以纯静态方式编译客户端
       "--with-mysqld-ldflags=-all-static" \
#
以纯静态方式编译服务端
        "--enable-assembler" \
#
使用一些字符函数的汇编版本
        "--without-isam" \
#
去掉
isam
表类型支持,现在很少用了,
isam
表是一种依赖平台的表
       "--without-innodb" \
#
去掉
innodb
表支持,
innodb
是一种支持事务处理的表
,
适合企业级应用
     "--without-ndb-debug"
#
去除
ndb-debug
排除故障模式
make && make install
mkdir -p /data/mysql/data
useradd mysql -d /data/mysql -s /sbin/nologin
/usr/local/mysql/bin/mysql_install_db --user=mysql
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql /data/mysql/data
cp share/mysql/my-huge.cnf /etc/my.cnf
cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
#
mysql
加入到服务里去
/etc/rc.d/init.d/mysqld start
cd /usr/local/mysql/bin
for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
#sh mysql.sh
即可开始编译
.
3.
编译安装
Apache
Apache
是目前互联网上最流行的
Web
服务器,它可以运行在几乎所有广泛使用的计算机平台上。
# cd /usr/local/src
# tar zxvf httpd-2.2.9.tar.gz
# cd httpd-2.2.9
# ./configure \
        "--prefix=/usr/local/apache2" \
       "--with-included-apr" \
        "--enable-so" \
        "--enable-deflate=shared" \
        "--enable-expires=shared" \
        "--enable-rewrite=shared" \
        "--enable-static-support" \
   
"--disable-userdir"
# make
# make install
# echo '/usr/local/apache2/bin/apachectlstart
' >> /etc/rc.local
#
开机的时候自动启动
apache
服务器
代码说明:
#./configure\
"--prefix=/usr/local/apache2" \
"--with-included-apr" \
#
在编译时强制使用当前源代码中绑定的
APR
版本,仅在
2.2.3
以后的版本中可用
"--enable-so" \
#
核心能够装载
DSO
(即对单个模块的动态加载)
"--enable-deflate=shared" \
#
支持网页压缩
"--enable-expires=shared" \
#
支持
HTTP
控制
"--enable-rewrite=shared" \
#
支持
URL
重写
"--enable-static-support" \
#
使用静态连接(默认为动态连接)编译所有二进制支持程序。
"--disable-userdir"
#
禁止用户从自己的主目录中提供页面
4.
编译安装
PHP
PHP
的全名为
HypertextPreprocessor
,它是个被广泛运用在网页程式撰写的语言,尤其是它能适用于网页程式的开发及能够嵌入
HTML
文件之中,它的语法和
C
Java
Perl
等语法相似,且学习起来更容易上手。
PHP
的目地是为了能使网站开发者可以快速地撰写动态网页。
# cd /usr/local/src
# tar zxvf php-5.2.6.tar.gz
# cd php-5.2.6
#./configure \
        "--prefix=/usr/local/php" \
        "--with-apxs2=/usr/local/apache2/bin/apxs"\
       "--with-config-file-path=/usr/local/php/etc" \
        "--with-mysql=/usr/local/mysql"\
       "--with-libxml-dir=/usr/local/libxml2" \
        "--with-gd=/usr/local/gd2" \
        "--with-jpeg-dir" \
        "--with-png-dir" \
        "--with-bz2" \
        "--with-freetype-dir" \
        "--with-iconv-dir" \
        "--with-zlib-dir " \
       "--with-openssl=/usr/local/openssl" \
       "--with-mcrypt=/usr/local/libmcrypt" \
        "--enable-soap" \
        "--enable-gd-native-ttf" \
        "--enable-ftp" \
        "--enable-mbstring" \
        "--enable-exif" \
        "--disable-ipv6" \
        "--disable-cgi" \
        "--disable-cli"
# make
# make install
# mkdir/usr/local/php/etc
# cp php.ini-dist /usr/local/php/etc/php.ini
代码说明
:
#./configure \
"--prefix=/usr/local/php" \
"--with-apxs2=/usr/local/apache2/bin/apxs" \
#
PHP
模块编译进
apache
"--with-config-file-path=/usr/local/php/etc" \
#
PHP
的主配置文件放在什么地方
,
这是个人习惯
"--with-mysql=/usr/local/mysql" \
#
指定
mysql
的路径
"--with-libxml-dir=/usr/local/libxml2" \
"--with-gd=/usr/local/gd2" \
"--with-jpeg-dir" \
"--with-png-dir" \
"--with-bz2" \
"--with-freetype-dir" \
"--with-iconv-dir" \
"--with-zlib-dir " \
"--with-openssl=/usr/local/openssl" \
"--with-mcrypt=/usr/local/libmcrypt" \
"--enable-soap" \
#
启用
soap
函数库
"--enable-gd-native-ttf" \
"--enable-ftp" \
#
启用
ftp
函数库
"--enable-mbstring" \
#
启用多字节字符串函数库
"--enable-exif" \
#
启用
exif
函数库
"--disable-ipv6" \
#
禁掉
ipv6
协议
"--disable-cgi" \
#
禁掉
cgi
支持
"--disable-cli"
#
禁掉
cli
模式,提升速度和安全性
.
#
5.Xcache
的安装
.
XCache
是一套华人所开发的
PHP
加速器,号称稳定性高。
  
#tar xvf xcache-1.2.2.tar.gz
#/usr/local/php/bin/phpize
  ./configure --enable-xcache --enable-xcache-coverager--with-php-config=/usr/local/php/bin/php-config \
  --enable-inline-optimization --disable-debug
#vi/usr/local/php/etc/php.ini
(
将以下内容加入php.ini最后面)
代码:
[xcache-common]
zend_extension      =/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
xcache.admin.user   = "admin"
;
如何生成
md5
密码
: echo -n"password"| md5sum
xcache.admin.pass   = "fb88eaa6f3c3bc09b5a66f16ccac3964"  #
密码为
hmg4802959
[xcache]
; Change xcache.size to tune the size of the opcode cache
xcache.size         = 24M
xcache.shm_scheme   = "mmap"
xcache.count        = 4
xcache.slots        = 8K
xcache.ttl          = 0
xcache.gc_interval  = 0
; Change xcache.var_size to adjust the size of variable cache
xcache.var_size     = 8M
xcache.var_count    = 1
xcache.var_slots    = 8K
xcache.var_ttl      = 0
xcache.var_maxttl   = 0
xcache.var_gc_interval =     300
xcache.test         = Off
xcache.readonly_protection = On
xcache.mmap_path    = "/tmp/xcache"
xcache.coredump_directory =   ""
xcache.cacher       = On
xcache.stat         = On
xcache.optimizer    = Off
[xcache.coverager]
xcache.coverager    = On
xcache.coveragedump_directory = ""
6.
安装
Zend Optimizer
ZendOptimizer
用优化代码的方法来提高
PHP 4.0
应用程序的执行速度。实现的原理是对那些在被最终执行之前由运行编译器
(Run-TimeCompiler)
产生的代码进行优化
# cd /usr/local/src
# tarxzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
# ./ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh
安装
Zend Optimizer
过程的最后不要选择重启
Apache
7.
整合
Apache
PHP
# vi /usr/local/apache2/conf/httpd.conf
找到:
AddType application/x-gzip .gz .tgz
在该行下面添加
AddType application/x-httpd-php .php
AddOutputFilterByType DEFLATE text/htmltext/plain text/xml
找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
将该行改为
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>
找到:
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf
#Include conf/extra/httpd-default.conf
去掉前面的
“#”
号,取消注释。
注意:以上
4
个扩展配置文件中的设置必须按照相关原则进行配置!
修改完成后保存退出。
# /usr/local/apache2/bin/apachectl restart
8.
查看确认
L.A.M.P
环境信息、提升
PHP
安全性
在网站根目录放置
phpinfo.php
脚本,检查
phpinfo
中的各项信息是否正确。
<?php
    phpinfo();
   ?>
确认
PHP
能够正常工作后,在
php.ini
中进行设置提升
PHP
安全性。
# vi /usr/local/php/etc/php.ini
找到:
disable_functions =
设置为:
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,error_log,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server
注:这些禁用的参数都是系统参数,启用对系统安全有危害!
9.apache
配置
Apache
虚拟主机配置解释:
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin   
#
网站管理员邮件地址
    DocumentRoot "/data/www/wwwroot"
#
网站存放的根目录
    ServerName      
#
网站域名
    ServerAlias  mylinuxsky.test.com
#
网站域名别名
#   ErrorLog
"/data/logs/error-bbs.learningsky.org_log"
#
记录错误日志
#  CustomLog "|/usr/local/cronolog
/data/logs/access_bbs.learningsky.org.%Y%m%d"combined env=!dontlog
#
记录网
站日志
</VirtualHost>
基本的性能优化:
#vi/usr/local/apache2/conf/extra/httpd-default.conf
Timeout 15
KeepAlive Off
MaxKeepAliveRequests 50
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
ServerTokens Prod
ServerSignature Off
HostnameLookups Off
#vi/usr/local/apache2/conf/extra/httpd-mpm.conf
<IfModulempm_prefork_module>
   
ServerLimit        2000
   
StartServers         10
   
MinSpareServers      10
   
MaxSpareServers     15
   
MaxClients         2000
   
MaxRequestsPerChild  10000
</IfModule>
日志相关配置:
1.
日志
分割:安装
cronolog
软件
2.
过滤掉无需记录的日志
#vi httpd.conf
找到:
LogFormat"%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined
后面加入如下:
# filter the localhost visit
    SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
    # filter some special directories
    SetEnvIf Request_URI "^ZendPlatform.*$" dontlog
    SetEnvIf Request_URI \.healthcheck\.html$ dontlog
    SetEnvIf Remote_Addr "::1" dontlog
    SetEnvIf Request_URI "\.getPing.php$"dontlog
    SetEnvIf Request_URI "^/error\.html$" dontlog
    SetEnvIf Request_URI "\.gif$" dontlog
    SetEnvIf Request_URI "\.jpg$" dontlog
    SetEnvIf Request_URI "\.css$" dontlog
其它根据自己的需要做一些调整。
另一种日志不记录图片的方法:
<FilesMatch"\.(ico|gif|jpg|swf)">
SetEnv dontlog 1
</FilesMatch>
CustomLog logs/access_log combined env=!dontlog
3.
日志处理
压缩每天的日志
30 3 * * */usr/bin/gzip -f /data/logs/access_www.linuxtone.org.`date -d yesterday+%Y%m%d.log
删除前三天的日志
30 5 * **/usr/bin/find /data/logs/ -nameaccess_*.gz  -mtime +3 |xargs -r /bin/rm -f
4.
利用awstats分析日志
http://bbs.linuxtone.org/thread-56-1-1.html
Apache
防盗链:
 

RewriteEngineOn

 

RewriteCond%{HTTP_REFERER} !^http://learningsky.com/.*$ [NC]

 

RewriteCond%{HTTP_REFERER} !^http://learningsky.com$ [NC]

 

RewriteCond%{HTTP_REFERER} !^http://www.learningsky.com/.*$ [NC]

 

RewriteCond%{HTTP_REFERER} !^http://www.learningsky.com$ [NC]

 

RewriteRule.*\.(

gif|jpb|png|css|js|swf)$ http://www.learningsky.com/about/nolink.png
[R,NC]

 

 

 

防盗链配置的说明

 

 

 

1.红色部分:表示自己的信任站点。对我的站点来说,设置为 http://www.learningsky.com
http://learningsky.com

 

2.鲜绿色部分: 要保护文件的扩展名(以|分开)。以这些为扩展名的文件,可以加入你想见如的防盗链格式文件,必须通过红色标注的网址引用,才可以访问。

 

3.蓝色部分:盗链后的重定向页面。用以输出警示信息,这张图片应该尽可能的小。例如我的警示图片是 http://www.learningsky.com/about/nolink.png为了简单处理的原因,我的绿色字体部分,要保护的图片扩展中,没有 .png

的图片,而警示图片是 .png的。我站内没有 .png的其他图片)

 

当然也可以换成http://www.learningsky.com

下相应的下载页面这样不仅屏蔽/禁止非本网站的盗链访问,还将盗链请求转给自身的网站,让读者知道谁是真正的原创作者

 

 

 

基本安全设置:

 

 

 

1.
iptables封锁相关端口(推荐读CU白金大哥的两小时玩转iptables)

 

   2.SSH全安(修改SSH端口限制来源IP登陆,或者参考

http://bbs.linuxtone.org/thread-106-1-1.html)

 

   3.LinuxArp***策略(http://bbs.linuxtone.org/thread-41-1-1.html)

 

   4.注意(还是那句老话:安全工作从细节做起!)

三、服务器安全性设置
设置系统防火墙
# touch /usr/local/sbin/fw.sh
将以下脚本命令粘贴到fw.sh 文件中。
#!/bin/bash
# Stop iptables servicefirst
service iptables stop
# Load Passive FTPKernel modules
/sbin/modprobeip_conntrack_ftp
/sbin/modprobeip_nat_ftp
# Inital chains defaultpolicy
/sbin/iptables -F -tfilter
/sbin/iptables -P INPUTDROP
/sbin/iptables -POUTPUT ACCEPT
# Enable Native NetworkTransfer
/sbin/iptables -A INPUT-i lo -j ACCEPT
# Accept EstablishedConnections
/sbin/iptables -A INPUT-m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMP Control
/sbin/iptables -A INPUT-p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# WWW Service
/sbin/iptables -A INPUT-p tcp --dport 80 -j ACCEPT
# FTP Service
/sbin/iptables -A INPUT-p tcp --dport 21 -j ACCEPT
# SSH Service
/sbin/iptables -A INPUT-p tcp --dport 22 -j ACCEPT
# chmod 755 /usr/local/sbin/fw.sh
# echo '/usr/local/sbin/fw.sh' >>/etc/rc.local
# /usr/local/sbin/fw.sh
参考文献:
LinuxTone.Org(基于centos构建高性能的lamp平台):
LinuxTone.Org(Apache相关问题专题贴):
l
Discuz!公司Nanu先生文章的相关链接: