安全是IT行业一个老生常谈的话题了,最近的“棱镜门”时间映射出了很多安全问题,处理好信息安全问题已变得刻不容缓。因此一名运维人员,必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站在攻击者的角度思考问题,才能修补任何潜在的威胁和漏洞。
帐号安全是系统安全的第一道屏障,也是系统安全的核心,保证登录帐号的安全,在一定程度上可以提高服务器的安全级别,
一、删除特殊的用户和用户组
Linux提供了各种不通角色的系统帐号,在系统安装完成后,默认会安装很多不必要的用户和用户组,如果不需要某些用户或用户组,应立即删除它们,因为帐号越多,系统就越不安全,从而很可能被黑客利用,威胁服务器的安全。
Linux系统中可以删除的默认用户和用户组大致如下:
- cat /etc/passwd(查看所有用户)
- 可删除的用户:adm、lp、sync、shutdown、halt、news、uucp、operator、games、gopher
- cat /etc/group(查看所有用户组)
- 可删除的用户组:adm、lp、news、uucp、games、dip、pppusers、popusers、slipusers
删除的方法很简单,下面举例说明删除系统不必要的用户使用如下命令:
[root@iZm5e1zj4mlgc24i43avl0Z ~]# userdel adm
[root@iZm5e1zj4mlgc24i43avl0Z ~]# userdel lp
[root@iZm5e1zj4mlgc24i43avl0Z ~]# userdel sync
.......
删除系统不必要的用户组使用如下命令:
[root@iZm5e1zj4mlgc24i43avl0Z ~]# groupdel games
[root@iZm5e1zj4mlgc24i43avl0Z ~]# groupdel dip
[root@iZm5e1zj4mlgc24i43avl0Z ~]# groupdel pppusers
.......
有些时间,某些用户仅仅用作进程调用或者用户组调用,并不需要登录功能,此时可以禁止这些用户登录系统的躬耕,例如要禁止nagios用户的登录功能,可以执行如下命令:
[root@iZm5e1zj4mlgc24i43avl0Z ~]# usermod -s /sbin/nologin nagios
其实要删除那些用户和用户组,并没有固定要求,可以根据服务器的用途来决定,如果服务器是用于web应用的,那么系统默认的apache用户和用户组就无需删除;而如果服务器是用于数据库应用的,那么建议删除系统默认的apache用户和用户组。
二、密码安全策略
在Linux下,远程登录系统有两种认证方式:密码认证和密钥认证。密码认证方式是传统的安全策略,对于密码的设置,比较普通的说话是:至少6个字符以上,密码要包含数字、字母、下划线、特殊符号等。
密钥认证是一种新型的认证方式,公用密钥存储在远程服务器上,专用密钥保存在本地,当需要登录系统時,通过本地专用密钥和远程服务器的公钥进行配对认证,如果认证成功,就可以成功登录系统。这种方式避免了密钥认证的方式进入系统。因此,在Linux下推荐用密钥认证方式登录系统,这样就可以抛弃密码认证登录系统的弊端。
接下来详细描述通过密钥认证方式远程登录Linux服务器的实现方法。这里的环境是Centos7、OpenSSH6.6、Xshell,操作如下:
#ssh-keygen -t rsa
执行上面命令后会在家(/home/当前用户,root用户会在/root下创建)位置下创建.ssh文件并且生成两个文件。
-rw-------. 1 xxxxx xxxxx 176 8月 1 02:52 id_rsa
-rw-r--r--. 1 xxxxx xxxxx 409 8月 1 02:52 id_rsa.pub
讲id_rsa.pub名称修改为authorized_keys
cat id_rsa.pub >> authorized_keys
修改文件权限
chmod 700 .ssh
chmod 600 authorized_keys
修改OpenSSH配置文件
vim /etc/ssh/sshd_config
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no
保存退出,并且重启OpenSSH
systemctl restart sshd.service
把刚生成两个文件中的id_rsa拷贝到客户端,进行登录
在生成密钥的时候输入的什么密码,这里的密码就输入什么,登录后就可以通过su root来对root进行切换了。
在安装的过程遇到过很多坑,什么该用户未注册、拒绝登录。其实归根结底就是你配置文件的错误。密钥生成有很多种,也可以通过Xshell进行生成密钥,然后将生成后的公钥传到linux上。
在此不过多介绍,留心的可以去亲自感受下这个过程。
三、防火墙
防火墙的知识够用就可以,这里把一些常用的命令粘贴过来,供大家参考
systemctl stop firewalld
systemctl mask firewalld
yum -y install iptables-services
systemctl enable iptables
systemctl start iptables
iptables -F INPUT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
service iptables save
systemctl restart iptables.service