Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件【转】
就像是
- 限制特定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 sshd
sshd : 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对本机服务的访问。这两个配置文件的格式如下:
- 服务进程名:主机列表:当规则匹配时可选的命令操作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
第三步:向下翻页,在这个文件中找到像这样的区域:
- Port 22
- Protocol 2, 1
- ListenAddress 0.0.0.0
- 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登录,向下翻知道你看见
- 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用什么帐户登陆
转自
Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件 - 生死看淡,不服就干! - CSDN博客 https://blog.csdn.net/u013634961/article/details/39855543
Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件【转】的更多相关文章
- Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析(1-4)
Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配 ...
- 提高Linux安全性--hosts.allow, hosts.deny 文件修改方法
有一种办法来提高Linux安全性--修改 hosts.allow , hosts.deny 这2个文件来配置 允许某个ip访问, 或者禁止访问. 可以通过这种方式设置限制 sshd 的远程访问, 只允 ...
- Linux学习(一):linux更改ip地址命令_更改DNS_更改默认网关_更改子网掩码_主机名
如何使用命令来更改linux的IP .DNS .子网掩码,在虚拟机(vitrualBox)上添加一个Linux的虚拟机; 安装方法:http://pan.baidu.com/s/1sjJPhP7 安装 ...
- 解决redhat linux下IP地址可以ping通,域名无法ping通问题
解决redhat linux下IP地址可以ping通,域名无法ping通 在/etc/resolv.conf中添点东西 格式如下: nameserver xxx.xxx.xxx.xxx nameser ...
- linux 修改IP, DNS 命令
linux 修改IP, DNS 命令 http://www.cnblogs.com/fighter/archive/2010/03/04/1678007.html 修改DNS [root@localh ...
- Linux内核IP层的报文处理流程(一)
本文主要讲解了Linux内核IP层的整体架构和对从网卡接受的报文处理流程,使用的内核的版本是2.6.32.27 为了方便理解,本文采用整体流程图加伪代码的方式对Linxu内核中IP整体实现架构和对网卡 ...
- linux双线ip设置(不需额外增加路由表)
linux 双线ip设置(不需额外增加路由表,只需修改下面就ok了)修改 vi /etc/iproute2/rt_tables (增加电信和网通两个路由表) 增加252 ...
- linux 查看ip地址
1.先要打开linux服务器,然后在linux桌面的空白处点击右键 2.在弹出的选项里,点击[打开终端] 3.打开linux服务器的命令终端后,输入查询linux的ip地址的命令:ifconfig - ...
- 阿里云服务器 ECS Linux 禁止IP 通过 SSH 登录
这几天买的服务器老是受到黑客攻击被破解登录密码,今天修改了登录规则发现只有固定ip可以访问,其他ip即使有密码也无法登录我的服务器,但是能通过ip访问我的网站,哈哈. 限制 IP SSH 登录解决步骤 ...
随机推荐
- DRF 视图初识
from django.shortcuts import render from rest_framework.generics import ListAPIView,CreateAPIView,Up ...
- Struts框架笔记04_拦截器_标签库
目录 1. Struts2的拦截器 1.1 拦截器概述 1.2 拦截器的实现原理 1.3 Struts的执行流程 1.4 拦截器入门 1.4.1 环境搭建 1.4.2 编写拦截器 1.4.3 配置拦截 ...
- Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019
CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...
- 学习python的日常5
形如__xxx__的变量或者函数名,在python中是有特殊用途的,例如__slots__是为了绑定属性的名称, __len()__方法是为了让class作用于len()函数,很多这样的函数都可以帮忙 ...
- c# ArrayList 类
- prometheus operator 部署
prometheus operator 部署自定义记录 环境: k8s 1.11集群版本,kubeadm部署 docker 17.3.2版本 Centos 7系统 阿里云服务器 operator 源码 ...
- openGL起飞篇
我的技术路线:glfw+glad(有了glfw,什么glew,freeglut都不要了) GLFW:直接下载,然后新建vs项目,在<VC++>的<包含目录>添加include路 ...
- CentOS7使用阿里yum源安装Docker
yum install -y yum-utils device-mapper-persistent-data lvm2安装所需的包 # yum-config-manager --add-repo ht ...
- SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】-原生代码+@Bean+效果展示
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件,class MyServlet()/clas ...
- GITHUB下载源码
从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄.然而,今天终于成功了,激动地我赶紧来记录一下. 如何从G ...