OpenSSH 服务 (sshd)

关于 OpenSSH
OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。

OpenSSH 服务 (sshd)
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon’s more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:Port 22), 然后在下一行中使用粗体字 (如:Protocol 2)介绍为了增强安全防护而作的修改。

在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注 意,在/etc/ssh/文件夹下 还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。

如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。

sudo chmod a-w /etc/ssh/sshd_config.original

以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。

如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用:

sudo /etc/init.d/ssh restart

OpenSSH服务的建议设定
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。
登录
LogLevel INFO
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。

LogLevel VERBOSE

这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。

验证
LoginGraceTime 120
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置

LoginGraceTime 20

将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。

X11Forwarding yes

如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。

X11Forwarding no

现在,sshd的X11 forwarding功能被关闭了。

警告: 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。

#Banner /etc/issue.net

显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。

有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。

Banner /etc/issue.net

现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子:

使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容:

***************************************************************************
NOTICE TO USERS
This computer system is the private property of its owner, whether
individual, corporate or government. It is for authorized use only.
Users (authorized or unauthorized) have no explicit or implicit
expectation of privacy.
Any or all uses of this system and all files on this system may be
intercepted, monitored, recorded, copied, audited, inspected, and
disclosed to your employer, to authorized site, government, and law
enforcement personnel, as well as authorized officials of government
agencies, both domestic and foreign.
By using this system, the user consents to such interception, monitoring,
recording, copying, auditing, inspection, and disclosure at the
discretion of such personnel or officials. Unauthorized or improper use
of this system may result in civil and criminal penalties and
administrative or disciplinary action, as appropriate. By continuing to
use this system you indicate your awareness of and consent to these terms
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the
conditions stated in this warning.
****************************************************************************
保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:

sudo ln -s /etc/issue /etc/issue.net

重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息”你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。

另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。

发表评论

电子邮件地址不会被公开。 必填项已用*标注