linux防火墙规则


linux防火墙规则

iptables

1. 查看当前防火墙规则

使用 iptables 查看规则:

sudo iptables -L

这将列出所有的链和规则。-L 参数代表列出(List)。

查看详细信息:

sudo iptables -L -v -n

-v 参数代表详细(Verbose),-n 参数代表不解析服务名称(Numeric)。

查看特定链的规则:

sudo iptables -L INPUT -v

2. 配置防火墙规则

添加规则允许 SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

这条命令将添加一条规则到 INPUT 链,允许所有进入的 TCP 流量到达端口 22(SSH)。

添加规则拒绝特定 IP:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

这条命令将拒绝来自 IP 地址 192.168.1.100 的所有流量。

添加规则允许来自特定 IP 的 HTTP 访问:

sudo iptables -A INPUT -p tcp -s 192.168.1.101 --dport 80 -j ACCEPT

添加规则允许已建立的连接:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

添加规则允许出站流量:

sudo iptables -A OUTPUT -j ACCEPT

3. 删除防火墙规则

删除特定规则: 要删除规则,你需要知道规则的编号。使用 -L --line-numbers 查看规则编号:

sudo iptables -L --line-numbers

然后删除规则,例如删除编号为 3 的规则:

sudo iptables -D INPUT 3

4. 保存防火墙规则

保存 iptables 规则: 在 Debian/Ubuntu 上,你可以使用 iptables-persistent 包来保存规则:

sudo apt-get install iptables-persistent

在 CentOS/RHEL 上,你可以使用 servicesystemctl 命令来保存规则:

sudo service iptables save

或者

sudo systemctl save iptables

5. 恢复防火墙规则

在系统启动时恢复 iptables 规则: 在 Debian/Ubuntu 上,安装 iptables-persistent 后,规则会自动在启动时恢复。在 CentOS/RHEL 上,你需要手动保存规则,并在 /etc/rc.d/rc.local 或使用 systemctl 配置启动脚本中添加恢复规则的命令。

6. 重置防火墙规则

重置 iptables 到默认设置:

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X

-F 代表清空规则,-X 代表清空用户自定义链。

7. 防火墙规则的持久化

Ubuntu/Debian: 安装 iptables-persistent 包后,它会在 /etc/iptables/rules.v4 文件中保存规则。

CentOS/RHEL: 你可以使用 iptables-services 包来管理 iptables 的持久化:

sudo yum install iptables-services
sudo systemctl enable iptables
sudo service iptables save

8. 查看和管理系统服务

查看所有服务:

sudo systemctl list-units --type=service

启动/停止服务:

sudo systemctl start iptables
sudo systemctl stop iptables

设置服务开机启动:

sudo systemctl enable iptables

禁用服务开机启动:

sudo systemctl disable iptables

以上是 Linux 防火墙规则的完整指南,包括查看、配置、删除、保存、恢复和重置防火墙规则等操作。请根据你的具体需求和 Linux 发行版进行相应的操作。

9. 关闭或强制删除防火墙

apt-get purge netfilter-persistent && rebootrm -rf /etc/iptables && reboot

firewalld

1. Firewalld 简介

Firewalld 是一个动态防火墙管理工具,它提供了基于区域(zone)和服务(service)的简化配置界面,使得管理防火墙规则更加容易。它支持动态更新防火墙规则,可以在运行时添加、删除、修改规则,而不需要重新加载整个防火墙配置。

2. 服务的启动、停止和状态查看

  • 启动防火墙:

    sudo systemctl start firewalld
  • 停止防火墙:

    sudo systemctl stop firewalld
  • 设置防火墙开机启动:

    sudo systemctl enable firewalld
  • 禁用防火墙开机启动:

    sudo systemctl disable firewalld
  • 查看防火墙状态:

    sudo systemctl status firewalld
    # 或者
    sudo firewall-cmd --state
  • 查看版本:

    sudo firewall-cmd --version

3. 查看和设置默认区域

  • 查看默认区域:

    sudo firewall-cmd --get-default-zone
  • 查看所有可用的区域:

    sudo firewall-cmd --get-zones
  • 查看当前活动区域:

    sudo firewall-cmd --get-active-zones
  • 设置默认区域:

    sudo firewall-cmd --set-default-zone=your_zone

    其中your_zone是你想要设置的默认区域的名称,比如public、internal、dmz等。

4. 使用 firewall-cmd 命令行工具进行规则配置

  • 添加规则开放端口:

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 添加规则允许服务:

    sudo firewall-cmd --zone=public --add-service=http --permanent
  • 删除规则:

    sudo firewall-cmd --zone=public --remove-service=http --permanent

5. 重新加载防火墙配置

为了使永久配置生效,需要重新加载 firewalld

sudo firewall-cmd --reload

6. 查询已开放的端口、已允许的服务

  • 查询特定区域支持的所有特性:

    sudo firewall-cmd --zone=zone_name --list-all

    其中,zone_name是你要查询的区域的名称。

  • 查询特定区域支持的所有服务:

    sudo firewall-cmd --zone=zone_name --list-services
  • 查询特定区域开放的端口:

    sudo firewall-cmd --zone=zone_name --list-ports

7. 绑定接口到特定区域

  • 永久更改接口的区域绑定:

    sudo firewall-cmd --zone=home --add-interface=eth0 --permanent

    为了使永久更改生效,需要重新加载firewalld

    sudo firewall-cmd --reload

    再次验证更改:

    sudo firewall-cmd --get-active-zones

文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
评论
  目录