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

如何配置linux下的防火墙

Linux下配置防火墙,通常使用 iptablesfirewalldiptables通过命令行规则设置,而 firewalld提供更友好的界面和区域管理。

Linux系统中,配置防火墙是确保系统安全的重要步骤,以下是详细的配置指南,涵盖常见的防火墙工具如iptablesfirewalldnftables

使用iptables配置防火墙

iptables是一个强大的命令行工具,用于配置Linux内核中的网络包过滤规则。

安装iptables

大多数Linux发行版默认安装了iptables,如果没有,可以通过以下命令安装:

如何配置linux下的防火墙  第1张

sudo apt-get install iptables  # Debian/Ubuntu
sudo yum install iptables      # CentOS/RHEL

基本规则配置

  • 查看当前规则
    sudo iptables -L -v
  • 清除所有规则
    sudo iptables -F
  • 设置默认策略
    sudo iptables -P INPUT DROP    # 默认丢弃所有进入的流量
    sudo iptables -P FORWARD DROP  # 默认丢弃所有转发的流量
    sudo iptables -P OUTPUT ACCEPT # 默认允许所有外出的流量

添加规则

  • 允许本地回环接口(lo)的所有流量
    sudo iptables -A INPUT -i lo -j ACCEPT
  • 允许SSH访问(假设端口22)
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 允许HTTP/HTTPS访问(端口80和443)
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

保存规则

  • Debian/Ubuntu
    sudo sh -c "iptables-save > /etc/iptables/rules.v4"
  • CentOS/RHEL
    sudo service iptables save

使用firewalld配置防火墙

firewalld是一个动态的防火墙管理工具,支持区域(zone)概念,适合需要动态管理防火墙的场景。

安装firewalld

sudo apt-get install firewalld  # Debian/Ubuntu
sudo yum install firewalld      # CentOS/RHEL

启动并启用firewalld

sudo systemctl start firewalld
sudo systemctl enable firewalld

配置默认区域

  • 查看当前区域
    sudo firewall-cmd --get-default-zone
  • 更改默认区域
    sudo firewall-cmd --set-default-zone=public

添加规则

  • 允许SSH访问
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload
  • 允许HTTP/HTTPS访问
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

查看当前规则

sudo firewall-cmd --list-all

使用nftables配置防火墙

nftablesiptables的继任者,提供了更强大的功能和更简洁的语法。

安装nftables

sudo apt-get install nftables  # Debian/Ubuntu
sudo yum install nftables      # CentOS/RHEL

基本配置

  • 查看当前规则
    sudo nft list ruleset
  • 清除所有规则
    sudo nft flush ruleset

添加规则

  • 创建表和链
    sudo nft add table inet filter
    sudo nft add chain inet filter input { type filter hook input priority 0 ; }
  • 添加规则
    sudo nft add rule inet filter input iifname lo accept
    sudo nft add rule inet filter input tcp dport 22 accept
    sudo nft add rule inet filter input tcp dport 80 accept
    sudo nft add rule inet filter input tcp dport 443 accept
    sudo nft add rule inet filter input counter drop

保存规则

将规则写入配置文件(如/etc/nftables.conf),然后通过以下命令加载:

sudo nft -f /etc/nftables.conf

相关问答FAQs

Q1: 如何查看当前防火墙规则?

A1: 取决于使用的防火墙工具:

  • iptables: sudo iptables -L -v
  • firewalld: sudo firewall-cmd --list-all
  • nftables: sudo nft list ruleset

Q2: 如何临时允许某个端口的流量?

A2: 根据防火墙工具选择相应的命令:

  • iptables: sudo iptables -A INPUT -p tcp --dport <port> -j ACCEPT
  • firewalld: `sudo firewall-cmd –permanent –add-port= /tcp && sudo firewall-cmd –reload
0