1.Linux软件ssh安装选择RPM包VS编译包
选择RPM包的优点:稳定,可靠,规范,对应的解决方案也比较成熟,运维方便并便于自动化
选择RPM包的缺点:更新不够及时,可能存在安全漏洞不及时解决
选择编译包的优点:功能新,提供最快的安全漏洞解决支持,自主选择模块
选择编译包的缺点:自主选择性强,操作及管理难度较大,运维不方便且不利于自动化
2.SSH的PAM验证机制
A:RPM包安装自带PAM模块;如果是编译安装,必须--with-pam
B:登录时的PAM验证机制流程:
第一阶段:验证阶段
1)经过pam_securetty.so判断,看用户是什么,如果是root,读取/etc/securetty的配置
2)经过pam_env.so配置额外的环境变量
3)透过pam_unix.so验证口令
4)3验证不通过则pam_deny.so判断UID是不是大于500.小于500则返回失败
5)由pam_deny.so拒绝连接
第二阶段:授权阶段
1)先以pam_nologin.so判断/etc/nologin是否存在,若存在则不许一般使用者登陆;
2)以pam_unix进行账号管理,
3)pam_succeed_if.so判断UID是否小于500,若小于500则不记录登录信息。
4)最后以pam_permit.so允许该账号登陆。
第三阶段:口令阶段
1)先以pam_cracklib.so配置口令仅能尝试错误3次;
2)接下来以pam_unix.so透过md5,shadow等功能进行口令检验,若通过则回报login程,若不通过则以pam_deny.so拒绝登陆。
第四阶段:会议阶段
1)先以pam_selinux.so暂时关闭SELinux;
2)使用pam_limits.so配置好用户能够操作的系统资源;
3)登陆成功后开始记录相关信息在登录文件中;
4)以 pam_loginuid.so规范不同的 UID 权限;
5)开启pam_selinux.so的功能。
3.为什么root无法以telnet直接登陆系统,但是却能够使用ssh直接登陆?
一般来说,telnet会引用login的PAM模块,而login的验证阶段会有/etc/securetty的限制!由于远程联机属于pts/n (n 为数字)的动态终端机接口装置名称,并没有写入到/etc/securetty ,因此root无法以telnet登陆远程主机。至于ssh使用的是/etc/pam.d/sshd这个模块,你可以查阅一下该模块,由于该模块的验证阶段并没有加入pam_securetty,因此就没有/etc/securetty的限制!故可以从远程直接联机到服务器端。
4.运维中一定不要用Telnet吗?
在配置ssh时,最好先临时启用Telnet(xinetd),在Telnet环境下确认ssh配置完成,并确实ssh登录正常后,再关闭Telnet(xinetd)。
5.编译安装情况下如何确定ssh是否部署PAM模块
在SSH主配置文件/etc/ssh/sshd_config开启PAN机能「UsePAM yes」查看log中没有PAM的报错,有报错是这样的「Starting sshd:/etc/ssh/sshd_config line 82: Unsupported option UsePAM」,说明没有部署PAM模块。