您的位置:首页 > 运维架构 > Linux

Linux帐号和登录安全

2017-08-01 00:00 253 查看
摘要: 《高性能Linux服务器构建实战》

安全是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息