<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Openssh%E5%AE%89%E5%85%A8%E6%80%A7%E9%85%8D%E7%BD%AE</id>
	<title>Openssh安全性配置 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Openssh%E5%AE%89%E5%85%A8%E6%80%A7%E9%85%8D%E7%BD%AE"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Openssh%E5%AE%89%E5%85%A8%E6%80%A7%E9%85%8D%E7%BD%AE&amp;action=history"/>
	<updated>2026-04-17T11:13:53Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Openssh%E5%AE%89%E5%85%A8%E6%80%A7%E9%85%8D%E7%BD%AE&amp;diff=781&amp;oldid=prev</id>
		<title>Evan：​/* 参考 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Openssh%E5%AE%89%E5%85%A8%E6%80%A7%E9%85%8D%E7%BD%AE&amp;diff=781&amp;oldid=prev"/>
		<updated>2022-05-25T11:24:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;参考&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==起因==&lt;br /&gt;
刚刚被ddos 有人想用root 去登录我的机器 ，于是 抽空作一下笔记，也加固一下vps &lt;br /&gt;
&lt;br /&gt;
== SSH 安全性相关配置==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
这些同时也适合于vps &lt;br /&gt;
&lt;br /&gt;
1.通过控制用户访问限制 SSH 访问： &lt;br /&gt;
# vi /etc/ssh/sshd_config &lt;br /&gt;
AllowUsers fsmythe bnice swilson&lt;br /&gt;
DenyUsers jhacker joebadguy jripper&lt;br /&gt;
&lt;br /&gt;
2.将 root 账户仅限制为控制台访问：&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
&lt;br /&gt;
3.仅使用 SSH Protocol 2：&lt;br /&gt;
&lt;br /&gt;
Protocol 2&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
LoginGraceTime 30  #LoginGraceTime 允许一次登录花费 30 秒；如果用户花费的时间超过 30 秒，就不允许他访问，必须重新登录。&lt;br /&gt;
MaxAuthTries 2  #MaxAuthTries 把错误尝试的次数限制为 3 次，3 次之后拒绝登录尝试&lt;br /&gt;
&lt;br /&gt;
5.禁用用户的 .rhosts 文件：&lt;br /&gt;
# vi /etc/ssh/sshd_config&lt;br /&gt;
IgnoreRhosts yes&lt;br /&gt;
&lt;br /&gt;
6.禁用空密码：&lt;br /&gt;
# vi /etc/ssh/sshd_config&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7.不要支持闲置会话，并配置 Idle Log Out Timeout 间隔：&lt;br /&gt;
#当客户端连上服务器端后,若没有任何操作则,服务器端默认会&lt;br /&gt;
#每隔一定时间发送一个alive消息给客户端寻求客户端应答,&lt;br /&gt;
#默认一共发三次.若都没有回应,则断开连其中           &lt;br /&gt;
#ClientAliveInterval设置每隔多少秒发送一次alive消息&lt;br /&gt;
#ClientAliveCountMax 设置一共发多少次.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ClientAliveInterval 600		# (Set to 600 seconds = 10 minutes)&lt;br /&gt;
ClientAliveCountMax 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
下面是非交互操作命令&lt;br /&gt;
#use sed   no Interaction&lt;br /&gt;
&lt;br /&gt;
#deny root ssh   PermitRootLogin&lt;br /&gt;
mkdir -p /data/back_cnf &lt;br /&gt;
cp -a /etc/ssh/sshd_config /data/back_cnf&lt;br /&gt;
sed -i &amp;#039;s/^PermitRootLogin yes$/PermitRootLogin no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
sed -i &amp;#039;s/^#PermitRootLogin yes$/PermitRootLogin no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
sed -i &amp;#039;s/^PasswordAuthentication yes$/PasswordAuthentication no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
sed -i &amp;#039;s/^ChallengeResponseAuthentication yes$/ChallengeResponseAuthentication no/&amp;#039; /etc/ssh/sshd_config &lt;br /&gt;
sed -i &amp;#039;s/^PermitEmptyPasswords yes$/PermitEmptyPasswords no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
sed -i &amp;#039;s/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
sed -i &amp;#039;s/#UseDNS yes/UseDNS no/&amp;#039; /etc/ssh/sshd_config&lt;br /&gt;
systemctl restart  sshd&lt;br /&gt;
#service sshd restart&lt;br /&gt;
&lt;br /&gt;
#打开pubk&lt;br /&gt;
sed -i &amp;quot;s/#PubkeyAuthentication yes/PubkeyAuthentication yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
#禁止密码&lt;br /&gt;
sed -i &amp;quot;s/^PasswordAuthentication yes/PasswordAuthentication no/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8.配置 iptables，以便在 30 秒内仅允许在端口 2022 上有三个连接尝试：&lt;br /&gt;
Redhat iptables example (Update /etc/sysconfig/iptables): &lt;br /&gt;
-I INPUT -p tcp --dport 2022 -i eth0 -m state --state NEW -m recent --set&lt;br /&gt;
&lt;br /&gt;
-I INPUT -p tcp --dport 2022 -i eth0 -m state --state NEW -m recent --update &lt;br /&gt;
--seconds 30 --hitcount 3 -j DR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9.从系统上删除 rlogin 和 rsh 二进制程序，并将它们替代为 SSH 的一个 symlink：&lt;br /&gt;
# find /usr -name rsh&lt;br /&gt;
/usr/bin/rsh&lt;br /&gt;
# rm -f /usr/bin/rsh&lt;br /&gt;
# ln -s /usr/bin/ssh /usr/bin/rsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#下面这些比较安全但是比较麻烦 适合生产环境 &lt;br /&gt;
10.为私有密钥使用一个强大的口令和密码保护来创建公私密钥对（绝不要生成一个无密码的密钥对或一个无密码口令无密钥的登录）：&lt;br /&gt;
(Use a higher bit rate for the encryption for more security)&lt;br /&gt;
ssh-keygen -t rsa -b 4096&lt;br /&gt;
&lt;br /&gt;
11.配置 TCP 包装程序，以便仅允许选定的远程主机并拒绝不合意的主机：&lt;br /&gt;
# vi /etc/hosts.deny&lt;br /&gt;
ALL: 192.168.200.09		# IP Address of badguy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以减少ssh连接超时等待的时间：&lt;br /&gt;
方法：ssh -o ConnectTimeout=3 192.168.0.10&lt;br /&gt;
或修改sshd_config文件里面的UseDNS 选项，改为UseDNS no。&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==TCP Wrappers ==&lt;br /&gt;
TCP Wrappers是优先查找/etc/host.allow，再查找/etc/host.deny&lt;br /&gt;
如果两个文件信息有冲突，同一个主机出现在两个文件中，则/etc/allow的生效，如果一个主机都没有出现在2个文件中，则默认允许访问&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo sed  -i &amp;#039;$a\sshd:61.140.169.212,138.68.5.0&amp;#039;  /etc/hosts.allow&lt;br /&gt;
 &lt;br /&gt;
 vi /etc/hosts.deny&lt;br /&gt;
 sshd:ALL&lt;br /&gt;
 &lt;br /&gt;
 sudo sed  -i &amp;#039;$a\sshd:ALL&amp;#039; /etc/hosts.deny&lt;br /&gt;
&lt;br /&gt;
#在非 61.140.169.212,138.68.5.0 上ssh  &lt;br /&gt;
ssh  root@youid&lt;br /&gt;
ssh_exchange_identification: read: Connection reset by peer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[http://www.linuxe.cn/post-145.html Linux简单防火墙TCP Warppers设置]&lt;br /&gt;
&lt;br /&gt;
==其它==&lt;br /&gt;
&amp;lt;pre&amp;gt;配置和使用 ssh-agent&lt;br /&gt;
对于拒绝创建无密码 SSH 公私密钥对的真正的偏执狂来说，有一个 ssh-agent 实用程序。简言之，您使用 ssh-agent 实用程序来暂时在无口令集的公私密钥对配置上授予无密码的 SSH 访问，但仅针对当前 shell 会话。在运用 ssh-agent 实用程序之前，像往常一样输入口令：&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://johnsonwjx.github.io/post/vps-guard/  (转载)SSH暴力攻击的几种防范方法 ]&lt;br /&gt;
&lt;br /&gt;
保护 SSH 的三把锁&lt;br /&gt;
https://www.ibm.com/developerworks/cn/aix/library/au-sshlocks/&lt;br /&gt;
&lt;br /&gt;
SSH 安全性和配置入门 不错哦  SSH 架构&lt;br /&gt;
https://www.ibm.com/developerworks/cn/aix/library/au-sshsecurity/index.html#ibm-pcon&lt;br /&gt;
&lt;br /&gt;
http://www.jianshu.com/p/37464cea469e&lt;br /&gt;
http://forlinux.blog.51cto.com/8001278/1352900&lt;br /&gt;
&lt;br /&gt;
Linux/Centos服务器ssh安全设置&lt;br /&gt;
https://www.haiyun.me/archives/linux-ssh-secure-config.html&lt;br /&gt;
&lt;br /&gt;
[[category:Security]] [[category:ops]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>