上手VPS之系统优化

By | 2013年3月6日

新买的VPS,512M内存,400GB带宽,59G硬盘空间。系统是Centos 6.3 64位(主要是观察下低内存64位系统性能如何,日后再换)。

第一步:修改root密码

我的vps有控制面板,提供快速修改root密码的功能。也可以先登录,然后使用passwd命令来修改!

第二步:修改sshd配置文件(更改端口,禁用root登录)

Port 2234
ListenAddress 0.0.0.0
PermitRootLogin no
MaxSession 5
LoginGraceTime 60
PrintMotd no

创建一个普通用户,用于登录SSH

#增加用户
useradd user1
#密码设置
passwd user1

重启ssh服务service sshd restart,然后关闭当前连接,测试使用root是否能登录,如果不能登录了,那就对了,使用user1用户登录进去,再使用su命令切换到root用户。

对了,我的vps默认把iptables关了,所以我把修改ssh配置文件放在了前面,后面再调整iptables配置。

第三步:查看系统各种参数

了解下自己的vps的一些参数信息,是否和购买的一致,主要是内存和硬盘信息。

硬盘信息:df

内存信息:free –m

Selinux:getenforce

网卡信息:ifconfig

防火墙:iptables-save

网络端口:netstat –tunlpa

资源管理器:top

主机名:hostname

系统时间:date

开机启动服务项:chkconfig –list

经过查看,确定需要修改的信息有:SeLinux(默认disable了),iptables-save,date(VPS在米国,需要修改时区和时间),chkconfig。

第四步:iptables防火墙规则

我的规则如下/etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
#PING(默认拒绝所有ping,如果需要开启,将DROP改成ACCEPT)
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
#SYN
-A INPUT -i eth0 -p tcp -m tcp --sport 1:1023 --dport 1:1023 --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL FIN,URG,PSH -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL NONE -j DROP
-A INPUT -i eth0 -p tcp -m state --tcp-flags SYN,ACK SYN,ACK --state NEW -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ACK,FIN FIN -j DROP
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -m state --state INVALID -j DROP
#80-web
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 80 -j ACCEPT
#2234-sshd
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 2234 -j ACCEPT
#2235-FTP
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 2235 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 65400:65410 -j ACCEPT
#2236-MYSQL
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 2236 -j ACCEPT
#2237-webmin
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 2237 -j ACCEPT
#2238-VPSMate
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65534 --dport 2238 -j ACCEPT
COMMIT

大概也就这些程序会对外公开,当然这只是初步的,后期会做更多的调整。

需要注意的是,在开头的:INPUT DROP 表示默认的入站规则为Drop,即丢弃,只有后面规则中,最后是ACCEPT的才允许入站。

这样最大程度的把开放的端口限制死,想开放端口,请先手动修改/etc/sysconfig/iptables文件。

使用service iptables start命令启动防火墙。

第五步:开启SELinux

我喜欢打开SELinux…我有绝对的安全癖。遇到问题,看日志即可!

编辑文件:/etc/sysconfig/selinux。确定SELINUX=enforcing。我的VPS默认为disabled

第六步:开机启动服务项优化

我这个VPS应该是服务商优化过的,我只需要关闭一个服务:ip6tables即可。

查看所有服务:chkconfig –list

关闭指定服务:chkconfig ip6tables off

立即结束服务:service ip6tables stop

第七步:修改系统时间与时区

由于VPS在美国,默认的时间与时区都需要修改一下。

查看当前时区

date -R

先改下时区,使用下这个命令,改为东八区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改时间

date -s 20130306
date -s 10:30:00

第八步:修改VIM编辑器配置

可以参考这篇:配置VIM

#修改这个文件,默认是没有的,所以第一次其实是新建
vim ~/.vimrc

#内容为:
#显示行号
set nu
#自动缩排
set autoindent
#高亮度反白
set hlsearch
#语法校验,颜色显示
syntax on

第九步:关闭多余的TTY

修改文件:/etc/init/start-ttys.conf,将其中的/dev/tty[1-6]更改为/dev/tty[1-2]

#
# This service starts the configured number of gettys.
start on stopped rc RUNLEVEL=[2345]
env ACTIVE_CONSOLES=/dev/tty[1-2]
env X_TTY=/dev/tty1
task
script
        . /etc/sysconfig/init
        for tty in $(echo $ACTIVE_CONSOLES) ; do
                [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
                initctl start tty TTY=$tty
        done
end script

修改文件:/etc/sysconfig/init,将其中的ACTIVE_CONSOLES=/dev/tty[1-6]改为ACTIVE_CONSOLES=/dev/tty[1-2]

# color => new RH6.0 bootup
# verbose => old-style bootup
# anything else => new style bootup without ANSI colors or positioning
BOOTUP=color
# column to start "[  OK  ]" label in
RES_COL=60
# terminal sequence to move to that column. You could change this
# to something like "tput hpa ${RES_COL}" if your terminal supports it
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
# terminal sequence to set color to a 'success' color (currently: green)
SETCOLOR_SUCCESS="echo -en \\033[0;32m"
# terminal sequence to set color to a 'failure' color (currently: red)
SETCOLOR_FAILURE="echo -en \\033[0;31m"
# terminal sequence to set color to a 'warning' color (currently: yellow)
SETCOLOR_WARNING="echo -en \\033[0;33m"
# terminal sequence to reset to the default color.
SETCOLOR_NORMAL="echo -en \\033[0;39m"
# Set to anything other than 'no' to allow hotkey interactive startup...
PROMPT=yes
# Set to 'yes' to allow probing for devices with swap signatures
AUTOSWAP=no
# What ttys should gettys be started on?
ACTIVE_CONSOLES=/dev/tty[1-2]
# Set to '/sbin/sulogin' to prompt for password on single-user mode
# Set to '/sbin/sushell' otherwise
SINGLE=/sbin/sushell

重启系统即可。

第十步:调整系统打开的最大文件数

在开机启动项中写入即可。

echo 'ulimit -SHn 65535' >> /etc/rc.local

第十一步:调整系统TCP/IP参数

修改文件:/etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

#SYN队列长度
net.ipv4.tcp_max_syn_backlog = 8192

#SYN ACK重试次数
net.ipv4.tcp_synack_retries=2

#主动关闭方FIN-WAIT-2超时时间
net.ipv4.tcp_fin_timeout = 30

#TCP发送keepalive消息的频度
net.ipv4.tcp_keepalive_time = 1200

#开启TIME-WAIT重用
net.ipv4.tcp_tw_reuse = 1

#开启TIME-WAIT快速回收
net.ipv4.tcp_tw_recycle = 1

#向外连接的端口范围
net.ipv4.ip_local_port_range = 1024 65000

#最大TIME-WAIT数量,超过立即清除
net.ipv4.tcp_max_tw_buckets = 2000

#SYN重试次数
net.ipv4.tcp_syn_retries = 2

#TCP接收缓冲大小,对应最小、默认、最大
#net.ipv4.tcp_rmem = 4096 87380 4194304

#TCP发送缓冲大小,对应最小、默认、最大
#net.ipv4.tcp_wmem = 4096 16384 4194304

#最大发送套接字缓冲区大小
#net.core.rmem_max = 16777216

#最大接收套接字缓冲区大小
#net.core.wmem_max = 16777216

#当网络接口接收速率比内核处理快时允许发到队列的数据包数目
#net.core.netdev_max_backlog = 262144

#系统同时发起的TCP连接,超过导致连接超时或重传
#net.core.somaxconn = 262144

使用命令/sbin/sysctl -p,立即生效。

第十二步:更新系统

使用命令:yum update

第十三步:重启系统

使用命令:reboot

目前就这么多准备工作,接下来就是安装各种程序了,将陆续整理记录。