centos服务器安装后一系列配置参考(centos 6.x)

iptables

centos 6.x的iptables默认配置文件,开启必要的ssh,icmp/ping,不接受其它连接,有需要开放的端口再做手工开启;这是科学的。

不过,似乎,有些vps等环境下默认是空的,即接受任意连接;甚至没有安装iptables。这时,建议自行yum安装,并使用如下的默认配置文件,写入到 /etc/sysconfig/iptables,然后重启iptables。

# Generated by iptables-save v1.4.7 on Sat Dec 17 10:11:38 2011
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

注意:默认拒绝FORWARD转发,果真有需要请自行开放。

sshd: 端口

ssh的服务器端,重要性不需多讲。

其主配置文件 /etc/ssh/sshd_config  (注意不是 /etc/ssh/ssh_config),下面sshd相关配置都在该文件上修改

改一下监听端口,虽然刻意扫描你,还是没的跑,但起码隐藏了一点点。大概13行,Port指令,默认是注释掉的,取消注释,将其后端口号22改成你想要改的,下面以12345为例。注意不要超过65535,不要使用其它已监听端口

Port 12345

[至关重要] iptables里打开相关端口,不要断开当前连接、重启sshd 服务,保存iptables配置到磁盘(以备下次开机时自动生效)

# iptables -I INPUT 4 -m state --state NEW -p tcp --dport 12345 -j ACCEPT
# /etc/init.d/sshd restart
# /etc/init.d/iptables save

再开一个ssh客户端测试连接,确保改后的端口可以连接。(即使已改过端口,当前连接也还是会保持的)

指定自定义端口的ssh连接: ssh -p 12345  username@your.host.ip

sshd: 用户白名单

限制一下允许通过ssh远程登录的用户名(白名单),可以在文件结尾增加如下一行

AllowUsers user1 user2 user3

其中的user1 user2 user3 是允许通过ssh远程登录的用户,多个用户使用空格分隔。当然,你要事先创建这些普通用户,不然下次就连不上了。

sshd: 禁止root用户直接通过ssh登录

被暴力破解root密码是一件经常遇到的事情,所以严重推荐禁止掉,尤其是使用默认22端口时。增加下一行配置

PermitRootLogin no

日期时间的自动同步

首先确保rdate已安装,使用美国授时中心服务器,加入到crontab,每周日同步一次

# crontab -e
* * * * 0 rdate -s time.nist.gov

详细可参考 linux下日期时间自动同步设置(rdate,ntpdate两种方法)

yum源

epel

似乎centos 6.x的某一个版本起,其官方yum默认包含了epel-release的yum源,直接安装即可。

yum install epel-release

nginx

如果使用nginx的话,可以使用nginx的官方yum源。当然里面只有nginx,没有别的包,所以不会破坏centos原装包的依赖关系。

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

详细参考nginx官方yum源说明 http://nginx.org/en/linux_packages.html#stable

selinux

这货很强悍,然而有时也很麻烦,尤其是不够熟的时候,可以考虑关闭,配置在文件 /etc/sysconfig/selinux

SELINUX=disabled
或
SELINUX=permissive

apache/httpd

取消默认欢迎页,/etc/httpd/conf.d/welcome.conf 注释掉相关配置行,但不建议删除该文件。因为yum update更新后,这个文件可能被自动恢复。

添加文件 /etc/httpd/conf.d/vhost.conf, 配置虚拟站点,但建议第一个设置成空站点。因为第一个VirtualHost是默认站点,没有匹配的host主机名,都会被apache丢给默认站点。

NameVirtualHost *:80
<VirtualHost *:80>
        ServerName default.host.com
        DocumentRoot "/var/www/html/default/html/"
        <Directory "/var/www/html/default/html/">
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        <IfModule mod_php5.c>
        php_admin_value open_basedir "/tmp/:/var/www/html/default/html"
        </IfModule>
</VirtualHost>

<VirtualHost *:80>
        ServerName www.vhost1.com
        DocumentRoot "/var/www/html/vhost1.com/www/"
        <Directory "/var/www/html/vhost1.com/www/">
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        <IfModule mod_php5.c>
        php_admin_value open_basedir "/tmp/:/var/lib/php/session:/var/www/html/vhost1.com/"
        </IfModule>
</VirtualHost>

启用http压缩,gzip压缩是否有必要启用,观点并不一致(CentOS默认配置是不启用的),如需启用,确认一下 apache主配置文件中(大约1011行)已经启用了mod_deflate.so模块,新增文件 /etc/httpd/conf.d/http_gzip.conf ,内容如下

<ifmodule mod_deflate.c>
#压缩率, 6是建议值
DeflateCompressionLevel 6
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
</ifmodule>

禁止添加默认页面编码的http头,大概 759行

AddDefaultCharset UTF-8

最好注释掉,让浏览器自行选择编码,而不是弄巧成拙的强制UTF-8编码,造成非UTF-8页面全部乱码掉

MySQL-Server

配置参考 一份生产环境下MySQL服务配置优化参考样本 (请按硬件及负载酌情修改)

备份脚本,加入到crontab中,定时执行。注意其中备份存储目录、待备份数据库列表、及备份用户账号密码

#!/bin/bash
# Program:
#      auto backup mysql database
# History:
# 2012/05/14    fengyqf First release
#backup folder, with the last slash "/"
backup_folder="/home/user/backup/mysql/"
filename=`date +_%Y%m%d_%N`

for db in db1 db2 db3
do
mysqldump -hlocalhost --opt -e --max_allowed_packet=1048576 --net_buffer_length=16384 -uroot -pYourMysqlRootPassword $db |gzip > $backup_folder$db$filename.sql.gz
done

其它置参考

ulimit, 文件描述符 http://www.path8.net/tn/archives/2024

sysctl, 内核优化 #TODO#

 




coded by nessus

发表评论

电子邮件地址不会被公开。