<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/5099/</link>
<title><![CDATA[设置Linux用户登录连续N次输入错误限制进行登陆时，自动锁定X分钟(pam_tally2)]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 05 Apr 2012 12:58:38 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/5099/</guid> 
<description>
<![CDATA[ 
	本文出自 “静静的” 博客，谢绝转载！&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写得好，当然得转。<br/>先贴来源：http://lhf0616.blog.51cto.com/2920914/538453 <br/><br/>(1)这一条登录多少次后就提示并自动结束会话：非常重要，在CentOS6.2中实践Ok，如下：<br/>[root@station90 ssh]# cat /etc/ssh/sshd_config&nbsp;&nbsp;&#124; grep MaxAuth<br/>MaxAuthTries 1 //远程用户通过ssh连接登录2次失败后自动结束会话<br/>The server has disconnected with an error.&nbsp;&nbsp;Server message reads:<br/>A protocol error occurred. Too many authentication failures for root<br/><br/>(2)root只能从tty1和vc登陆。建议仅允许root从一个tty或vc登陆，如果需要更多设备登陆，使用su命令转换为root。<br/>openssh应该禁止使用协议1，禁止root直接登录<br/>/etc/ssh/sshd_config<br/>Protocol 2<br/>MaxAuthTries 1<br/>PermitRootLogin no&nbsp;&nbsp;//不允许root用户使用ssh登录<br/>StrictModes yes<br/>PermitEmptyPasswords no //不允许使用空密码登录<br/>PrintLastLog yes<br/><br/>root不登录，其他用户登录时，添加密码，和用户时的具体操作方法：<br/>useradd jackxiang<br/>忘记了密码，得有root去修改它即可：<br/>jackxiang@192.168.225.128:/root# su root<br/>密码：<br/>root@192.168.225.128:~# passwd jackxiang<br/>更改用户 jackxiang 的密码 。<br/>新的 密码：<br/>service sshd restart<br/><br/>禁止某些用户使用ssh远程登录：<br/>http://www.myhack58.com/Article/48/66/2011/30887.htm<br/>vim /etc/pam.d/sshd<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在第一行加入 auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; required&nbsp;&nbsp;&nbsp;&nbsp; pam_listfile.so item=user sense=deny file=/etc/sshdusers onerr=succeed，注意一定要在第一行，因为pam中执行顺序是上面优先<br/> <br/>vim /etc/sshdusers<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在文件中加入root&nbsp;&nbsp;&nbsp;&nbsp;wp ，root 和wp是两个本地用户<br/> <br/>service sshd restart<br/> <br/>在另一个终端测试<br/> <br/>[root@clone2 ~]# ssh clone1.rhel.com<br/>root@clone1.rhel.com&#039;s password: <br/>Permission denied, please try again.<br/>root@clone1.rhel.com&#039;s password: <br/>Permission denied, please try again.<br/>root@clone1.rhel.com&#039;s password: <br/>Permission denied (publickey,gssapi-with-mic,password).<br/> <br/>[wp@clone2 ~]$ ssh clone1.rhel.com<br/>wp@clone1.rhel.com&#039;s password: <br/>Permission denied, please try again.<br/>wp@clone1.rhel.com&#039;s password: <br/>Permission denied, please try again.<br/>wp@clone1.rhel.com&#039;s password: <br/>Permission denied (publickey,gssapi-with-mic,password).<br/>两个用户都无法使用ssh了。呵呵，目的达到了<br/><br/><br/><br/><br/>(3)root@192.168.225.128:~#&nbsp;&nbsp;cat /etc/login.defs &#124; grep PASS &#124; grep -v ^#<br/>PASS_MAX_DAYS&nbsp;&nbsp; 99999<br/>PASS_MIN_DAYS&nbsp;&nbsp; 0<br/>PASS_MIN_LEN&nbsp;&nbsp;&nbsp;&nbsp;5<br/>PASS_WARN_AGE&nbsp;&nbsp; 7<br/><br/>PASS_MAX_DAYS&nbsp;&nbsp; 90 //口令最大使用日期90天<br/>PASS_MIN_DAYS&nbsp;&nbsp; 0 //若设置为2，则设置密码2天后才可以再次更改密码，即密码至少要保留的天数<br/>PASS_MIN_LEN&nbsp;&nbsp;&nbsp;&nbsp;8 //口令最小长度8位<br/>PASS_WARN_AGE&nbsp;&nbsp; 7 //口令过期前7天警告<br/><br/>(4)<br/>umask至少为027，最好是077<br/>[root@station60 ~]# grep umask /etc/bashrc <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;umask 077<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;umask 077<br/>[root@station60 ~]# . /etc/bashrc<br/>[root@station60 ~]# umask <br/>0077<br/>[root@station60 ~]# touch 3.txt<br/>[root@station60 ~]# ll 3.txt <br/>-rw------- 1 root root 0 Apr&nbsp;&nbsp;8 00:11 3.txt<br/><br/>(5)<br/>检查系统是否最小化安装，启动的运行级别为3<br/><br/>查看/etc/pam.d/su是否包含以下两行<br/>auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sufficient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_rootok.so<br/># Uncomment the following line to implicitly trust users in the &quot;wheel&quot; group.<br/>#auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sufficient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_wheel.so trust use_uid<br/># Uncomment the following line to require a user to be in the &quot;wheel&quot; group.<br/>auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_wheel.so use_uid //上面的注释已经说的很清楚了，没有注释下面这一行，那么要su到别的用户就必须在wheel组中<br/><br/><br/>（6）关闭telnet服务，redhat默认是关闭telnet服务的<br/>[root@station90 ssh]# netstat -tnlp &#124; grep :23<br/>[root@station90 ssh]# cd /etc/xinetd.d/<br/>[root@station90 xinetd.d]# ls telnet*<br/>ls: telnet*: 没有那个文件或目录<br/>如果有telnet服务，则把该目录下的telnet文件改为disable=yes<br/>[root@station90 xinetd.d]# tail -n 2 /etc/xinetd.d/krb5-telnet &#124; head -n 1 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = yes<br/>[root@station90 xinetd.d]# service xinetd restart<br/>停止 xinetd：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[确定]<br/>启动 xinetd：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[确定]<br/><br/>===================================================================================<br/>上面是我从Url：http://lhf0616.blog.51cto.com/2920914/538453 总结的，我贴上原文：<br/>[root@station90 桌面]# awk&nbsp;&nbsp;-F : &#039;($2==&quot;&quot;) &#123;print $1&#125;&#039; /etc/shadow //检查空口令帐号<br/>zhang3<br/>[root@station90 桌面]# tail -n 1 /etc/shadow &#124; head -n 1&nbsp;&nbsp;//-F :是以冒号作为分隔符，($2==&quot;&quot;表示第1个和第2个冒号之间是空的，即空口令帐号，&#123;print $1&#125;打印出用户名<br/>zhang3::15071:0:99999:7:::<br/>检查帐号<br/>[root@station90 桌面]# pwck<br/>用户 adm：目录 /var/adm 不存在<br/>用户 news：目录 /etc/news 不存在<br/>用户 uucp：目录 /var/spool/uucp 不存在<br/>用户 gopher：目录 /var/gopher 不存在<br/>用户 pcap：目录 /var/arpwatch 不存在<br/>用户 avahi-autoipd：目录 /var/lib/avahi-autoipd 不存在<br/>用户 oprofile：目录 /home/oprofile 不存在<br/>pwck：无改变<br/><br/><br/>口令复杂度及登录失败策略<br/>应启用登录失败处理功能，可采取结束会话，限制非法登录次数和自动退出措施，口令应有复杂度要求并定期更换<br/>要求强制记住3个密码历史<br/>口令至少包含1个数字，字母和其他特殊字符（如：＃，＠，！，$等）；<br/>5次远程登录失败自动结束会话<br/>[root@station90 桌面]# cat /etc/login.defs &#124; grep PASS &#124; grep -v ^#<br/>PASS_MAX_DAYS&nbsp;&nbsp; 90 //口令最大使用日期90天<br/>PASS_MIN_DAYS&nbsp;&nbsp; 0 //若设置为2，则设置密码2天后才可以再次更改密码，即密码至少要保留的天数<br/>PASS_MIN_LEN&nbsp;&nbsp;&nbsp;&nbsp;8 //口令最小长度8位<br/>PASS_WARN_AGE&nbsp;&nbsp; 7 //口令过期前7天警告<br/><br/>[root@station90 pam.d]# cat /etc/pam.d/system-auth &#124; tail -n 2 &amp;&amp; grep ^#password /etc/pam.d/system-auth<br/>password&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_cracklib.so difok=3 minlen=8 dcredit=-1,lcredit=-1 ocredit=-1 maxrepeat=3<br/>password&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_unix.so use_authtok nullok md5<br/>#password&nbsp;&nbsp;&nbsp;&nbsp;requisite&nbsp;&nbsp;&nbsp;&nbsp; pam_cracklib.so try_first_pass retry=3 //注释这一行后，无法修改密码<br/>[root@station90 pam.d]# passwd<br/>Changing password for user root.<br/>passwd: Authentication information cannot be recovered<br/><br/>修改登录失败策略<br/>[root@station90 ssh]# cat /etc/ssh/sshd_config&nbsp;&nbsp;&#124; grep MaxAuth<br/>MaxAuthTries 1 //远程用户通过ssh连接登录2次失败后自动结束会话<br/>[root@station90 ssh]# ssh 192.168.0.90<br/>root@192.168.0.90&#039;s password: <br/>Permission denied, please try again.<br/>root@192.168.0.90&#039;s password: <br/>Received disconnect from 192.168.0.90: 2: Too many authentication failures for root<br/><br/>关闭telnet服务，redhat默认是关闭telnet服务的<br/>[root@station90 ssh]# netstat -tnlp &#124; grep :23<br/>[root@station90 ssh]# cd /etc/xinetd.d/<br/>[root@station90 xinetd.d]# ls telnet*<br/>ls: telnet*: 没有那个文件或目录<br/>如果有telnet服务，则把该目录下的telnet文件改为disable=yes<br/><br/>[root@station90 xinetd.d]# tail -n 2 /etc/xinetd.d/krb5-telnet &#124; head -n 1 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = yes<br/>[root@station90 xinetd.d]# service xinetd restart<br/>停止 xinetd：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[确定]<br/>启动 xinetd：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[确定]<br/>[root@station90 xinetd.d]# chkconfig xinetd on<br/><br/>openssh应该禁止使用协议1，禁止root直接登录<br/>/etc/ssh/sshd_config<br/>Protocol 2<br/>MaxAuthTries 1<br/>PermitRootLogin no&nbsp;&nbsp;//不允许root用户使用ssh登录<br/>StrictModes yes<br/>PermitEmptyPasswords no //不允许使用空密码登录<br/>PrintLastLog yes<br/><br/>[root@station60 init.d]# pwd<br/>/etc/rc.d/init.d<br/>[root@station60 init.d]# chmod -R 750 ./ 也可以直接chmod -R /etc/init.d/*<br/>[root@station60 init.d]# ll &#124; head -n 2<br/>total 644<br/>-rwxr-x--- 1 root root&nbsp;&nbsp;1566 Jun&nbsp;&nbsp;8&nbsp;&nbsp;2009 acpid<br/><br/>umask至少为027，最好是077<br/>[root@station60 ~]# grep umask /etc/bashrc <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;umask 077<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;umask 077<br/>[root@station60 ~]# . /etc/bashrc<br/>[root@station60 ~]# umask <br/>0077<br/>[root@station60 ~]# touch 3.txt<br/>[root@station60 ~]# ll 3.txt <br/>-rw------- 1 root root 0 Apr&nbsp;&nbsp;8 00:11 3.txt<br/><br/>检查系统是否最小化安装，启动的运行级别为3<br/><br/>查看/etc/pam.d/su是否包含以下两行<br/>auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sufficient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_rootok.so<br/># Uncomment the following line to implicitly trust users in the &quot;wheel&quot; group.<br/>#auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sufficient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_wheel.so trust use_uid<br/># Uncomment the following line to require a user to be in the &quot;wheel&quot; group.<br/>auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_wheel.so use_uid //上面的注释已经说的很清楚了，没有注释下面这一行，那么要su到别的用户就必须在wheel组中<br/>[root@station60 pam.d]# gpasswd&nbsp;&nbsp;-a oracle wheel<br/>Adding user oracle to group wheel<br/>[root@station60 pam.d]# id oracle<br/>uid=500(oracle) gid=500(oracle) groups=500(oracle),0(root),10(wheel) context=system_u:system_r:unconfined_t<br/>[root@station60 pam.d]# id zhang3<br/>uid=501(zhang3) gid=501(zhang3) groups=501(zhang3) context=system_u:system_r:unconfined_t<br/>[root@station60 pam.d]# su - zhang3<br/>[zhang3@station60 ~]$ su - root //以下密码输入都是正确的<br/>Password: <br/>su: incorrect password<br/>[zhang3@station60 ~]$ su - oracle<br/>Password: <br/>su: incorrect password<br/>[zhang3@station60 ~]$ su - oracle<br/>Password: <br/>su: incorrect password<br/>[zhang3@station60 ~]$ su - oracle<br/>Password: <br/>su: incorrect password<br/>[zhang3@station60 ~]$ <br/>[oracle@station60 ~]$&nbsp;&nbsp;su - oracle<br/>Password: <br/>[oracle@station60 ~]$ su - root<br/>Password: <br/>[root@station60 ~]# <br/><br/>操作指南&nbsp;&nbsp;&nbsp;&nbsp;1．本地登录用户参考配置操作<br/>#cd /etc/profile.d<br/>执行<br/>#vi autologout.sh<br/>加入如下内容：<br/>TMOUT=600<br/>readonly TMOUT<br/>export TMOUT<br/>保存退出，系统将在用户闲置10分钟后自动注销。<br/><br/>2．远程登录用户参考配置操作<br/>#vi /etc/ssh/sshd_config<br/>将以下内容设置为：<br/>ClientAliveInterval 600<br/>ClientAliveCountMax 0<br/>以上表示10分钟闲置后，自动注销并结束会话。<br/>检测方法&nbsp;&nbsp;&nbsp;&nbsp;1、判定条件<br/>查看帐号超时是否自动注销；<br/>2、检测操作<br/>cat&nbsp;&nbsp;/etc/ssh/sshd_config<br/>检查其中两个参数设置：<br/>ClientAliveInterval 600<br/>ClientAliveCountMax 0<br/><br/>（2）执行：awk -F: &#039;($3 == 0) &#123; print $1 &#125;&#039; /etc/passwd<br/>返回值包括“root”以外的条目，说明有其他超级用户，低于安全要求。<br/>2、检测操作<br/>执行：awk -F: &#039;($3 == 0) &#123; print $1 &#125;&#039; /etc/passwd<br/>返回值包括“root”以外的条目，说明有其他超级用户；<br/><br/>/etc/securetty 文件设置root登陆的tty和vc（虚拟控制台）设备。/etc/securetty 文件被login程序读 (通常 /bin/login)。它的格式是允许的tty和vc列表，注释掉或不出现的设备，不允许root登陆。<br/>vc/1<br/>#vc/2<br/>#vc/3<br/>#vc/4<br/>#vc/5<br/>#vc/6<br/>#vc/7<br/>#vc/8<br/>#vc/9<br/>#vc/10<br/>#vc/11<br/>tty1<br/>#tty2<br/>#tty3<br/>#tty4<br/>#tty5<br/>#tty6<br/>#tty7<br/>#tty8<br/>#tty9<br/>#tty10<br/>#tty11<br/>root只能从tty1和vc登陆。建议仅允许root从一个tty或vc登陆，如果需要更多设备登陆，使用su命令转换为root。<br/><br/>#!/bin/sh<br/>#<br/>export file=/root/Desktop/
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/5099/#blogcomment63694</link>
<title><![CDATA[[评论] 设置Linux用户登录连续N次输入错误限制进行登陆时，自动锁定X分钟(pam_tally2)]]></title> 
<author>hxngb3lf &lt;pogl05@mail114.net&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Fri, 06 Apr 2012 16:22:06 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/5099/#blogcomment63694</guid> 
<description>
<![CDATA[ 
	我比较喜欢楼主名字很好听
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/5099/#blogcomment63698</link>
<title><![CDATA[[评论] 设置Linux用户登录连续N次输入错误限制进行登陆时，自动锁定X分钟(pam_tally2)]]></title> 
<author>zviwv08052 &lt;eliz32ns9plz@21cn.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 07 Apr 2012 23:08:01 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/5099/#blogcomment63698</guid> 
<description>
<![CDATA[ 
	还有什么值得我们留恋的呢唯有这些帖子吧值得期待
]]>
</description>
</item>
</channel>
</rss>