真好笑 發表於 2022-3-4 18:21:00

Ubuntu基线指导手册

<h1 style="text-align: center">Ubuntu基线指导手册</h1>
<h1>1.&nbsp;&nbsp; 身份鉴别策略组检测</h1>
<p>准备:</p>
<p>安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。</p>
<p>在Debian,Ubuntu或者Linux Mint使用命令:</p>
<p><strong>sudo apt-get install libpam-cracklib</strong></p>
<p>这个模块在CentOS,Fedora或者RHEL默认安装了。但是在Ubuntu这些系统上就必需安装。</p>
<p>&nbsp;</p>
<h2>1.1.&nbsp; 口令周期检测</h2>
<h3>1.1.1.&nbsp;&nbsp;&nbsp;&nbsp; 最长使用周期小于等于90天(非强制)</h3>
<p><strong>sudo vim /etc/login.defs</strong></p>
<p>&nbsp;<img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181501059-358315675.png"></p>
<p>&nbsp;</p>
<p>PASS_MAX_DAYS 90</p>
<p>PASS_MAX_DAYS 99999 代表永不过期</p>
<h3>1.1.2.&nbsp;&nbsp;&nbsp;&nbsp; 查看密码期限:最短更换周期大于等于2天</h3>
<p>PASS_MIN_DAYS 2</p>
<p>检查命令:</p>
<p><strong>chage -l root</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181518055-1064672146.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>1.1.3.&nbsp;&nbsp;&nbsp;&nbsp; 距失效提示天数大于等于5天</h3>
<p>PASS_WARN_AGE 5</p>
<h2>1.2.&nbsp; 密码复杂度检测</h2>
<h3>1.2.1.&nbsp;&nbsp;&nbsp;&nbsp; 密码复杂性要求</h3>
<p><span style="color: rgba(255, 0, 0, 1)">pam_cracklib.so</span>支持的部分选项如下:</p>
<p><strong>retry=N</strong><strong>:</strong>定义登录/修改密码失败时,可以重试的次数</p>
<p><strong>minlen=N</strong><strong>:</strong>新密码的最小长度</p>
<p><strong>dcredit=N</strong><strong>:</strong>当N&gt;0时表示新密码中数字出现的最多次数;当N&lt;0时表示新密码中数字出现最少次数;</p>
<p><strong>ucredit=N:</strong>&nbsp;当N&gt;0时表示新密码中大写字母出现的最多次数;当N&lt;0时表示新密码中大写字母出现最少次数;</p>
<p><strong>lcredit=N:</strong>&nbsp;当N&gt;0时表示新密码中小写字母出现的最多次数;当N&lt;0时表示新密码中小写字母出现最少次数;</p>
<p><strong>ocredit=N</strong><strong>:</strong>当N&gt;0时表示新密码中特殊字符出现的最多次数;当N&lt;0时表示新密码中特殊字符出现最少次数;</p>
<p><strong>maxrepeat=N</strong><strong>:</strong>拒绝包含多于N个相同连续字符的密码。 默认值为0表示禁用此检查</p>
<p><strong>maxsequence=N</strong><strong>:</strong>拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查。实例是'12345'或'fedcb'。除非序列只是密码的一小部分,否则大多数此类密码都不会通过简单检查。</p>
<p><strong>enforce_for_root:</strong>&nbsp;如果用户更改密码是root,则模块将在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印有关失败检查的消息,但root仍可以更改密码。不要求root用户输入旧密码,因此不会执行比较旧密码和新密码的检查</p>
<p>&nbsp;</p>
<p>方法:</p>
<p><strong>vim</strong> <strong>/etc/pam.d/common-password </strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181547252-497974434.png"></p>
<p>&nbsp;</p>
<p><strong>password requisite&nbsp;pam_cracklib.so&nbsp;retry=3 minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1</strong></p>
<p>&nbsp;</p>
<p>在pam_cracklib.so&nbsp;后添加<strong>minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1</strong></p>
<p>参数含义:密码长度最小为10位,数字出现的最少次数为1次,大写字母出现最少1次,小写字母出现最少1次,特殊字符出现最少1次</p>
<p>&nbsp;</p>
<h2>1.3.&nbsp; 登录锁定检测</h2>
<h3>1.3.1.&nbsp;&nbsp;&nbsp;&nbsp; 普通用户触发锁定次数小于等于5</h3>
<h3>1.3.2.&nbsp;&nbsp;&nbsp;&nbsp; 普通用户锁定时间大于等于5分钟</h3>
<h3>1.3.3.&nbsp;&nbsp;&nbsp;&nbsp; Root用户触发锁定次数小于等于5</h3>
<h3>1.3.4.&nbsp;&nbsp;&nbsp;&nbsp; Root用户锁定时间大于等于5分钟具体安装配置:</h3>
<p>1、修改如下配置文件:(不建议修改)</p>
<p>这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改sshd文件</p>
<p><strong>vim /etc/pam.d/login</strong></p>
<p>在第二行添加</p>
<p><strong>auth required&nbsp;pam_tally2.so&nbsp;deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181612573-655450421.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。</p>
<p><strong>&nbsp;</strong></p>
<p><strong>注意</strong></p>
<p><strong>在第二行,添加内容,一定要写在前面</strong>,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!</p>
<p>这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改sshd文件</p>
<p>2、修改sshd文件(建议修改)</p>
<p><strong>vim /etc/pam.d/sshd</strong></p>
<p>&nbsp;</p>
<p>继续在第二行上添加</p>
<p><strong>auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181630047-984023369.png"></p>
<p><strong>查看用户登录失败的次数</strong><strong>:</strong></p>
<p><strong>sudo pam_tally2 --user</strong></p>
<p>结果</p>
<p>ubuntu@VM-0-5-ubuntu:~$ sudo pam_tally2 --user</p>
<p>Login&nbsp;&nbsp; Failures Latest failure&nbsp; From</p>
<p>root&nbsp;&nbsp;&nbsp; 3 09/29/19 15:53:24 45.119.212.105</p>
<p>ubuntu&nbsp;&nbsp;&nbsp; 9 09/29/19 15:46:58 223.107.140.84</p>
<p>解锁指定用户:</p>
<p><strong>sudo pam_tally2 -r -u admin</strong></p>
<p>&nbsp;</p>
<p>admin@VM-0-5-ubuntu:~$ sudo pam_tally2 -r -u admin</p>
<p>Login&nbsp;&nbsp; Failures Latest failure&nbsp; From</p>
<p>admin&nbsp;&nbsp;&nbsp; 15 09/29/19 15:58:49 223.107.140.84</p>
<p>&nbsp;</p>
<p>ps:这个远程ssh的时候,输入密码错误超过三次但是没有提示,但是<strong>只要超过设定的值,输入正确的密码也是登陆不了的</strong>!,还是要等到设定的时间在重新尝试输入正确密码进行登录认证</p>
<p>&nbsp;</p>
<h2>1.4.&nbsp; Root权限用户</h2>
<h3>1.4.1.&nbsp;&nbsp;&nbsp;&nbsp; root权限用户检测&nbsp;(非强制)</h3>
<p>检查配置文件<strong>cat /etc/passwd</strong>,不能包含用户标识号为0,除root用户外。</p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181701804-434795546.png"></p>
<p>以第一行为例,从左至右,分别表示:<br>
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell</p>
<h2>1.5.&nbsp; Wheel组(非强制)</h2>
<h3>1.5.1.&nbsp;&nbsp;&nbsp;&nbsp;
wheel组检测&nbsp;(非强制)</h3>
<p>命令:<strong>cat /etc/group</strong></p>
<p><strong>检查文件</strong><strong>/etc/group</strong><strong>中,</strong><strong>wheel</strong><strong>后面是否有用户名,如果有,将其删除。</strong></p>
<p>&nbsp;</p>
<p>如下图中示例,viewer用户加入了wheel组中,因此viewer用户拥有了root的部分功能和权限,因此需要将viewer删除。</p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181718555-108599370.png"></p>
<p>Wheel组概念</p>
<p>Wheel组是Unix系统一个遗留物。当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到root权限了。而这个wheel组就是建立用来归纳一些特殊的系统用户用的,这其中的用户都或多或少地拥有root的部分功能和权限。也就是说如果你不是wheel组成员,那就没有root身上任何的特权。也因为这样,使用wheel组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。如今大多数的Linux发行版本中,仍然保留了wheel这个组,虽然它已经不像当初设计出来的那样必要了,但是有些老玩家还是忠于这种旧式经典风格的,所以他们经常还是依旧让wheel组发挥着以往的作用。他们是这样做的:在建立他们自己的用户时,将其添加入wheel组中(用wheel组作为用户的主组),或者使用vigr来编辑/etc/group文件,将他们的用户名追加到wheel组那行的末尾。</p>
<p>&nbsp;</p>
<h2>1.6.&nbsp; 相同ID用户</h2>
<h3>1.6.1.&nbsp;&nbsp;&nbsp;&nbsp;
相同ID用户检测</h3>
<p>命令:<strong>cat /etc/passwd</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181735287-152552718.png"></p>
<p>检查配置/etc/passwd中,是否包含用户标识号相同的帐号,用户标识号位置如下:</p>
<p>以第一行为例,从左至右,依次为:</p>
<p>帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell</p>
<h1>2.&nbsp;&nbsp; 访问控制策略组检测</h1>
<h2>2.1.&nbsp; 空口令监测</h2>
<h3>2.1.1.&nbsp;&nbsp;&nbsp;&nbsp;
空口令账户</h3>
<p>命令:<strong>cat /etc/shadow</strong><strong>(检查</strong><strong>shadow</strong><strong>文件中密码为空且的用户)</strong></p>
<p><strong><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181746917-1212125126.png"></strong></p>
<p>如图上所示,输出test3为空口令账户,且可以登录的用户。</p>
<p>用户test2:!!:18820:0:99999:7:::第二个字段是“:!!:”代表没有设置密码,但无法登录。</p>
<p>用户test3::18820:0:99999:7:::第二个字段是“::”代表第二个字段密码为空,且可以登录。</p>
<p>如果检测出有空口令账户,可以做以下处理:</p>
<p><strong>A.&nbsp;</strong><strong>删除该用户</strong></p>
<p>命令如下:</p>
<p><strong>userdel&nbsp;</strong><strong>用户名</strong></p>
<p>rm -rf
/home/用户名 (可选,表示删除该用户的主目录)</p>
<p><strong>B.&nbsp;</strong><strong>给该用户设置密码</strong></p>
<p><strong>passwd&nbsp;</strong><strong>用户名</strong></p>
<h2>2.2.&nbsp; 弱口令检测</h2>
<h3>2.2.1.&nbsp;&nbsp;&nbsp;&nbsp;
弱口令账户</h3>
<p>如果检测出弱口令账户,建议设置符合秘密复杂度要求的密码,命令如下:</p>
<p><strong>passwd&nbsp;</strong><strong>用户名</strong></p>
<h1>3.&nbsp;&nbsp; 安全审计策略组检测</h1>
<h2>3.1.&nbsp; 日志守护进程</h2>
<h3>3.1.1.&nbsp;&nbsp;&nbsp;&nbsp;
开启日志守护进程</h3>
<p>当rsyslog没有在运行,则检测失败,操作命令如下:</p>
<p><strong>systemctl
status rsyslog&nbsp;</strong><strong>(查看状态)</strong></p>
<p><strong>systemctl
stop rsyslog&nbsp;</strong><strong>(停止)</strong></p>
<p><strong>systemctl
start rsyslog&nbsp;</strong><strong>(启动)</strong></p>
<p>启动成功后状态:</p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181759317-955985242.png"></p>
<p>查看进程有没有启动:</p>
<p>命令:<strong>ps -ef | grep rsyslog</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181811323-1876137368.png"></p>
<h1>4.&nbsp;&nbsp;
SSH策略检测</h1>
<h2>4.1.&nbsp; SSH检测</h2>
<p>执行如下命令,修改配置文件</p>
<p><strong>sudo
vim /etc/ssh/sshd_config</strong></p>
<h2>4.1.1.&nbsp;&nbsp;&nbsp;&nbsp;
最大失败尝试登录次数小于等于5(需要修改)</h2>
<p><strong>MaxAuthTries
5</strong></p>
<p><strong><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181825508-1101393820.png"></strong></p>
<h3>4.1.2.&nbsp;&nbsp;&nbsp;&nbsp;
开启密码认证</h3>
<p><strong>PasswordAuthentication
yes</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181836171-1811578403.png"></p>
<h3>4.1.3.&nbsp;&nbsp;&nbsp;&nbsp;
开启RSA认证</h3>
<p><strong>RSAAuthentication
yes</strong>&nbsp; (有的系统 需要手动添加)</p>
<h3>4.1.4.&nbsp;&nbsp;&nbsp;&nbsp;
开启公钥验证</h3>
<p><strong>PubkeyAuthentication
yes</strong></p>
<p>重启sshd生效,重启命令如下:</p>
<p>CentOS系列:&nbsp;<strong>systemctl restart sshd</strong></p>
<p>后续随着建立应用账户会回收root权限登陆。</p>
<h1>5.&nbsp;&nbsp; 入侵防范策略组监测</h1>
<h2>5.1.&nbsp; 防火墙</h2>
<p>查看状态</p>
<p><strong>systemctl
status firewalld.service</strong></p>
<p>启动防火墙</p>
<p><strong>systemctl
start firewalld.service</strong></p>
<p>关闭防火墙</p>
<p><strong>systemctl
stop firewalld.service</strong></p>
<p>重新启动防火墙</p>
<p><strong>systemctl
restart firewalld.service</strong></p>
<p><img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181911341-1302733075.png"></p>
<h2>5.2.&nbsp; 防暴力破解</h2>
<p>安装EDR</p>
<h1>6.&nbsp;&nbsp; 恶意代码防范监测</h1>
<h2>6.1.&nbsp;&nbsp;安装EDR</h2>
<h1>7.&nbsp;&nbsp; NTP时间同步配置</h1>
<p>安装ntpdateNTP时间同步配置</p>
<p><strong>apt-get
install ntpdate</strong></p>
<p>编辑/etc/ntp.conf文件</p>
<p><strong>vim
/etc/ntp.conf</strong></p>
<p>添加配置</p>
<p><strong>server
10.14.1.11 prefer iburst</strong></p>
<p>&nbsp;<img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181342958-1396431206.png"></p>
<p>&nbsp;</p>
<p>其中的prefer优先级最高,不然在多个同步服务时,可能自己本地的ntp服务不被选中,会使用其他的源作为同步的时间选项。</p>
<p>其中的iburst是初始化时,每2秒发送一批同步</p>
<p>&nbsp;</p>
<p>重新启动NTP服务器:</p>
<p><strong>service
ntp restart</strong></p>
<p>查看同步情况:</p>
<p><strong>watch
ntpq –p</strong></p>
<p>&nbsp;<img src="https://img2022.cnblogs.com/blog/2605882/202203/2605882-20220304181354751-1267332557.png"></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/Magiclala/p/15965598.html
頁: [1]
查看完整版本: Ubuntu基线指导手册