在Linux系统中,可以通过以下几种方法禁用特定IP地址的网络访问:
### 一、使用 `iptables` 命令
**添加拒绝规则**
使用 `iptables` 可以添加规则丢弃指定IP的数据包。例如,禁止IP `192.168.0.1` 访问:
```bash
sudo iptables -A INPUT -s 192.168.0.1 -j DROP
```
解释:
- `A INPUT`:将规则添加到INPUT链(处理入站连接)
- `-s 192.168.0.1`:指定源IP地址
- `-j DROP`:丢弃匹配的数据包
**保存规则**
为确保重启后规则生效,需保存配置:
```bash
sudo iptables-save > /etc/iptables/rules.v4
```
或使用 `iptables-persistent` 工具:
```bash
sudo netfilter-persistent save
```
### 二、使用 `ufw` 命令
**添加拒绝规则**
使用 `ufw` 简化命令行操作,例如:
```bash
sudo ufw deny from 192.168.0.1 to any port 22
```
解释:
- `deny`:拒绝连接
- `from 192.168.0.1`:指定源IP
- `to any port 22`:目标IP为任意地址且端口为SSH(22)
**启用 `ufw`**
确保 `ufw` 已启用:
```bash
sudo ufw enable
```
### 三、修改 `/etc/hosts.deny` 文件
**添加IP映射**
在 `/etc/hosts.deny` 中添加以下行:
```bash
192.168.0.1 sshd:all
```
解释:
- `192.168.0.1`:源IP地址
- `sshd:all`:禁止该IP访问SSH服务
**重启相关服务**
需重启 `xinetd` 服务使配置生效:
```bash
sudo service xinetd restart
```
*注意:某些系统需使用 `systemctl restart xinetd` 或 `firewalld` 命令*
### 四、使用 `firewalld`(适用于CentOS/RHEL)
**添加拒绝规则**
使用 `firewalld` 命令:
```bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.1" port protocol="tcp" port="22" reject'
```
解释:
- `--permanent`:使规则持久化
- `--add-rich-rule`:添加自定义规则
- 参数与 `iptables` 类似
**重新加载防火墙**
执行:
```bash
sudo firewall-cmd --reload
```
### 注意事项
**权限要求** :上述命令需以 `root` 或 `sudo` 身份执行
**服务依赖** :修改 `/etc/hosts.deny` 后需重启 `xinetd`(或 `firewalld`),否则规则不生效
**IP范围** :若需屏蔽IP段(如 `192.168.0.0/24`),可使用 CIDR 表示法(如 `192.168.0.0/24`)
**临时解决方案** :使用 `iptables` 时,规则需手动保存,系统重启后会丢失
通过以上方法,可灵活选择适合的防火墙工具或配置方式,实现IP访问控制。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。