账户安全是系统安全的第一道防线,通过删除不必要的用户以及对登录进行加密与限制,可以避免因权限泄露与中间人攻击导致的安全隐患。
删除不必要的用户
在linux系统安装过程中,系统会建立一些不必要的用户与用户组,这些用户与用户组会成为黑客攻击的目标,删除它们可以有利于系统的安全。
Linux中可以删除的默认用户有:
- adm:伪用户,不可登录,拥有账户文件
- lp:伪用户,不可登录,lp或lpd子系统使用
- sync
- shutdown
- halt
- news
- uucp:伪用户,不可登录,uucp使用
- operator
- games
- gopher
Linux中可以删除的默认用户组有:
- adm
- lp
- news
- uucp
- games
- dip
- pppusers
- popusers
- slipusers
通过sudo限制su的滥用
出于系统安全的目的,一般服务器都会限制root用户的直接登录,而是通过普通用户登录系统,然后从普通用户切换至root用户。但允许太多普通用户使用su切换至root用户会提高密码泄露的风险。因此在需要多人管理的服务器系统中,使用su不是一个很好的选择,root用户密码应当只被掌握在少数管理员的手中。
使用sudo可以给普通用户分配一些root用户的权限,而且也不需要普通用户知晓root用户的密码。
sudo的运行过程如下:
- 将当前用户切换至root用户或指定的用户下
- 以root用户或指定用户的身份执行命令
- 执行完毕,直接退回普通用户
sudo可以通过配置文件/etc/sudoers
来进行授权
例如普通用户user01无法访问/etc/shadow
文件,
则可以在/etc/sudoers
文件中添加如下一行来为普通用户授权:
user01 ALL = /bin/more /etc/shadow
这样,user01用户就可以通过more命令访问/etc/shadow
文件。
当用户执行了sudo more /etc/shadow
命令后,需要输入user01的密码,然后在后面三分钟内,都可以在不用输入密码的情况下访问文件了。
但一些程序会无法通过输入密码的方式来正确执行,我们就需要给普通用户添加一个无需凭证的权限。
例如,让普通用户user01具有/etc/init.d/nagios
脚本重启的权限,可以在/etc/sudoers
文件中添加如下一行来为普通用户授权:
user01 ALL = NOPASSWD: /etc/init.d/nagios restart
关闭不必要的服务
在安装完成后,Linux绑定了很多不必要的服务,这些服务都默认自动启动的,关闭它们可以提高系统的安全性。
但关闭哪些服务,要根据服务器的用途而定,例如某台用于WWW的应用,那么除了httpd外和系统的必要服务外都可以关闭。
以下服务如果不会被用到,可以关闭:
- anacron:用于定期检测服务器在关机状态下没有执行的定时任务,并在特定的时间执行它们
- auditd:用于审计,负责把内核产生的信息写入到磁盘,用于记录与系统内核有关的活动与操作。
- autofs:用于自动挂载服务,与写入fstab文件不同,它不会开机就挂载文件系统,而是当用户访问时才挂载服务。
- svhi-dacmon
- biuetooth:用于蓝牙,一般服务器也不会用这个功能吧。
- cpuspeed:用于动态调整CPU速度,除非用户使用的是基于笔记本的Linux系统,否则应当关闭它。
- firstboot:Fedora特有,用于安装之后第一次启动时仅需要执行一次的特定任务。
- gpm:用于在无图形界面的鼠标支持。
- haldaemon:Fedora特有,用于自动挂载鼠标键盘以及USB设备。
- hidd:对输入设备提供蓝牙支持。
- ip6tables:用于ipv6防火墙。
- ipsec:用于搭建VPN服务。
- isdn:用于使用isdn猫上网。
- lpd:打印机守护程序。
- mcstrans:用于SELinux,如果你使用SELinux,那么应当开启它。
- netfs:用于在系统启动时自动挂载网络中的共享文件空间,比如:NFS,Samba 等。
- nfs:用于 Unix/Linux/BSD 系列操作系统的标准文件共享方式,如果你用到这种方式,那么保持它开启。
- nfslock:用于 Unix/Linux/BSD 系列操作系统的标准文件共享方式,如果你用到这种方式,那么保持它开启。
- nscd:用于为NIS和LDAP等服务提供更快的验证。
- pcscd:用于提供智能卡和智能卡读卡器支持。
- portmap: NFS和 NIS的补充。
- readahead_early:通过预先加载特定的应用程序到内存中以提供性能,让程序启动更快。
- restorecond:用于给SELinux监测和重新加载正确的文件上下文(file contexts),如果你使用SELinux的话强烈建议开启它。
- rpcgssd:用于NFSv4,除非你需要或使用NFSv4,否则关闭它
- rpcidmapd:用于NFSv4,除非你需要或使用NFSv4,否则关闭它
- rstatd:用于获取系统的资源使用情况,常用于监控服务。
- sendmaill:用于发送邮件。
- setroubleshoot:用于SELinux,用于读取内核日志。
- yppasswdd:用于NIS服务。
- ypserv:用于NIS服务。