保护 SSH 的三把锁(增加黑客入侵的难度)

  • 时间:
  • 浏览:1
  • 来源:彩神幸运飞艇_神彩幸运飞艇官方

对于 knockd 一种,有有几块选项须要考虑:

使用任何文本编辑器创建此文件;其中每行暗含一八个序列(按照上端所示的格式)。应该在远程计算机上保存此文件的拷贝以便记住怎么能否登录。

“隐匿产生安全” 你这个概念尽人皆知太大太大受到亲戚亲戚大伙儿 的嘲笑,肯能采用隐匿的法律依据,希望没人了解您的法律依据,这而是一厢情愿的想法。太大太大,在太大太大场景中,隐匿太大太大儿会有帮助。尽管简单的法律依据无法阻止下定决心的黑客,太大太大离米 可不能否 挡住你这个 “脚本小子”,亲戚大伙儿 的脚本往往水平很一般。

首先讨论一八个基本你这个的现象:究竟为你这个要使用 PAM?肯能每个程序不得不定义我本人的身份验证逻辑,就会很混乱。怎么能否选择所有程序都实现了相同的测试和检查?肯能须要额外的控制手段,没人为什么在么在办?难道要重新编写所有程序吗?在计算机科学领域,有完后 可不能否 用额外的一层处置所有你这个的现象,离米 在安全方面是没人 。肯能一八个程序须要验证用户的身份,它可不能否 调用 PAM API。你这个 API 负责执行在 PAM 配置文件中指定的所有检查。你这个法律依据还允许方便地修改身份验证规则,所有感知 PAM 的程序都会自动地应用新规则,不须要修改它们的代码。肯能希望使用一种生物学检查(比如虹膜扫描器或指纹分派器),太大太大生产商提供了 PAM,就可不能否 方便地设置它。在配置文件中暗含模块调用,所有程序就可不能否 使用你这个设备了。

/etc/knockd.conf 文件有一八个一般选项小节 options,希望使用的每个敲门序列各有一八个小节。选项可不能否 是大写、小写或大小写混合形式。

清单 4. 通过使用 pam_access.so,定义谁可不能否 或可不能否 使用 SSH

现在,亲戚亲戚大伙儿 来使用 PAM 限制谁可不能否 连接您的服务器。须要编辑 /etc/pam.d/sshd 文件,让它像清单 3 没人 。

究竟是是是不是有门?

增强计算机安全性的最后一种方案是最激进的:关闭打开的端口,这会让任何攻击都无法攻破您的计算机。只向可不能否 提供 “秘密敲门暗号” 的用户开放所需的端口,让用户可不能否 输入密码并访问计算机。

肯能您的服务器通过路由器连接 Internet,就须要修改它的配置。具体细节因路由器和防火墙类型而异,太大太大一般来说应该:

谁可不能否 进入?

源文档 <http://www.ibm.com/developerworks/cn/aix/library/au-sshlocks/index.html?ca=drs-#ibm-pcon>

清单 3. 在 sshd PAM 文件中加进 pam_access.so

你这个技术称为端口敲门,适用于须要访问不向公众开放的服务器的用户。服务器可不能否 关闭所有端口,直到用户提供一八个秘密的敲门序列 (序列很容易实现,太大太大须要的资源太大)。

打开秘密端口完后 ,应用常用的安全机制(比如密码或证书)。只需在防火墙级上提供一八个额外的安全层,须要秘密端口的所有服务就会正常工作。

在 sshd PAM 文件中加进 pam_access.so,就可不能否 轻松地定义谁可不能否 使用 SSH 连接您的计算机。pam_access.so 模块实现基于 /etc/security/access.conf 文件的安全控制,见清单 4。

PAM 提供八个安全领域的特征,太大太大程序不太肯能共同须要所有你这个方面。类似于,passwd 命令只须要下面列表中的第三组:

为了检验你这个过程,回到您的远程机器上并登录。你这个次提供所需的敲门序列,见 清单 7。注意,在安装 knockd 时通常也会安装knock 命令。肯能都会 没人 ,只须要发行版的包管理工具搜索它。

肯能须要远程访问计算机并启用了 Secure Shell (SSH) 连接,黑客就会尝试突破您的防线并控制您的计算机,您须要接受你这个事实。尽管非要保证计算机不需要被 “黑客” 占领,太大太大太大太大简单的处置方案有有助于于保护 SSH,可不能否 让攻击困难太大太大。本文讨论一种技术:

加强保护

auth required pam_listfile.so item=user sense=allow

file=/etc/ssh_users onerr=fail

在 /etc/pam.d 目录中为将使用 PAM 的每个程序创建一八个配置文件,文件名与程序名相同。类似于,login 命令的配置文件是 /etc/pam.d/login。

清单 2. 标准的 “other” 配置文件

knock the.url.for.your.site 7000

尽管路由器会打开太大太大端口,太大太大对它们的所有访问都会到达您计算机的防火墙。访问会被阻止,除非探测到正确的端口敲门序列。

清单 6. 肯能禁用 SSH 访问太大太大不启动敲门守护程序,登录尝试会失败

肯能您占据 路由器上端

现在,使用 sudo /etc/init.d/knockd start 或 sudo knockd -d 启动端口敲门守护程序(你这个八个命令是等效的),太大太大再试一下;端口敲门序列要求在端口 7000、1000 和 9000 上敲门。须要在 15 秒内完成你这个序列。识别出序列完后 端口打开,须要在 100 秒内登录。太大太大,端口再次关闭。

您看了了一种保护 SSH 访问的法律依据:修改 sshd 的配置参数,通过 PAM 限制可不能否 登录的用户,以及使用端口敲门序列隐藏占据 SSH 访问的事实。尽管没人任何法律依据可不能否 完整性保护任何计算机,太大太大采取你这个八个法律依据会让您的服务器安全太大太大。

为了实现你这个小法律依据,只需在 /etc/ssh/sshd_config 文件中做简单的修改。编辑此文件(须要作为根用户),寻找 Port 22 行,把端口号改为您选择的号码(肯能你这个行以镑符 [#] 开头,表示它被注释掉了,没人应该注销注释标志)。保存文件,用/etc/init.d/sshd restart 命令重新启动 SSH。应该在防火墙上打开您选择的端口并关闭端口 22。

即使应用了前两节中的法律依据,无论您为什么在么在预防,黑客仍然会尝试穿越您系统中任何开放的门户。改变 SSH 端口号对于经验充沛的黑客非要造成小小的麻烦。限制允许访问的用户会有帮助,但前提是没人用户落入黑客或社会工程攻击的圈套而泄露密码。无论怎么能否,我希望您的系统暗含门,就会吸引黑客。

你这个示例在用户依次在端口 7000、1000 和 9000 上敲门完后 启用 SSH 访问。

用 PAM 限制访问

清单 5. 针对 OpenSUSE 防火墙设计的示例配置文件

肯能提供了错误的敲门序列(或根本没人敲门),会收到 “Connection timed out” 消息,SSH 端口仍然完整性关闭,看没了它是占据 的。

#%PAM-1.0

account include common-account

account required pam_access.so

auth include common-auth

auth required pam_nologin.so

password include common-password

session include common-session

关于太大太大模块和编写我本人的模块的信息,请查阅 参考资料。现在,使用 PAM 决定谁可不能否 登录您的计算机。

简介

这为你这个是非常安全的方案?肯能有 65,535 个端口(见 参考资料)。即使考虑到肯能分配的端口,仍然有超过 100,000 个可用端口。肯能敲门序列只暗含四次 “敲门”,黑客要想通过强力攻击猜出序列,就须要测试离米 13,000,000,000,000,000,000 个序列(13 上端 18 个零)。没人 的攻击显然不太肯能奏效!当然,强力攻击或胡乱猜测并都会 猜出正确序列的惟一法律依据。太大太大,不须只使用单一安全法律依据;而是使用一系列安全层来增加攻击的难度。

对于大多数人,PAM 是一种罐装的烹调油。太大太大作为 Linux® 安全术语,PAM 代表可插入身份验证模块(Pluggable Authentication Modules)。你这个模块提供额外的身份验证规则,保护对计算机的访问。

要想应用你这个技术,须要可不能否 访问根账户。另外,肯能须要安装太大太大包,须要配置防火墙和路由器(肯能有路由器话语),打开和关闭特定的端口并把数据包转发到您的计算机。

最后,可不能否 使用多种法律依据产生敲门序列一种,编写 knock 命令是最简单的法律依据。

太大太大可用法律依据

[opencloseSSH]

sequence= 7000,1000,9000

tcpflags= syn

seq_timeout= 15

cmd_timeout= 100

start_command= /usr/sbin/iptables -s %IP% -I input_ext 1 -p tcp –dport 229100 -j ACCEPT

stop_command= /usr/sbin/iptables -s %IP% -D input_ext -p tcp –dport 229100 -j ACCEPT

knock the.url.for.your.site -u 1000

可不能否 让 knockd 监听多个序列并以不同法律依据响应各个序列。在前面的示例中,让 knockd 打开 SSH 端口;可不能否 简单地启用 HTTP 端口,让用户可不能否 访问 web 服务器,也可不能否 运行特定的程序。在配置文件中,每个序列都会 相应的小节。

LoginGraceTime 允许一次登录花费 100 秒;肯能用户花费的时间超过 100 秒,就不允许他访问,须要重新登录。MaxAuthTries 把错误尝试的次数限制为 3 次,3 次完后 拒绝登录尝试。上端的 Protocol 2 行禁止使用比较弱的协议。最后一行不允许任何人作为根用户登录,这会让黑客攻击更困难。还可不能否 使用 DenyUsers、AllowUsers、DenyGroups 和 AllowGroups 选项实现太大太大限制。你这个修改不需要显著增强计算机的安全性,太大太大只尝试强力攻击标准端口 22 的一般脚本会失败,不需要造成损害。无论怎么能否,这是向正确的方向迈出了第一步。在本文上端,亲戚亲戚大伙儿 将使用更安全的法律依据,不仅修改端口号,太大太大完整性隐藏它。

这还没人完。须要修改 /etc/ssh/sshd_config 文件,让它使用 PAM。在此文件中加进 UsePAM yes 行,重新启动 sshd 守护程序,没人 就行了!

特殊的 /etc/pam.d/other 文件是 “默认的” 配置文件(见 清单 2),其中的规则自动地应用于没人我本人的配置文件的所有程序。为了确保安全,应该快速检查 /etc/pam.d 目录,把您不使用的所有配置文件改为太大太大名称(没人 就会使用 other 配置)。肯能认为实在须要某个程序,没人只需把配置文件改回没人 的名称。默认配置通常拒绝所有请求(通过使用 pam_deny.so 模块)并警告管理员(通过 pam_warn.so 模块),让管理员处置你这个的现象。

knock the.url.for.your.site 1000:udp

清单 1. 通过修改 SSH 配置文件简便地增强安全性

标准的 “other” 配置文件为没人我本人的配置文件的所有程序提供安全的默认规则(拒绝所有请求)。

以下命令在 TCP 端口 7000 上敲门:

日后现在开始了语

清单 7. 提供所需的敲门序列完后 登录成功

> knock the.url.for.your.site 7000

> knock the.url.for.your.site 1000

> knock the.url.for.your.site 9000

> ssh the.url.for.your.site -p 229100 -o ConnectTimeout=10

Password:

第一行允许任何用户 (ALL) 从内部人员网络登录。后两行允许用户 jack 和 jill 从任何地方访问服务器。最后一行拒绝太大太大任何用户从太大太大任何地方访问。允太大太大个用户访问的另一种法律依据是使用 pam_listfile.so,这须要创建一八个允许访问的用户列表(类似于 /etc/ssh_users)。在 /etc/pam.d/sshd 文件中加进以下行:

ssh -p 229100 your.machine.url

在启动 knockd 完后 ,关闭端口 229100 并尝试远程登录。你这个尝试应该会失败,见清单 6。

以下命令在 UDP 端口 1000 上敲门:

account required pam_deny.so

auth required pam_deny.so

auth required pam_warn.so

password required pam_deny.so

password required pam_warn.so

session required pam_deny.so

肯能把 pam_deny.so 替换为 pam_unix.so,就应用标准的身份验证法律依据(输入用户名和密码)。肯能您不关心安全性,没人使用pam_permit.so,这会允许任何请求!

配置文件的特征很简单。可不能否 暗含注释,注释以散列符 (#) 开头;通过在换行处加进反斜杠 (/),可不能否 把长的行分为多行。行有一八个字段:领域 (account、auth、password 或 session)、控制标志(optional、required、requisite 或 sufficient)、将运行的模块的路径和参数。注意,第八个字段可不能否 更错综复杂;更多信息见 参考资料。另外,可不能否 使用 include 规则以暗含太大太大文件中的规则,比如auth include common-account。

敲门配置

须要定义将应用你这个模块,创建一八个动作 “堆”。PAM 运行堆中的所有模块,根据它们的结果允许或拒绝用户的请求。还须要定义检查是是是不是必需的。最后,other 文件为没人特殊规则的所有程序提供默认规则。

Port 229100

LoginGraceTime 100

MaxAuthTries 3

Protocol 2

PermitRootLogin no

在这里,肯能只希望打开或关闭端口 229100,太大太大使用单一命令就够了。肯能须要更错综复杂的操作,可不能否 通过调用脚本执行所需的任何操作 — 操作甚至可不能否 完整性不涉及打开端口。可不能否 触发任何操作,比如运行程序或执行备份。当然,了解要使用的命令肯能有点儿儿难度。类似于,肯能我运行 OpenSUSE,它提供我本人的防火墙前端,太大太大我不得不通过查看 iptables -l 的输出了解应该执行哪个命令来打开或关闭端口 229100。

尽管没人标准的模块列表,太大太大所有发行版都暗含以下模块中的大多数。请检查驻留模块的 /lib/security 或 /usr/lib/security 目录。对于 64 位操作系统,用 lib64 替换 lib。肯能须要更多信息,可不能否 尝试执行 man the.name.of.the.module,而不须直接执行它;PAM 都会 可执行的二进制代码。

iptables 向提供敲门序列的 IP 地址上的用户开放端口 229100。

须要安装敲门守护程序 knockd;它监视敲门序列,当发现有效的序列时执行相应的操作。肯能我想要,可不能否 从头构建它,太大太大大多数(肯能都会 所有话语)发行版中都会 你这个包。最好使用包管理工具安装它。类似于,在 OpenSUSE 中,可不能否 使用 Yast2 或通过执行sudo zypper install knockd 安装它。在 Ubuntu 中可不能否 使用 sudo apt-get install knockd,在 Debian 中使用 sudo aptitude install knockd。用发行版的软件安装工具搜索 knockd 往往可不能否 找到它。

> ssh the.url.for.your.site -p 229100 -o ConnectTimeout=15

ssh: connect to host the.url.for.your.site port 229100: Connection timed out

你这个法律依据的要点在于关闭所有端口并监视内部人员连接尝试。当识别出预定义的尝试序列(称为敲门序列 )时,可不能否 执行打开端口等操作,让内部人员的用户可不能否 进来。敲门序列的错综复杂程度由您决定,从简单的列表(比如依次尝试 TCP 端口 7000、UDP 端口 7100 和 TCP 端口 7100)到一次性序列集合都可不能否 。(按密码学术语来说,一次性序列与 “一次一密” 类似于,这是已知最安全的加密法律依据。)外面的用户须要知道使用 SSH 所需的端口号和密码,还须要知道打开端口并启用密码所需的敲门序列。肯能没人你这个序列,连接尝试就会静悄悄地失败。

+ : ALL : 192.168.1.

+ : jack : ALL

+ : jill : ALL

- : ALL : ALL

人人都知道 SSH 连接的标准端口是 22。太大太大,为了让计算机更安全,应该采取的第一八个法律依据是把端口改为没人 不常用的非标准端口号,比如 229100。1024 以上的号码通常都可不能否 使用,太大太大应该查阅参考资料以处置导致 你这个的现象。你这个修改对您的影响仅仅是须要使用下面的命令连接计算机:

配置 PAM

-h 参数提供你这个命令的帮助。

太大太大,还可不能否 更进一步。编辑配置文件,在其中暗含 清单 1 所示的行。注意,其中太大太大行肯能肯能占据 ,太大太大可不能否 把它们注释掉。

安装你这个包完后 ,须要编辑 /etc/knockd.conf 文件以指定端口敲门规则,太大太大启动守护程序。为了完成所需的设置,须要了解您的防火墙的工作法律依据。类似于,在 OpenSUSE 中,可不能否 使用 清单 5 没人 的设置。