概述
本文主要介绍在Linux系统中,禁止IP或者网段访问服务的方法。
本文主要介绍如下2种方法禁止IP或者网段访问服务。本文相关IP或网段纯属虚构,用户需要结合自己的需求进行设置。
方法一
- 登录实例,编辑
/etc/hosts.deny
文件,添加如下内容,然后保存并退出。sshd:203.XXX.XXX.189 #禁止203.XXX.XXX.189对服务器SSH的访问 sshd:203.XXX.XXX.0/255.XXX.XXX.0 #禁止203.XXX.XXX.0~255.XXX.XXX.0对服务器SSH的访问
- 执行如下命令,重启服务使配置生效。
service xinetd restart
方法二
-
登录实例,如果您是Centos6.x 、Centos7.x系列系统可使用系统防火墙(firewalld)来禁用IP
屏蔽单个IP:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' #192.168.1.100填写您需要禁止的IP
sudo firewall-cmd --reload #保存生效
屏蔽IP段:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject' #192.168.1.0/24填写您需要禁止的IP网段 可整体禁止
sudo firewall-cmd --reload #保存生效
屏蔽单个IP+端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="80" protocol="tcp" reject' #192.168.1.100填写您需要禁止的IP 80可改为您需要禁止的端口
sudo firewall-cmd --reload #保存生效 -
使用iptables防火墙(Centos全系列推荐使用)
Centos7.x默认使用firewalld作为防火墙,我们需要先停用firewalld并安装iptables:
systemctl stop firewalld systemctl disable firewalld yum install iptables-services systemctl start iptables systemctl enable iptables
配置iptables规则
屏蔽单个IP:
iptables -A INPUT -s 192.168.1.100 -j DROP
该命令将阻止来自IP地址192.168.1.100的所有访问。您可以根据需要替换为要封禁的实际IP地址。
屏蔽单个IP端口:
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j DROP
该命令将阻止来自IP地址192.168.1.100和80端口的所有访问。您可以根据需要替换为要封禁的实际IP地址。
屏蔽单个IP多端口:
iptables -A INPUT -s 192.168.1.100 -p tcp -m multiport --dports 22,80,443 -j DROP
该命令将阻止来自IP地址192.168.1.100下22,80,443端口的所有访问。您可以根据需要替换为要封禁的实际IP地址。
保存iptables规则(最关键一步)
添加规则后,需要保存配置以确保重启后仍然生效:
CentOS/RHEL系统:
service iptables save
Debian/Ubuntu系统:
iptables-save > /etc/iptables.rules
查看和管理iptables规则(可选)
使用以下命令查看当前iptables规则:
iptables -L -n
如需删除特定规则,可以使用以下命令:
iptables -D INPUT -s 192.168.1.100 -j DROP
批量禁止IP(可选)
如果需要禁止多个IP地址,可以使用脚本批量添加规则:
#!/bin/bash for ip in $(cat blocked_ips.txt) do iptables -A INPUT -s $ip -j DROP done service iptables save
将要封禁的IP地址列表保存在blocked_ips.txt文件中,每行一个IP地址。