安装完 CentOS 7 后必做的七件事

CentOS是最多人用来运行服务器的Linux版本,当在一台主机或VPS上安装CentOS 7后,首要的工作肯定是加强它的安全性,以下列出的七件事,是进一步配置系统和安装其他软件前必须做的。

1. 更改root密码

#passwd

#echo [new password] | passwd --stdin root

密码应该同时包含数字、小写英文字母、大写英文字母、和标点符号,最少15个字符,这样的密码强度大概有90 bit,一般可以对付暴力破解

2. 新增一个普通帐号

#useradd ryan
#echo [new password] | passwd --stdin ryan
平时用ryan账号登录,需要特权命令时候再su - 到root账号下进行操作

3. 禁止root使用ssh登入

用普通用户登录
$su -
#vim /etc/ssh/sshd_config
查找:#PermitRootLogin yes 修改为 PermitRootLogin no
重启sshd服务:#systemctl restart sshd

对于一些需要root权限才能修改的目录(如:/var/www/html),可使用 ACL 给普通用户单独赋值
#setfacl -m user:ryan:rwx /var/www/html

4. 使用非常规的ssh端口

#vim /etc/ssh/sshd_config
查找:#Port 22 修改为 Port 9999
可以把9999改为任何1024 – 65535之间的任何数字

重启动sshd服务:systemctl restart sshd
最后是设定防火墙放行新端口:
firewall-cmd --zone=public --add-port=9999/tcp --permanent

完成后不要登出系统,使用另一个视窗尝试登入,例如:ssh -p 9999 ryan@ip 登录正常即可放心登出。

5.启用公钥验证登入ssh

第一步在日常使用的电脑上使用ssh-keygen指令建立一对加密钥匙,它会询问储存加密钥匙的文件名称,和把钥匙加密的密码,文件名称使用预设的路径和名称便可以,密码则无需输入:
#ssh-keygen -t rsa
这个指令会创造两个文件,一个名为id_rsa,是你的RSA密钥,另一个是id_rsa.pub,是你的RSA公钥
公钥需上传到服务器并且附加于用户帐号里面的.ssh/authorized_keys文件中,这个文件储存所有可透过ssh登入到这一个帐号的公钥,一行一条公钥。
把公钥使用ssh-copy-id或scp命令上传到服务器家目录.ssh目录下面。
#ssh-copy-id -i .ssh/id_rsa.pub ryan@ip
这样登录时候可以使用公钥认证了,使用公钥验证法登入ssh又省力又安全,因为我们不用输入密码,自然也没有密码被盗取的忧虑,简简单单地输入连接指令便可以了。
但是存放在日常电脑中的密钥却带来新的安全隐患,万一密钥被盗取了,其他人岂不是可以随便登入服务器?
设定ssh的双重验证法:
#vim /etc/ssh/sshd_config,在文件的末端假如这一行:AuthenticationMethods publickey,password
#systemctl restart sshd
完成后不要登出系统,使用另一个视窗尝试登入,测试无误便可进行下一步。

6. 更新、更新、每天更新、每天自动更新

手动更新所有预先安装的软件:
#yum -y update

跟着设定系统定时自动更新
安装cron:
#yum -y install yum-cron
#vim /etc/yum/yum-cron.conf,
查找:apply_updates = no 修改为:apply_updates = yes
启动服务:
#systemctl start crond systemctl start yum-cron

7.开启防火墙

查看一下防火墙现在编辑了哪些服务和端口:
#firewall-cmd --list-all
一般防火墙只开启了DHCP 客户端和ssh 两个服务的通讯端口,倘若日后安装了其他网络软件,如web服务器,必须要检查安装程式有否编辑他们的通讯端口,没有的话便要手动编辑。如果好像前面第四点那样使用了非常规的通讯端口,也可能要手动配置防火墙。firewall几个常用命令:
systemctl start firewalld
firewall-cmd --add-service=ftp --permanent
firewall-cmd --remove-service=ftp --permanent
firewall-cmd --add-port=3128/tcp
systemctl restart firewalld
firewall-cmd --state

PS:关闭SELinux, 否则一些程序(如samba)会被阻止访问

源:http://www.douban.com/note/517000039/