当前位置:首页 > Linux > 正文

linux防火墙如何屏蔽

nux防火墙屏蔽可通过多种方式实现,如使用 iptables命令添加规则屏蔽特定IP或端口,或通过 firewalld配置永久规则来实现对网络流量的精准控制

Linux系统中,防火墙是保障网络安全的重要屏障,通过合理配置防火墙规则,可以有效地屏蔽反面IP、防止网络攻击以及控制网络访问权限,下面将详细介绍如何在Linux中利用防火墙进行屏蔽操作。

Linux防火墙

Linux系统中常见的防火墙工具有iptables、firewalld和UFW。

防火墙工具 特点
iptables 传统的防火墙管理工具,功能强大但配置相对复杂,需要手动编写规则。
firewalld 动态管理防火墙,支持网络区域概念,配置相对简单,适合新手。
UFW 简单易用的防火墙前端,基于iptables,适用于Ubuntu等发行版。

使用iptables屏蔽

检查iptables是否安装

在终端中执行以下命令:

sudo iptables -L

如果提示“iptables: command not found”,则需要安装iptables,对于基于Debian的系统(如Ubuntu),可以使用以下命令安装:

sudo apt-get install iptables

添加屏蔽规则

  • 屏蔽单个IP地址

假设要屏蔽的IP地址为192.168.1.100,执行以下命令:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

这条规则表示将所有来自192.168.1.100的数据包丢弃。

  • 屏蔽IP段

如果要屏蔽一个IP段,比如192.168.1.0/24网段,可以使用以下命令:

sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP

或者使用iprange模块指定IP范围:

sudo iptables -A INPUT -m iprange --src-range 192.168.1.0-192.168.1.255 -j DROP
  • 屏蔽特定端口

除了按IP屏蔽,还可以按端口进行屏蔽,要屏蔽TCP的3306端口(MySQL默认端口),允许特定IP访问:

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT -s 192.168.1.100
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP

第一条规则允许来自192.168.1.100的IP访问3306端口,第二条规则则拒绝其他所有IP的访问。

保存并生效规则

配置完规则后,需要保存规则以便在系统重启后仍然有效,对于基于Red Hat的系统(如CentOS、RHEL),执行:

linux防火墙如何屏蔽  第1张

sudo service iptables save

对于Debian和Ubuntu系统,执行:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

如果使用IPv6,则保存IPv6规则:

sudo ip6tables-save > /etc/iptables/rules.v6

删除规则

如果需要删除已添加的规则,可以使用以下命令:

sudo iptables -D INPUT -s 192.168.1.100 -j DROP

要清空所有规则,执行:

sudo iptables -F INPUT
sudo iptables -F ACCEPT

使用firewalld屏蔽

firewalld是CentOS 7及以后版本的默认防火墙管理工具,相比iptables,它更加动态且易于管理。

启动并设置firewalld开机自启

sudo systemctl start firewalld
sudo systemctl enable firewalld

添加屏蔽规则

  • 屏蔽单个IP地址

假设要屏蔽的IP地址为192.168.1.100,执行以下命令:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
sudo firewall-cmd --reload

这条规则表示拒绝所有来自192.168.1.100的数据包。

  • 屏蔽IP段

要屏蔽192.168.1.0/24网段,执行:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject'
sudo firewall-cmd --reload
  • 屏蔽特定端口

与iptables类似,firewalld也可以按端口进行屏蔽,要屏蔽TCP的3306端口,允许特定IP访问:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination port port=3306 protocol=tcp accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination port port=3306 protocol=tcp reject'
sudo firewall-cmd --reload

删除规则

要删除已添加的规则,可以使用以下命令:

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
sudo firewall-cmd --reload

使用UFW屏蔽(适用于Ubuntu等发行版)

UFW是Uncomplicated Firewall的缩写,它是一个简化的防火墙前端,基于iptables,非常适合在Ubuntu等发行版上使用。

启用UFW

sudo ufw enable

添加屏蔽规则

  • 屏蔽单个IP地址
sudo ufw deny from 192.168.1.100
  • 屏蔽IP段
sudo ufw deny from 192.168.1.0/24
  • 屏蔽特定端口
sudo ufw deny 3306/tcp

删除规则

要删除已添加的规则,可以使用以下命令:

sudo ufw delete allow from 192.168.1.100

或者删除所有规则:

sudo ufw reset

注意事项

  1. 备份规则:在修改防火墙规则之前,建议备份当前配置,以防出现问题时能够快速恢复,对于iptables,可以将规则保存到文件中;对于firewalld,可以导出配置文件。

  2. 测试规则:在应用新的防火墙规则之前,最好先在一个非生产环境中进行测试,确保规则按预期工作,避免因规则错误导致合法用户无法访问。

  3. 日志记录:考虑添加日志记录规则以便于故障排除,在REJECT或DROP规则之前插入一条日志记录规则,记录被丢弃的数据包信息。

  4. 权限问题:上述操作需要管理员权限,请确保以root用户或具有sudo权限的用户身份执行命令。

相关问答FAQs

问1:如何查看当前防火墙的规则?

答:对于iptables,可以使用sudo iptables -L命令查看当前规则;对于firewalld,可以使用sudo firewall-cmd --list-all命令查看所有区域的规则;对于UFW,可以使用sudo ufw status命令查看当前状态和规则。

问2:如何允许特定IP访问被屏蔽的端口?

答:在iptables中,可以先添加一条允许特定IP访问的规则,然后再添加拒绝其他IP的规则,要允许192.168.1.100访问3306端口,同时拒绝其他IP访问,可以执行以下命令:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 3306 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
0