Centos7下用户登录失败N次后锁定用户禁止登陆的方法
<p><span><strong>前言</strong></span></p>
<p>
针对linux上的用户,如果用户连续3次登录失败,就锁定该用户,几分钟后该用户再自动解锁。Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁定用户。</p>
<p>
<span><strong>PAM的配置文件介绍</strong></span></p>
<p>
<strong>PAM配置文件有两种写法:</strong></p>
<p>
一种是写在/etc/pam.conf文件中,但centos6之后的系统中,这个文件就没有了。</p>
<p>
另一种写法是,将PAM配置文件放到/etc/pam.d/目录下,其规则内容都是不包含 service 部分的,即不包含服务名称,而/etc/pam.d 目录下文件的名字就是服务名称。如: vsftpd,login等.,只是少了最左边的服务名列.如:/etc/pam.d/sshd</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="Centos7下用户登录失败N次后锁定用户禁止登陆的方法" alt="Centos7下用户登录失败N次后锁定用户禁止登陆的方法" src="https://zhuji.jb51.net/uploads/img/202305/e1159eb12e54e7ceb15c1f3adf7d61a7.jpg"></p>
<p>
由上图可以将配置文件分为四列,</p>
<ul>
<li>
第一列代表模块类型</li>
<li>
第二列代表控制标记</li>
<li>
第三列代表模块路径</li>
<li>
第四列代表模块参数</li>
</ul>
<p>
<span><strong>1、限制用户远程登录</strong></span></p>
<p>
在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_93301">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># vim /etc/pam.d/sshd</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments">#%PAM-1.0</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>各参数解释</strong></p>
<ul>
<li>
even_deny_root 也限制root用户;</li>
<li>
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户</li>
<li>
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;</li>
<li>
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;</li>
</ul>
<p>
此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。</p>
<p>
<span><strong>2、限制用户从tty登录</strong></span></p>
<p>
在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_991347">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># vim /etc/pam.d/login</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments">#%PAM-1.0</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
同样是增加在第2行!</p>
<p>
<span><strong>3、查看用户登录失败次数</strong></span></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_918451">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments">#cd /etc/pam.d/</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain"></code><code class="bash comments"># pam_tally2 --user root</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">Login Failures Latest failure From</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">root 7 07</code><code class="bash plain">/16/12</code> <code class="bash plain">15:18:22 tty1</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>4、解锁指定用户</strong></span></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_6358">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># pam_tally2 -r -u root</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">Login Failures Latest failure From</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>总结</strong></span></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。</p>
<p>
原文链接:http://www.linuxmysql.com/16/2018/725.htm</p>
頁:
[1]