Linux中hosts.allow与hosts.deny

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中hosts.allow与hosts.deny相关的知识,希望对你有一定的参考价值。

参考技术A   linux  /etc目录下有五个host开头的文件  :host.conf hostname hosts hosts.allow hosts.deny。

1、host.conf 文件指定如何解析主机名,笔者的centos7的/etc/host.conf里面是 multi on,即指定的主机可以有多个IP地址。

2、hosts.allow与hosts.deny这两个配置文件控制外部IP对本机服务的访问,hosts.allow控制可以访问本机的IP地址,hosts.deny控制禁止访问本机的IP。配置完成之后是实时生效的。

3、hostname是主机名,当你在命令行输入hostname时返回的主机名,也是环境变量中命令行 prompt 显示的主机名。

4、 hosts负责IP地址与域名快速解析的文件,包含了IP地址和主机名之间的映射,还包括主机名的别名。详情参考笔者的文章-linux中/etc/hosts文件配置。

    先来测试一下hosts.allow与hosts.deny这两个配置文件设置ssh的连接。

    hosts.deny中添加设置 sshd : ALL,再次使用ssh连接,会出现:ssh_exchange_identification: read: Connection reset 的错误,但是已经连接上的ssh是不会中断的,说明 hosts.deny时在连接时查询的配置文件。

    然后在hosts.allow中添加设置sshd : 192.168.56.1,再次使用ssh可以成功连接。

    在设置屏蔽所有ssh后,在单独允许192.168.56.1这个ip地址,ssh是允许的,那么就存在优先级问题。优先级为先检查hosts.deny,再检查hosts.allow。

     两个配置文件的格式如下:

 服务进程名:主机列表:当规则匹配时可选的命令操作。

    为了安全可以在hosts.deny文件中配置拒绝所有的访问ALL:ALL,然后在hosts.allow文件中逐个开放访问许可,增强安全性。

    sshd可以换成其他服务进程名,比如httpd、telnetd等等。

使用/etc/hosts.allow和/etc/hosts.deny设置SSH白(黑)名单

1. 简介

TCP Wrapper是Linux系统中一个通用的标准安全框架。其作用类似于IPTABLES, 用于控制从inetd启动的基于TCP的应用程序的访问。其守护进程是tcpd, 通过读取如下两个文件中的相关策略配置,决定允许还是拒绝到达的TCP连接。使用它来限制服务器允许执行的ip登陆,比防火墙方便很多。

/etc/hosts.allow

/etc/hosts.deny

linux系统会先检查/etc/hosts.deny规则,再检查/etc/hosts.allow规则。如果有冲突 ,按/etc/hosts.allow规则处理。即如果在/etc/hosts.deny和/etc/hosts.allow中,同时有sshd:192.168.11.112规则,则192.168.11.112可以访问主机的ssh服务。


2. 配置规则

  • 设置白名单

一般的用法是在hosts.allow中配置信任主机规则,然后到hosts.deny中拒绝所有其他主机。

# more /etc/hosts.allow 


# 设置IP网段
sshd:150.223.254.0/255.255.255.0:allow
sshd:182.42.255.0/255.255.255.0:allow
# 设置具体某个IP地址
sshd:36.111.140.26 allow
sshd:36.111.140.142 allow
sshd:106.39.160.37 allow


# more /etc/hosts.deny 

sshd: all
  • 设置黑名单

还有一种方法,在/etc/hosts.allow中接受其他所有主机,然后在/etc/hosts.deny中设置引用文件,在引用文件中禁用特定IP。

# more  /etc/hosts.allow 

sshd: all


# more /etc/hosts.deny

sshd:192.168.11.112
sshd:36.111.140.26

修改后,名单即时生效。


3. 参考文章

https://baike.baidu.com/item/TCP%20Wrapper/17661285?spm=a2c4g.11186623.0.0.23df3fbbCV7FuO

以上是关于Linux中hosts.allow与hosts.deny的主要内容,如果未能解决你的问题,请参考以下文章

linux限制ssh之查看登录指令

使用Navicat连接阿里云服务器上的MySQL数据库=======Linux 开放 /etc/hosts.allow

Linux服务器允许和限制访问

使用/etc/hosts.allow和/etc/hosts.deny设置SSH白(黑)名单

linux-tcp_wrapper

Linux主机登陆加固