学习啦 > 学习电脑 > 电脑安全 > 防火墙知识 >

使用ssh访问防火墙后的Linux服务器的方法是什么

时间: 加城1195 分享

  防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。这篇文章主要介绍了使用ssh访问防火墙后的Linux服务器的方法, 即在Linux上设置反向 ssh隧道的相关方法,需要的朋友可以参考下

  使用ssh工具访问Linux服务器的基本方法

  第一步,开启工作站上防火墙的相应端口,SSH是22。

  第二步,开启SSH服务。

  先查看ssh的状态。

  复制代码代码如下:

  service sshd status

  开启服务,

  复制代码代码如下:

  service sshd start

  当然也可以关闭了,

  复制代码代码如下:

  service sshd stop

  重启服务,

  复制代码代码如下:

  sshd restart

  第三步,修改配置文件,/etc/ssh/sshd_config

  打开这个文件,在最后的地方AllowUsers,添加用户名,多个就用空格隔开,当然也可以添加root。如果想禁用root 登录也可以,这里不添加。同时可以在这个文件中找到一个语句: Permitrootlogin yes。将yes改为no就可以了。

  第四步,设置ssh随机启动

  复制代码代码如下:

  chkconfig --level xxxx sshd on //xxxx表示你要的等级(应该这么说吧),例如2345等

  第五步,远程登录

  复制代码代码如下:

  ssh usrname@hostname //hostname或者Ip

  然后就是要你输入密码了。登录后,也可以更改用户(su 命令)。如何希望有图形,也不是不可以,在登录的时候加上 -X (大写的X):ssh -X usrname@hostname。

  这样勉强可以吧,也有图形界面了,就是反映比较慢,应急可以。

  通过反向 SSH 隧道访问 NAT 后面的 Linux 服务器

  什么是反向 SSH 隧道?

  SSH 端口转发的一种替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常简单。使用这种方案,在你的受限的家庭网络之外你需要另一台主机(所谓的“中继主机”),你能从当前所在地通过 SSH 登录到它。你可以用有公网 IP 地址的 VPS 实例 配置一个中继主机。然后要做的就是从你的家庭网络服务器中建立一个到公网中继主机的永久 SSH 隧道。有了这个隧道,你就可以从中继主机中连接“回”家庭服务器(这就是为什么称之为 “反向” 隧道)。不管你在哪里、你的家庭网络中的 NAT 或 防火墙限制多么严格,只要你可以访问中继主机,你就可以连接到家庭服务器。

  在 Linux 上设置反向 SSH 隧道

  让我们来看看怎样创建和使用反向 SSH 隧道。我们做如下假设:我们会设置一个从家庭服务器(homeserver)到中继服务器(relayserver)的反向 SSH 隧道,然后我们可以通过中继服务器从客户端计算机(clientcomputer) SSH 登录到家庭服务器。本例中的中继服务器 的公网 IP 地址是 1.1.1.1。

  在家庭服务器上,按照以下方式打开一个到中继服务器的 SSH 连接。

  复制代码代码如下:

  homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1

  这里端口 10022 是任何你可以使用的端口数字。只需要确保中继服务器上不会有其它程序使用这个端口。

  “-R 10022:localhost:22” 选项定义了一个反向隧道。它转发中继服务器 10022 端口的流量到家庭服务器的 22 号端口。

  用 “-fN” 选项,当你成功通过 SSH 服务器验证时 SSH 会进入后台运行。当你不想在远程 SSH 服务器执行任何命令,就像我们的例子中只想转发端口的时候非常有用。

  运行上面的命令之后,你就会回到家庭主机的命令行提示框中。

  登录到中继服务器,确认其 127.0.0.1:10022 绑定到了 sshd。如果是的话就表示已经正确设置了反向隧道。

  复制代码代码如下:

  relayserver~$ sudo netstat -nap | grep 10022

  复制代码代码如下:

  tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd

  现在就可以从任何其它计算机(客户端计算机)登录到中继服务器,然后按照下面的方法访问家庭服务器。

  复制代码代码如下:

  relayserver~$ ssh -p 10022 homeserver_user@localhost

  需要注意的一点是你在上面为localhost输入的 SSH 登录/密码应该是家庭服务器的,而不是中继服务器的,因为你是通过隧道的本地端点登录到家庭服务器,因此不要错误输入中继服务器的登录/密码。成功登录后,你就在家庭服务器上了。

  通过反向SSH 隧道直接连接到网络地址变换后的服务器

  上面的方法允许你访问 NAT 后面的 家庭服务器,但你需要登录两次:首先登录到 中继服务器,然后再登录到家庭服务器。这是因为中继服务器上 SSH 隧道的端点绑定到了回环地址(127.0.0.1)。

  事实上,有一种方法可以只需要登录到中继服务器就能直接访问NAT之后的家庭服务器。要做到这点,你需要让中继服务器上的 sshd 不仅转发回环地址上的端口,还要转发外部主机的端口。这通过指定中继服务器上运行的 sshd 的 GatewayPorts 实现。

  打开中继服务器的 /etc/ssh/sshd_conf 并添加下面的行。

  复制代码代码如下:

  relayserver~$ vi /etc/ssh/sshd_conf

  GatewayPorts clientspecified

  重启 sshd。

  基于 Debian 的系统:

  复制代码代码如下:

  relayserver~$ sudo /etc/init.d/ssh restart

  基于红帽的系统:

  复制代码代码如下:

  relayserver~$ sudo systemctl restart sshd

  现在在家庭服务器中按照下面方式初始化一个反向 SSH 隧道。

  复制代码代码如下:

  homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

  登录到中继服务器然后用 netstat 命令确认成功建立的一个反向 SSH 隧道。

  复制代码代码如下:

  relayserver~$ sudo netstat -nap | grep 10022

  复制代码代码如下:

  tcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev

  不像之前的情况,现在隧道的端点是 1.1.1.1:10022(中继服务器的公网 IP 地址),而不是 127.0.0.1:10022。这就意味着从外部主机可以访问隧道的另一端。

  现在在任何其它计算机(客户端计算机),输入以下命令访问网络地址变换之后的家庭服务器。

  复制代码代码如下:

  clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1

  在上面的命令中,1.1.1.1 是中继服务器的公共 IP 地址,homeserver_user必须是家庭服务器上的用户账户。这是因为你真正登录到的主机是家庭服务器,而不是中继服务器。后者只是中继你的 SSH 流量到家庭服务器。

  在 Linux 上设置一个永久反向 SSH 隧道

  现在你已经明白了怎样创建一个反向 SSH 隧道,然后把隧道设置为 “永久”,这样隧道启动后就会一直运行(不管临时的网络拥塞、SSH 超时、中继主机重启,等等)。毕竟,如果隧道不是一直有效,你就不能可靠的登录到你的家庭服务器。

  对于永久隧道,我打算使用一个叫 autossh 的工具。正如名字暗示的,这个程序可以让你的 SSH 会话无论因为什么原因中断都会自动重连。因此对于保持一个反向 SSH 隧道非常有用。

  第一步,我们要设置从家庭服务器到中继服务器的无密码 SSH 登录。这样的话,autossh 可以不需要用户干预就能重启一个损坏的反向 SSH 隧道。

  下一步,在建立隧道的家庭服务器上安装 autossh。

  在家庭服务器上,用下面的参数运行 autossh 来创建一个连接到中继服务器的永久 SSH 隧道。

  复制代码代码如下:

  homeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

  “-M 10900” 选项指定中继服务器上的监视端口,用于交换监视 SSH 会话的测试数据。中继服务器上的其它程序不能使用这个端口。

  “-fN” 选项传递给 ssh 命令,让 SSH 隧道在后台运行。

  “-o XXXX” 选项让 ssh:

  使用密钥验证,而不是密码验证。

  自动接受(未知)SSH 主机密钥。

  每 60 秒交换 keep-alive 消息。

  没有收到任何响应时最多发送 3 条 keep-alive 消息。

  其余 SSH 隧道相关的选项和之前介绍的一样。

  如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local。

  补充阅读:防火墙主要使用技巧

  一、所有的防火墙文件规则必须更改。

  尽管这种方法听起来很容易,但是由于防火墙没有内置的变动管理流程,因此文件更改对于许多企业来说都不是最佳的实践方法。如果防火墙管理员因为突发情况或者一些其他形式的业务中断做出更改,那么他撞到枪口上的可能性就会比较大。但是如果这种更改抵消了之前的协议更改,会导致宕机吗?这是一个相当高发的状况。

  防火墙管理产品的中央控制台能全面可视所有的防火墙规则基础,因此团队的所有成员都必须达成共识,观察谁进行了何种更改。这样就能及时发现并修理故障,让整个协议管理更加简单和高效。

  二、以最小的权限安装所有的访问规则。

  另一个常见的安全问题是权限过度的规则设置。防火墙规则是由三个域构成的:即源(IP地址),目的地(网络/子网络)和服务(应用软件或者其他目的地)。为了确保每个用户都有足够的端口来访问他们所需的系统,常用方法是在一个或者更多域内指定打来那个的目标对象。当你出于业务持续性的需要允许大范围的IP地址来访问大型企业的网络,这些规则就会变得权限过度释放,因此就会增加不安全因素。服务域的规则是开放65535个TCP端口的ANY。防火墙管理员真的就意味着为黑客开放了65535个攻击矢量?

  三、根据法规协议和更改需求来校验每项防火墙的更改。

  在防火墙操作中,日常工作都是以寻找问题,修正问题和安装新系统为中心的。在安装最新防火墙规则来解决问题,应用新产品和业务部门的过程中,我们经常会遗忘防火墙也是企业安全协议的物理执行者。每项规则都应该重新审核来确保它能符合安全协议和任何法规协议的内容和精神,而不仅是一篇法律条文。

  四、当服务过期后从防火墙规则中删除无用的规则。

  规则膨胀是防火墙经常会出现的安全问题,因为多数运作团队都没有删除规则的流程。业务部门擅长让你知道他们了解这些新规则,却从来不会让防火墙团队知道他们不再使用某些服务了。了解退役的服务器和网络以及应用软件更新周期对于达成规则共识是个好的开始。运行无用规则的报表是另外一步。黑客喜欢从来不删除规则的防火墙团队。


使用ssh访问防火墙后的Linux服务器的方法是什么相关文章:

1.Linux查看ssh版本的方法

2.外网SSH怎么访问内网LINUX

3.Linux禁止某个IP地址访问的方法

4.如何解决端口映射之后还有访问不了内网的服务器

5.Mercury路由如何解决外网无法访问映射后的服务器

4041667