专栏首页Maroon1105使用TCP Wrappers保护您的Linode

使用TCP Wrappers保护您的Linode

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

为什么要使用TCP包装器?

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

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

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

ldd /path-to-daemon | grep libwrap.so

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

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

whereis sshd

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

sshd: /usr/sbin/sshd /usr/share/man/man8/sshd.8.gz

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

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。如果这些文件尚不存在,请创建它们:

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规则必须按特定顺序插入,如果应用更高规则,则将忽略文件中较低的规则。规则还具有您必须遵守的特定语法。规则如下所示:

daemons : hostnames/IPs

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

样例

拒绝一切

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

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日志文件。

本文的版权归 GongAo啊_ 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Solr涡轮增压您的WordPress搜索

    由于无法建议搜索短语,捕捉拼写错误,理解单词变体,组织和过滤结果以及索引搜索结果文档,因此WordPress内置的标准搜索无法为访问者提供最佳搜索体验。全文搜索...

    GongAo啊_
  • WordPress之去掉顶部工具栏

    用WP搭建自己博客的人都会发现网站上面有一个黑色的工具栏,影响网站美观度,那么怎么去掉顶部工具栏呐?

    GongAo啊_
  • 如何在Debian 9上安装OpenVZ

    OpenVZ是一种基于软件的操作系统虚拟化工具,可以在主机Linux发行版中部署,管理和修改隔离的虚拟Linux环境。各种Linux发行版中的大量预构建操作系统...

    GongAo啊_
  • 循序渐进升级Exchange 2010

    可以首先跑一遍exchange的升级程序来看都缺少哪些先决条件,解决先决条件后,再开始安装。

    py3study
  • 被学校辞退、拒绝FB,语音识别大牛Daniel Povey确认加入小米

    Daniel Povey这个名字,文摘菌早就说倦了,每次他一出现,就绝对是业界的大事!

    大数据文摘
  • Java 反射:框架设计的灵魂

    解释型语言:不需要编译,在运行的时候逐行翻译解释;修改代码时可以直接修改,可以快速部署,不过性能上会比编译型语言稍差;比如 JavaScript、Python ...

    黄泽杰
  • [边学边练]用简单实例学习React

    学习之路不可停止,最近在玩 React。也动手尝试写了一个实例。借此整理总结下初步学习 React 的一些基础知识。因为这几天比较忙,没那么多时间,所以实例和文...

    守候i
  • python 守护进程(daemon)

    通常,我们执行服务端程序的时候都会通过终端连接到服务器,成功连接后会加载shell环境,终端盒shell都是进程,shell进程是终端进程的子进程,通过ps命令...

    py3study
  • Python系列之——手把手教你玩Pycharm

    刚入门python的时候,一直觉得用哪个编辑器并没有差别,然而前两天发了一篇文章【Python系列之——如何每天跟女朋友说晚安~】,跟几个粉丝小伙伴在群里一起讨...

    小小詹同学
  • Objective-C使用位运算设计可复选的枚举

            在软件开发中,枚举是我们会经常会用到的一种编程方式,通过枚举,可以使我们的代码更具可读性与统一性。通常情况下,我们会通过typedef来定义一种...

    珲少

扫码关注云+社区

领取腾讯云代金券