{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

linux系统中如何拒绝特定IP访问?有哪些方法可以实现?

JulylovinJulylovin 回答0 收藏1
收藏问题

2条回答

DobbyKim

DobbyKim

回答于2022-06-28 11:44

这个非常简单,目前来说,有2种方法,一种是修改hosts.deny文件,一种是添加防火墙规则,下面我分别简单介绍一下:

修改hosts.deny文件

这个文件主要用于控制禁止访问本机的IP(路径/etc/hosts.deny),只需要添加禁止访问的IP地址,则指定的IP就不能访问Linux系统,如下,这里禁止IP为192.168.15.21的用户ssh远程登录,第一个字段为服务名称,第二个为IP地址(也可以是一个网络或所有IP),第三个为deny(也可以不写):

接着用IP为192.168.15.21的用户尝试着ssh登录Linux系统,如下,则会失败:

添加防火墙规则

这里以firewall防火墙为例(iptables防火墙类似),只需要使用firewall-cmd命令添加一条防火墙规则,拒绝指定IP地址访问Linux系统就行,如下,这里禁止IP为192.168.15.21的用户访问21端口(FTP服务):

接着用IP为192.168.15.21的用户尝试连接Linux FTP服务,如下,则会失败:

如果需要移除规则的话,使用参数remove-rich-rule就行,更多参数和说明的话,可以参考帮助命令“firewall-cmd -h”,每个参数都介绍的非常详细、清楚:

至此,我们就完成了禁止特定IP访问Linux系统。总的来说,这2种方法都非常简单,只要你有一定的Linux基础,熟悉一下上面的操作过程,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

评论0 赞同0
  •  加载中...
mochixuan

mochixuan

回答于2022-06-28 11:44

大概就三种方式,这里着重介绍后两种。

  1. Selinux 主要是对内核的访问权限加以控制

  2. TCP_Wrappers应用级防火墙

  3. Netfilter网络层防火墙

利用selinux

内核的强制安全访问控制

可以用getenforce获取目前Selinux的状态

vi /etc/sysconfig/selinux 设置SELINUX

TCP_Wrappers应用级防火墙

简单的来说就是利用

hosts.allow/hosts.deny

来进行访问控制。

首先要知道并不是所有的服务都是受tcp_wrappers管理的,只用采用libwrap库的服务才受管理。

  • 检测服务是否支持tcp_wrappers:

ldd $(which domainname) | grep libwrap

例如:ssh服务,如果有输入下一行,那么说明支持,可以用

hosts.allow/deny

文件进行访问控制,否则不可。

  • 被xinetd管理的服务和某些独立的服务(可以使用tcp_wrappers管理
  • httpd smb squid 不受tcp_wrappers管理
  • tcp_wrappers如何工作:

进程先检查文件/etc/hosts.allow,如果请求访问的主机名或IP包含在此文件中,则允许访问。 如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机名或IP有没有包含在hosts.deny文件中。如果包含,那么访问就被拒绝;如果既不包含在/etc/hosts.allow中,又不包含在/etc/

hosts.deny

中,那么此访问也被允许。

  • 举例:只允许192.1680.1访问sshd,其他都拒绝。

hosts.allow sshd:192.168.0.1:allow

hosts.deny sshd:ALL


Netfilter网络层防火墙

这其实就是我们常用的iptables,centos7开始使用firewalld服务,原理一样。

iptables不是真正起防护作用的,Netfilter才是真正的防护着系统,linux系统的安全框架位于内核。

iptables四表五链

四表:

  • filter表——过滤数据包
  • Nat表——用于网络地址转换(IP、端口)
  • Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
  • Raw表——决定数据包是否被状态跟踪机制处理

五链:

  • INPUT链——进来的数据包应用此规则链中的策略
  • OUTPUT链——外出的数据包应用此规则链中的策略
  • FORWARD链——转发数据包时应用此规则链中的策略
  • PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
  • POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)、

iptables访问控制举例

例如禁止192.168.1.1访问我的ssh服务,端口默认22

iptable -I INPUT -p tcp -s 192.168.1.1 --dport 22 -j ACCEPT

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<