前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用TCP Wrappers保护您的Linode

使用TCP Wrappers保护您的Linode

作者头像
GongAo啊_
发布2018-09-21 11:02:15
1.1K0
发布2018-09-21 11:02:15
举报
文章被收录于专栏:Maroon1105Maroon1105

TCP包装器是基于主机的访问控制系统。它们用于通过仅允许特定客户端访问服务器上运行的服务来防止对服务器的未授权访问。

为什么要使用TCP包装器?

TCP包装器在您的服务器和任何潜在的攻击者之间创建了一层额外的安全性。除访问控制功能外,它们还提供日志记录和主机名验证。TCP包装器将在大多数基于Linux和UNIX的操作系统上开箱即用,这使得它们易于设置,并且是对现有防火墙实现的完美补充。

我怎么知道程序是否可以使用TCP包装器?

并非所有服务都支持TCP包装器。必须使用libwrap库编译服务。公共服务,如sshdftpdtelnet默认支持TCP包装。我们可以检查服务是否支持TCP包装:

代码语言:javascript
复制
ldd /path-to-daemon | grep libwrap.so

该命令ldd打印可执行文件的共享依赖项列表。通过管道输出lldgrep,我们正在搜索返回的列表libwrap.so。如果此命令有任何输出,我们可以假设支持TCP包装器。

例如,如果我们想ssh在服务器上测试守护进程,我们必须首先找到它的二进制文件:

代码语言:javascript
复制
whereis sshd

您很可能会得到多个结果:

代码语言:javascript
复制
sshd: /usr/sbin/sshd /usr/share/man/man8/sshd.8.gz

文件位于/usr/bin并且/usr/sbin很可能是您要查找的可执行文件。现在我们知道要检查libwrap依赖项的文件:

代码语言:javascript
复制
ldd /usr/sbin/sshd | grep libwrap.so
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007ff363c01000)

我如何使用TCP包装器?

TCP包装器依赖于两个文件才能工作:/etc/hosts.allow/etc/hosts.deny。如果这些文件尚不存在,请创建它们:

代码语言:javascript
复制
touch /etc/hosts.{allow,deny}

编辑hosts.allow和hosts.deny

您可以使用任何您喜欢的文本编辑器编辑hosts.allow和hosts.deny。hosts.deny在首选文本编辑器中打开该文件。如果你从未打开过hosts.deny,它会看起来像这样:

的/etc/hosts.deny

1 2 3 4 5 6 7 8 9 10 11 12 13

# # hosts.deny This file contains access rules which are used to # deny connections to network services that either use # the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # The rules in this file can also be set up in # /etc/hosts.allow with a 'deny' option instead. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers #

规则可以添加到此文件中。hosts.deny规则必须按特定顺序插入,如果应用更高规则,则将忽略文件中较低的规则。规则还具有您必须遵守的特定语法。规则如下所示:

代码语言:javascript
复制
daemons : hostnames/IPs

在冒号的左侧,输入以空格分隔的守护程序列表(守护程序只是在后台运行的进程。例如,sshd是SSH的守护程序)。在冒号的右侧,放置一个以空格分隔的主机名,IP地址和规则适用的通配符列表。

样例

拒绝一切

此示例hosts.deny文件将阻止所有进程中的所有客户端。

代码语言:javascript
复制
ALL : ALL

我们可以用这样的句子来表达这个规则,“拒绝所有客户端访问所有守护进程”。无论来源如何,此规则都将拒绝服务器的所有流量。不推荐使用此规则,因为除了LISH之外,它将拒绝您访问自己的服务器。

允许例外

在规则的hosts.allow文件中有比规定更高的优先级hosts.deny的文件。这允许我们使用hosts.allow文件为我们的拒绝规则创建例外。

  1. 在首选文本编辑器中打开hosts.allow
  2. 在您的hosts.allow文件中,您可以添加例外。找到您要允许的IP,即您自己的IP地址或其他服务器的IP地址。
  3. 选择允许IP地址访问的服务。以下示例将允许SSH流量。 以下是规则的显示方式,替换123.45.67.89为您希望允许的IP: sshd : 123.45.67.89 保存文件时,规则将自动生效。

通配符

TCP包装器具有通配符,允许您创建不限于某些IP地址或主机名的宽泛规则。您可以使用的通配符是ALLLOCALUNKNOWNKNOWNPARANOID

以下是每个通配符的含义:

  • 全部 - 匹配一切。
  • LOCAL - 匹配不包含点(.)的主机名。
  • UNKNOWN - 匹配名称未知的任何用户/主机名。
  • 已知 - 匹配名称已知的任何用户/主机名。
  • PARANOID - 匹配名称与其地址不匹配的任何主机。

记录

TCP包装器将根据/etc/syslog.conf文件中的设置记录连接。这些日志文件的默认位置是/var/log/messages日志文件。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用TCP包装器?
    • 我怎么知道程序是否可以使用TCP包装器?
    • 我如何使用TCP包装器?
      • 编辑hosts.allow和hosts.deny
      • 样例
        • 拒绝一切
          • 允许例外
          • 通配符
          • 记录
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档