/etc/hosts.allow

用来限制服务器允许执行的ip登陆感觉比防火墙方便很多。

文章出自:

http://see.sl088.com/wiki/Linux_%E9%99%90%E5%88%B6IP

就像是

  • 限制特定IP来访

想法

  • 看起来通常的做法是利用hosts的拒绝设置,而它的设置是针对某一个具体的进程,具体的服务,在这里就是sshd了

  • 看起来设置一个网段使用的是

  • x.x.x.0/24

  • 后面加个24真是有趣,是保持所有的可能性吗

  • 上面的方法看起来是子网匹配的方式

  • 如果更简单一些看起来可以直接保留前面一部分去

  • 131.155. 可以匹配后面是任何玩意的玩意,比如131.155.1.1

  • 除了作为sshd限制,它看起来能限制一切玩意呢,这个就像是更特殊一点的hosts,只是hosts只是解析域名而已

经验

  • 生效是立即发生的,但是对已经打开的shell无效,所以一边留着shell设置,一边再开shell

  • 它的语法很有趣,最后一部分看起来可以要也可以不要

  • 192.168.0.0/255.255.255.0:deny

  • 在每一条里,[,]是分割多个ip,而[:]是分割它的处理

  • 噢见鬼的[255.255.255.0]看起来指的是局域网

  • 看起来all大小小写都可以

  • 它的工作是实时的,修改后就生效了

困扰

  • allow和deny的优先是怎样的呢

一个有效的IP段工作

  • 这样看起来工作了

[root@li576-236 ~]# cat /etc/hosts.allow ## hosts.allow   This file describes the names of the hosts which are#               allowed to use the local INET services, as decided#               by the '/usr/sbin/tcpd' server.# # for the shell sshd:11.8.,12.1.,18.3.:allow

有趣

  • 看起来.0这个ip是不存在的,它看起来是虚拟的

  • 192.168.1.0

首次尝试

限制sshd

hosts.deny

  • 直接进入编辑

  • vim /etc/hosts.deny

  • 加入这个玩意,拒绝一切

# no sshdsshd : ALL

hosts.allow

  • 进入编辑

  • vim /etc/hosts.allow

  • 试试一个0.0的段落-遗憾无法登陆!被屏蔽

# for the shell - 它什么也没做到sshd : 101.11.0.0/24
  • 如果全部IP匹配呢?它可以登陆,这说明了它工作了

# for the shell - 它可以准确的允许这个ip,24起到作用了sshd : 101.11.10.1/24
  • 那么后面部分都去掉呢?-它工作了!

# for the shell - 它可以允许这个ip段!哇喔sshd : 101.11.
别的情况
  • 这里注意有个诡异的情况!-如果省略最后的部分的话,必须完全避开空格!空格也会作为正则匹配的一部分

  • 在这个基础上加个24的玩意呢?-它不工作

# for the shell - 它不能允许这个ip段,失败sshd : 101.11./24
  • 后面加个标签什么的呢?-它也工作

# for the shell - 后面的标签看起来不碍事 sshd : 101.11.: allow
  • 如果是任意的标签呢?-不,它不干了

# for the shell - 它现在什么也不干了,不认ip了- 可能有正则问题sshd : 101.11. : hello
  • 如果再补回中间的allow呢?-不也不干了

# for the shell - 依旧的啥也不干- 可能有正则问题sshd : 101.11.:allow : hello
  • 加上逗号,多个ip段呢?这次第二个没工作,可能少了.的原因

# for the shell - 逗号,这次工只工作了第一个,可能少了第二个的点-值得再尝试sshd : 101.11.,103.22:allow : hello
  • 带上逗号,然后每个都有最后的点,它工作了!

# for the shell - 逗号,全部工作了!必须最后带点,而且看起来空格也不要依赖(最好了)sshd:101.11.,103.22.:allow

想法

  • windows里看起来也有这个文件呢

音频想法


  • sshd的限制看起来并不复杂,它通过一个host的限制文件等命(命令?)于这样的一个设置,来完成它的一大部分,而接着你可以对它进行绝交(拒绝交谈)设置,而与此有趣的是此项设置也能用在pptp的服务,因为看起来它限制的是一个hosts端的玩意(系统底层网络服务?)

  • ->....hosts.allow?目标..mac看起来还是保留了它...win也拐弯的有了它..(c:/windows/driver/etc/hosts?)

见识

linux下的/etc/hosts.allow和/etc/hosts.deny文件_老游爱你_百度空间 沿途见识[1]

linux下的/etc/hosts.allow和/etc/hosts.deny文件
/etc/hosts.allow和/etc/hosts.deny这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:

  1. 服务进程名:主机列表:当规则匹配时可选的命令操作server_name:hosts-list[:command]

/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hosts.deny为准。下面是一个/etc/hosts.allow的示例:
ALL:127.0.0.1 #允许本机访问本机所有服务进程smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务
ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
今天用来禁止一些恶意的ip地址登陆到服务器。因为远程登陆需要sshd进程,所以:
修改步骤如下:
1:修改“/etc/hosts.allow”文件,在最下面添加一行:
sshd:192.168.100.0/255.255.255.0        #允许局域网内所有机器访问服务器上的sshd进程
sshd:60.28.160.244                                  #允许外网的60.28.160.244访问这个服务器上的sshd进程
2:修改“/etc/hosts.deny”文件,在最后一行添加:
sshd:all                                                    #禁止所有
注: 1):修改前,请先修改“/etc/hosts.allow”文件,并且修改完毕之后切勿立即退出,应该做登陆测试
          2):文件修改后,立即生效,但是对于已经运行的程序则不生效。

鳥哥的 Linux 私房菜 -- 移除不要的服務 沿途见识[2]

察看是否具有 tcp_wrappers 套件:

要使連線電腦的設定啟動,以使用 /etc/hosts.allow 與 /etc/hosts.deny 檔案的話,需要這一套軟體『tcp_wrappers』,要察看你的 Linux 主機內是否有這一套軟體的話,請使用: 
 
rpm -q tcp_wrappers 或者 rpm -qa | grep tcp

如果有這套軟體的話,自然就會顯示出來,如果沒有的話,請放入你的 Linux 光碟片,將 rpm 檔案裝上去吧!

設定允許登入的電腦(/etc/hosts.allow):

其實很簡單,只要修改 /etc/hosts.allow(如果沒有此檔,請自行以 vi 編輯)這這檔案即可,例如,我家裡的電腦中,我的內部網域(區域網路)是 192.168.1.0/255.255.255.0,這樣的網域代表電腦 IP 在於 192.168.1.1 - 192.168.1.255 之間!所以,我就將 /etc/hosts.allow 這個檔案的內容設定成為如此: 
 
in.telnetd: 192.168.1.0/255.255.255.0, .ncku.edu.tw : Allow

加入 .ncku.edu.tw 的原因是因為我人在成大,所以加入此行的話,可以使我在成大連上我家裡的 Linux 主機。

設定不許登入的電腦(/etc/hosts.deny):

由於正常的情況下, Linux 會先判斷 hosts.allow 這個檔案,這個檔案中的電腦如果設定為可連線的話,則 hosts.deny 就不會被使用,因此,設定好了 hosts.allow 之後,將 /etc/hosts.deny 設定為『所有電腦都不許登入』的情況,如下所示: 
 
in.telnetd: ALL : Deny

這樣一來,基本的防護措施就有了(不用重新開機就自動執行了!)。

hosts.allow - Linux Command - Unix Command 沿途见识[3]

PATTERNS

The access control language implements the following patterns:

  • A string that begins with a `.' character. A host name is matched if the last components of its name match the specified pattern. For example, the pattern `.tue.nl' matches the host name `wzv.win.tue.nl'.

  • A string that ends with a `.' character. A host address is matched if its first numeric fields match the given string. For example, the pattern `131.155.' matches the address of (almost) every host on the Eindhoven University network (131.155.x.x).

  • A string that begins with an `@' character is treated as an NIS (formerly YP) netgroup name. A host name is matched if it is a host member of the specified netgroup. Netgroup matches are not supported for daemon process names or for client user names.

  • An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a `net/mask' pair. An IPv4 host address is matched if `net' is equal to the bitwise AND of the address and the `mask'. For example, the net/mask pattern `131.155.72.0/255.255.254.0' matches every address in the range `131.155.72.0' through `131.155.73.255'.

SSH限制ip登陆 - Mr. Kang - 51CTO技术博客 沿途见识[4]

在/etc/hosts.allow输入   
  (其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)   
  sshd:192.168.10.88:allow   
    
  在/etc/hosts.deny输入(表示除了上面允许的,其他的ip   都拒绝登陆ssh)   
  sshd:ALL
本文将讲述一些可以加强Unix,Linx服务器SSH访问的安全性的一些措施。
我个人极力非常推荐的措施是:
1.限制性SSH访问,将sshd绑定到一个ip地址,和允许所有ip地址是完全不同的安全。
2.将sshd默认端口22改为其它端口。
步骤如下:
前提:
SSH 客户端 - 我推荐使用 putty (搜索google,你会很快找到它)
SSH 服务已安装
第一步: 以root身份SSH登录到服务器。
第二步:在命令提示符下输入:pico -w /etc/ssh/sshd_config
第三步:向下翻页,在这个文件中找到像这样的区域:

  1. Port 22

  2. Protocol 2, 1

  3. ListenAddress 0.0.0.0

  4. ListenAddress ::

第四步:取消注释符号#,并修改
端口 #Port 22
像这样修改它
Port 5678
(选择你未被使用的4到5位数字组成的端口(49151是最高端口数))
协议 #Protocol 2, 1
改为这样:
Protocol 2
监听地址 #ListenAddress 0.0.0.0
改为这样:
ListenAddress 125.121.123.15(这里的地址改为你自己访问服务器常用的客户端ip地址)
第五步 如果你想禁用直接用root登录,向下翻知道你看见

  1. PermitRootLogin yes

去掉前面的注释符号#,修改为
PermitRootLogin no
按住Ctrl键保存修改,在按Ctrl + x组合键退出。
第六步 在命令提示符下输入: /etc/rc.d/init.d/sshd restart
第七步 退出SSH,以后再登录就必须使用新的端口号(如:49151),并且服务器限制只允许从一个指定的
IP地址(如:125.121.123.15)SSH登录了。
注意事项:
如果修改后出现不能登录或者其他问题,你只需要为服务器接上显示器 或者 Telnet 到你的服务器,修改设置,然后再重新SSH登录。Telnet 是一个非常不安全的协议,所以在你使用它之后最好是修改一下你的root密码。
(the end)
 
或者
linux限制IP访问ssh
 
在/etc/hosts.allow输入   
(其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)   
sshd:192.168.10.88:allow   
    
在/etc/hosts.deny输入(表示除了上面允许的,其他的ip   都拒绝登陆ssh)   
sshd:ALL
 
更改端口
vi /etc/ssh/sshd_config
port 3333

最后一行加上ip
allowusers root@ip   ------------------允许某个ip用什么帐户登陆


转自:http://see.sl088.com/wiki/Linux_限制IP

转载于:https://blog.51cto.com/xuefu/1873284

ssh访问限制 /etc/hosts.allow 和/etc/hosts.deny 详解相关推荐

  1. etc/hosts.allow和/etc/hosts.deny详解

    修改/etc/hosts.allow文件 # # hosts.allow This file describes the names of the hosts which are # allowed ...

  2. Docker学习:外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍容器间内部相互访问和外部访问容器的一些方法,它和前面两篇:容器五种(3+2)网络模式.容器之间单/双向通信 |--link /自 ...

  3. ARM平台下独占访问指令LDREX和STREX的原理与使用详解

    为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁.为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持. 在计算机领域里,如果要在多线程的情况下要 ...

  4. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解

    java代码实现访问网络外部接口并获取数据的工具类 工具类代码,可以直接copy使用 package com.yqzj.util; import org.apache.log4j.LogManager ...

  5. 设置计算机访问权限密码忘了怎么办,苹果访问限制密码是什么?忘记怎么办【详解】...

    导读: 苹果 手机的很多功能都非常实用,可以在我们需要的时候带给我们方便,不需要的时候也可以将其关闭,在苹果手机当中有很多系统功能,很多时候,我们不需要开启所有的系统功能,这时我们就需要关闭这些系统功 ...

  6. C语言访问数组的常用方法,C语言数组基本知识点详解

    数组基本知识点: 1,数组初始化,命名 2.数组大小,数组类型 3.数组访问方法 4.字符数组 5.数组下标越界 6.数组作为函数参数问题 7.二维数组基本概念以及多维数组 以后还会有关于指针数组问题 ...

  7. 网络图片访问不到,403的解决办法(详解)

    富文本中复制百度百科的一份知识,在项目预览时发现图片显示不出来,报403问题, 图片地址用新网址打开正常显示 原因:403是防止盗链的错误(这种设计,是api厂商正常保证自己的服务器不被刷流量) 比如 ...

  8. 苹果计算机访问限制,苹果访问限制密码是什么?忘记怎么办【详解】

    导读: 苹果 手机的很多功能都非常实用,可以在我们需要的时候带给我们方便,不需要的时候也可以将其关闭,在苹果手机当中有很多系统功能,很多时候,我们不需要开启所有的系统功能,这时我们就需要关闭这些系统功 ...

  9. 【iOS系列教程】忘记 iOS 的访问限制密码,找回或重设方法详解

    经测试:iPhone5s(iOS10.3.1未越狱)的『访问限制密码』已经成功破解,不需要恢复iPhone系统.不需要恢复备份.不需要越狱,所以数据不会丢失一个字节. 此方法适用于:iOS10/9/8 ...

  10. linux 访问windows 端口,Linux和Windows下查看端口详解

    Linux和Windows下查看端口详解 我们常会在计算机上安装很多软件,如果喜欢冲浪的话,必然就会用的软件的通信,当然包括web开发的,应用多了,难免会要不小心占用端口的问题,这时候用命令来处理是最 ...

最新文章

  1. 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
  2. chartcontrol饼状图属性设置_温故而知新,ggplot2 饼图的几点笔记
  3. 云计算的新界面—Kubernetes容器技术
  4. 位运算 c语言 头文件 linux,1. 位运算_C语言_C语言入门-Linux C编程一站式学习...
  5. STM32 - 定时器的设定 - 基础 01.1 - Repetition counter
  6. SpringCloud常见面试题(2020最新版)
  7. Sublime text 3 SVN插件及使用方法
  8. 计算机发展史和数字电路
  9. php mssql 分页SQL语句优化 持续影响
  10. Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
  11. excel随机数_如何返回1至10之间的不重复随机数
  12. java基于ssm的自助旅游管理系统
  13. 【qq机器人】发送图片的插件
  14. 待办事项 数据库表设计
  15. 【Busybox】Busybox源码分析-04 | ash和login程序
  16. 7-2 判断是否含敏感词汇
  17. cp1025支持linux,HP LaserJet Pro CP1025 系列彩 技术规格 | HP®People's Republic of China
  18. 小白的学习之路--IDEA安装及使用
  19. mybatis 常见错误:Mapped Statements collection does not contain value for com.*
  20. Robotics: Aerial Robotics(空中机器人)笔记(二):如何设计一架四旋翼无人机

热门文章

  1. matlab练习程序(倾斜校正,透视变换)
  2. 提高C++运行效率的方法
  3. 智能优化算法:头脑风暴优化算法-附代码
  4. icesat2 重要参数
  5. HTML5学习总结(1)——HTML5基础知识
  6. mysql 查询结果导出文件并导入文件到数据库
  7. pythotn基础篇——条件分支与循环--4
  8. 5天学python_人生苦短,我将学习Python基本句子(第5天),我学,基础,篇,语句,Day5...
  9. python实现归并排序_排序算法学习(python版本)之归并排序(MergeSort)
  10. php 中tp3.2中c,thinkphp3.2笔记(2)调试模式,配置项C,创建模块, 四种URL模式,URL生成,跳转...