Friday, August 18, 2017

CentOS VPS的安全设置

目前主流的国外vps以linux系统居多,因为linux系统是免费的,对服务商或用户来说都可以省一点钱,况且对于一般的网络应用,linux平台的性能和稳定性都大大优于win平台。唯一的不足就是linux平台的server不采用图形界面,易用性较差,大多数非专业人员配置、操控起来有难度,即使是专业人员,很多操作在命令行下也稍显繁琐,为了解决这个问题,就有了各种基于web的linux平台控制面板,将常用操作图形化,使之便于管理。

在众多linux发行版中,centos是非常优秀的一个,因为它是基于原来的Redhat Linux,是相对于RHEL(Red Hat Enterprise Linux,现已收费)的免费版本,性能优良,可用文档等资源也很丰富。

下面分几步来说明拿到vps后初始化设置的步骤,仅作简单记述以备忘。下面的方法主要来自网上收集。

——————————- 第一步 ——————————-

因为拿到的vps一般是安装了centos完全版的,自带有apache等组件,我们要使用kloxo自带的服务器组件,就需要先卸载自带的apache、mysql等。

卸载Mysql

rpm -qa | grep mysql
mysql-3.23.58-9
php-mysql-4.3.4-11
mod_auth_mysql-20030510-4.1
mysql-server-3.23.58-9

说明:rpm -qa | grep mysql 命令是为了把mysql相关的包都列出来,卸载从最下面的一个包开始,直到卸载掉第一个为止。
比如:在这个例子中,我们应该先卸载mysql-server-3.23.58-9 方法如下:

rpm -e mysql-server

说明:rpm -e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mod_auth_mysql-20030510-4.1包,方法如下:

rpm -e mod_auth_mysql

卸载Apache

rpm -qa | grep httpd

卸载PHP

rpm -qa | grep php

注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。如果实在实在有卸载不掉的包,可以加-nodeps这个参数来卸载,比如我们卸载php-4.3.4-11,实在卸不掉了。就用:

rpm -e php-4.3.4-11 -nodeps

命令很强硬,应该行的。

——————————- 第二步 ——————————-

centos系统安全设置

首先给大家一段代码来检测你的vps是否遭遇了暴力破解:

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

如果查询出来的结果中包含了“ip地址=数量”这样的结果,那就说明有人曾试图破解过你的密码。

1、更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降

vi /etc/ssh/ssh_config
vi /etc/ssh/sshd_config

然后修改为port为需要的端口号
以root身份

service sshd restart

2、删除系统臃肿多余的账号:

userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp 如果你不允许匿名FTP,就删掉这个用户帐号
groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers

3、增加普通账号,并禁止root远程登录:

useradd newuser  //添加新用户
passwd newuser  //修改密码
usermod -G10 newuser
或usermod -G wheel newuser    //将用户加入wheel组,允许使用 su – 命令提权成root
vi /etc/ssh/sshd_config

添加一行:

PermitRootLogin no  //禁止root远程登录
vi /etc/pam.d/su
#auth required /lib/security/$ISA/pam_wheel.so use_uid   ← 找到此行,去掉行首的“#”
echo “SU_WHEEL_ONLY yes” >> /etc/login.defs  //以上为禁止不在wheel组的用户使用su -命令

重启sshd服务

service sshd restart

4、更改下列文件权限,使任何人没有更改账户权限:

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

5、编辑“host.conf”文件(vi /etc/host.conf)加入下面这些行:

order bind,hosts
multi on
nospoof on
chmod 600 /etc/xinetd.conf
vi /etc/xinetd.conf  禁止所有不需要的服务,如:ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-

3、finger、auth等等,也可以直接通过setup命令来设置服务项。
改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号:

killall -HUP xinetd
chattr +i /etc/xinetd.conf  //把inetd.conf设成不可改变,如果要改变xinetd.conf文件,你必须先清除这个不允许改变的标志:
chattr -i /etc/inetd.conf

又是为了服务器安全,可以配置防ping:

先用/sbin/ifconfig查看网卡信息,找到外网网卡名字,如venet0
运行

/sbin/iptables -A OUTPUT -o venet0 -p icmp -j ACCEPT
/sbin/iptables -A INPUT -i venet0 -p icmp –icmp-type echo-reply -j ACCEPT
/sbin/iptables -A INPUT -i venet0 -p icmp –icmp-type echo-request -j DROP
/sbin/service iptables save

看到OK后重启即可。

也可以通过使用MySQLTuner分析优化MySQL。MySQLTuner是一个Perl脚本,用来分析你的MySQL性能,并给出优化建议。

下载,执行:

wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

——————————- 结束 ——————————-

附上一条检测CC命令:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

2 comments

  1. 修改/etc/passwd即可,把用户名的ID和ID组修改成0,但不推荐;建议使用sudo命令。

  2. 我按照你说的进行了优化,确实不错呀。谢谢哈。
    想问一下,要是禁止SSH登陆root帐号,并且创建了一个帐号,请问怎么让这个帐号也具有root帐号的所有功能呀?谢谢。

Leave a Reply

Your email address will not be published. Required fields are marked *