账户和登录安全
删除特殊用户和用户组
可删除不用的系统默认用户,如apache等
或者对不用的用户禁用登录权限 usermode -s /sbin/nologin nagios
禁用前用户可正常登录
禁用后无法再登录
关闭系统不必要服务
ubuntu可用systemctl redhat可以用chkconfig --level 345 service_name off
密码安全策略
linux有两种远程登陆方式:密码认证和密钥认证。密钥认证一般使用secureCRT和SSH服务实现,SSH全称是Secure SHell,SecureCRT是一个SSH客户端,如果希望远程登入服务器,服务器必须运行ssh(sshd)服务
密钥认证思路是先在客户端ssh-keygen生成公私钥对,再用ssh-copy-id(或者ssh-keygen -i导入公钥文件)将公钥拷贝到服务端,在服务端配下ssh服务允许密钥认证,重启ssh/sshd服务,然后登录就可以走密钥认证
是否启用publickey认证
publickey文件路径
是否使用口令认证
合理使用su和sudo
sudo命令通过/etc/sudoers进行授权
普通用户即使使用sudo命令也无法查看某些文件
可修改/etc/sudoers或/etc/sudoers.d/下新增文件添加普通用户的特殊命令权限
sudo第一次会提示输入当前用户密码(不是root用户的密码),密码正确输入后,会有一个默认时长的免密时间,时间内再执行sudo不用输密码,超过时间则需再次输入密码
如果希望特殊命令通过sudo执行不用输入密码,可如下配置
如果希望普通用户拥有超级用户的所有权限,有不用输入密码,可如下配置
删减ssh登入系统欢迎信息
默认登录信息
登录提示信息在/etc/issue, /etc/issue.net, /etc/redhat-release(ubuntu是/etc/update-motd.d), /etc/motd等文件中可修改
对比上述文件
一个案例,黑客入侵一台服务器,服务器给出欢迎登陆的信息,因此法院不做任何判决
远程访问与认证安全
不用telnet而使用ssh
telnet是一种早期登录认证服务,网络上会用明文传输口令和数据,这些内容可以被截获,现在很少用telnet 更多使用ssh。ssh会加密传输的数据,而且通过网络传输的数据经过压缩
合理使用shell命令历史记录功能
有的os命令历史记录只会记录命令,不会记录时间等,这些可改/etc/bashrc进行配置
启动tcp_wrapper防火墙
linux有两层防火墙,第一层是iptables或firewall,第二层是tcp_wrapper(ubuntu里叫libwrap)
tcp_wrapper通过修改/etc/hosts.allow和/etc/hosts.deny即可实现功能
tcp_wrapper会先在hosts.allow里找符合条件的主机,找到则不继续在hosts.deny中找,如果hosts.allow中找不到,则会在hosts.deny中找。所以一般可以这样设置,在hosts.allow中设置白名单,在hosts.deny中设置某个服务所有主机都禁止