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的主要内容,如果未能解决你的问题,请参考以下文章
使用Navicat连接阿里云服务器上的MySQL数据库=======Linux 开放 /etc/hosts.allow