CentOS 是免费的,并且有着 RHEL 的稳定,因此深受各大 hosting 服务商支持,几乎所有 Linux VPS 都支持 CentOS。
一般来说如果 VPS 配置较高我会选 CentOS,配置低的话就选 Debian,当然这是个人偏好,大多数 Linux VPS 服务商也会提供 Gentoo,不过每次安装程序,升级都要编译会消耗很多资源,耗时,而且性能没有明显提高,不推荐给配置低的 VPS。
VPS 服务商一般给的操作系统版本都是最小安装版本,或者优化过的版本。每个VPS服务商提供的版本都可能不同,安装 CentOS 的系统最低要求至少 64MB 内存(纯文字界面),1GB 硬盘空间。
安装和升级系统
1、登录 VPS 安装 CentOS 5。
2、安装完毕后马上升级整个系统。
yum update
有了一个干净的系统以后,剩下来就是加强和优化 Linux。
删除不必要的软件包,服务,用户,文件等
3、删除不需要的软件包。
yum remove Deployment_Guide-en-US finger cups-libs cups bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools ypbind
rpm -qa (列出所有安装了的包)
rpm -e package (删除某个包)
rpm -qi package (查询某个包)
rpm -qf command (根据程序查询包的名字)
rpm -ql package (查询某个包所有的安装文件)
4、删除一些不安全的软件包,并且用相应安全的软件替代,如: ssh/sftp/scp 替代 telnet, rsh, ftp, rcp
注意系统需要一个默认的 MAT,删除 Sendmail MAT 之前必须先安装一个,如: Postfix。
yum remove telnet rsh ftp rcp yum install postfix yum remove sendmail /sbin/chkconfig postfix off
5、停掉并且删除一些不需要的 xinetd 服务。
/sbin/service xinetd stop; /sbin/chkconfig xinetd off rm -rf /etc/xinetd.d
6、禁止一些 /etc/init.d/ 下面不需要的服务,更多信息请参考 “Understanding your (Red Hat Enterprise Linux) daemons, by Len DiMaggio”。
/sbin/chkconfig --list for a in acpid anacron apmd atd autofs bluetooth cpuspeed cups gpm hidd ip6tables irqbalance messagebus microcode_ctl netfs nfs nfslock pcscd portmap readahead_early readahead_later rpcgssd rpcidmapd sendmail smartd xinetd yum-updatesd; do /sbin/chkconfig $a off; done
7、重启系统后,检查一下正在运行中的服务,看看是不是都是必须的。
netstat -an | grep LISTEN netstat -atunp
8、为了安全起见,删除一些不需要的用户。
cp /etc/passwd /etc/passwd.sav cp /etc/group /etc/group.sav for a in adm lp sync news uucp operator games gopher mailnull nscd rpc; do /usr/sbin/userdel $a -f; done for a in lp news uucp games gopher users floopy nscd rpc rpcuser nfsnobody; do /usr/sbin/groupdel $a -f; done
加固和优化系统
9、打开防火墙。
system-config-securitylevel-tui
10、检查和禁止全局可写的 SUID 文件。
find / -perm +4000 -user root -type f -print find / -perm +2000 -group root -type f -print chmod u-s /full/path/to/filename chmod g-s /full/path/to/filename
11、只允许 root 在一个 terminal 上登录,如: tty1。
vi /etc/securetty
12、避免其他用户按 Ctrl+Alt+Del 重启。
vi /etc/inittab
注释掉
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
13、/etc/security/console.apps/ 下面有 root 用户登录 console 后可以运行的程序,全部删除。
rm -f /etc/security/console.apps/*
14、删除一些登录信息。
vi /etc/issue (warning at login prompt) vi /etc/motd (warning after successful login)
15、只运行一个 virtual terminal,如果是 VPS 的话,自己不可能物理登录终端,可以全部禁止掉。
vi /etc/inittab # Run gettys in standard runlevels #1:2345:respawn:/sbin/mingetty tty1 #2:2345:respawn:/sbin/mingetty tty2 ...
16、加固 SSH 安全。
vi /etc/ssh/sshd_config Port 2222 Protocol 2 PermitRootLogin no PermitEmptyPasswords no X11Forwarding no UsePAM no UseDNS no AllowUsers vpsee Banner /etc/issue
17、安装 Bastille 软件包帮助加固。
rpm -Uvh perl-Curses-1.15-1.el5.rf.i386.rpm rpm -ivh Bastille-3.0.9-1.0.noarch.rpm /usr/sbin/bastille -c
18、优化 Linux 内核。
vi /etc/sysctl.conf net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0
定制 Linux 内核
19、定制,编译,安装 Linux 内核。
yum install rpm-build ncurses ncurses-devel rpm -ivh kernel-2.6.18-8.1.1.el5.src.rpm cd /usr/src/redhat/SPECS rpmbuild -bp --target i686 kernel-2.6.spec cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686 sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -8.1.1.custom.el5/' Makefile make menuconfig make rpm cd /usr/src/redhat/RPMS/i686 rpm -ivh kernel-2.6.18prep-1.rpm /sbin/mkinitrd /boot/initrd-2.6.18-prep.img 2.6.18-prep (2.6.18-prep -> /lib/modules) vi /boot/grub/menu.1st
20、修改 iptables,只允许 ssh,http 和 https 端口打开。
/sbin/iptables -F /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A OUTPUT -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT /sbin/iptables -A INPUT -j REJECT /sbin/iptables -A FORWARD -j REJECT
然后查看一下 iptables:
iptables -L
更多信息
10 Realistic Steps to a Faster Web Site
Understanding your (Red Hat Enterprise Linux) daemons, by Len DiMaggio
Linux Server Security (2nd Edition), by Michael D. Bauer, O’Reilly
Hardening Linux, by James Turnbull, Apress
RHEL 5.0 Deployment Guide, by RedHat
RHEL 5.0 Installation Guide, by RedHat
转自:http://www.vpsee.com/2009/06/128mb-vps-optimize-centos5/