源动力
源动力
发布于 2025-10-04 / 33 阅读
0
0

Linux 防火墙常用命令大全

本文整理了 Linux 系统中常用的防火墙命令,涵盖 iptables、firewalld、ufw 等主流防火墙工具,适合系统管理员和运维人员参考使用。

一、iptables 防火墙

1. 基本查看命令


# 查看所有规则

iptables -L -n -v

iptables -t nat -L -n -v      # 查看NAT表

iptables -t mangle -L -n -v   # 查看Mangle表

# 查看规则带行号

iptables -L -n -v --line-numbers

iptables -t nat -L -n -v --line-numbers

# 查看具体链的规则

iptables -L INPUT -n -v

iptables -L OUTPUT -n -v

iptables -L FORWARD -n -v

2. 规则管理


# 清空所有规则

iptables -F

iptables -t nat -F

iptables -t mangle -F

# 删除特定规则

iptables -D INPUT 3          # 删除INPUT链的第3条规则

# 设置默认策略

iptables -P INPUT ACCEPT     # 默认允许所有输入

iptables -P OUTPUT ACCEPT    # 默认允许所有输出

iptables -P FORWARD DROP     # 默认拒绝所有转发

# 保存规则(不同系统)

service iptables save        # CentOS 6及以下

iptables-save > /etc/sysconfig/iptables  # 手动保存

/etc/init.d/iptables save    # Debian/Ubuntu

3. 添加规则示例


# 允许本地回环

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接

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

# 允许SSH连接(22端口)

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

# 允许HTTP(80端口)和HTTPS(443端口)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许Ping

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 限制连接速率(防止DoS攻击)

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

# 记录并拒绝其他连接

iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "

iptables -A INPUT -j DROP

4. NAT 和端口转发


# 开启IP转发

echo 1 > /proc/sys/net/ipv4/ip_forward

# MASQUERADE(共享上网)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 端口转发(将外网8080转发到内网192.168.1.100:80)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j SNAT --to-source 192.168.1.1

二、firewalld 防火墙(CentOS/RHEL 7+)

1. 基本管理命令


# 查看防火墙状态

firewall-cmd --state

systemctl status firewalld

# 启动/停止/重启防火墙

systemctl start firewalld

systemctl stop firewalld

systemctl restart firewalld

# 启用/禁用开机启动

systemctl enable firewalld

systemctl disable firewalld

2. 区域管理


# 查看所有区域

firewall-cmd --get-zones

# 查看默认区域

firewall-cmd --get-default-zone

# 查看活动区域

firewall-cmd --get-active-zones

# 更改默认区域

firewall-cmd --set-default-zone=public

# 查看指定区域的配置

firewall-cmd --zone=public --list-all

3. 服务管理


# 查看所有预定义服务

firewall-cmd --get-services

# 允许服务(临时)

firewall-cmd --add-service=http

# 允许服务(永久)

firewall-cmd --add-service=http --permanent

# 移除服务

firewall-cmd --remove-service=http

firewall-cmd --remove-service=http --permanent

# 重新加载防火墙

firewall-cmd --reload

4. 端口管理


# 查看开放端口

firewall-cmd --list-ports

# 开放端口(临时)

firewall-cmd --add-port=80/tcp

# 开放端口(永久)

firewall-cmd --add-port=80/tcp --permanent

# 开放端口范围

firewall-cmd --add-port=8000-9000/tcp

# 移除端口

firewall-cmd --remove-port=80/tcp

firewall-cmd --remove-port=80/tcp --permanent

5. 高级配置


# 允许源IP或网段

firewall-cmd --add-source=192.168.1.0/24

firewall-cmd --add-source=192.168.1.100/32

# 富规则(复杂规则)

firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" reject'

# 直接规则(直接使用iptables语法)

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 80 -j ACCEPT

三、ufw 防火墙(Ubuntu/Debian)

1. 基本管理


# 查看状态

ufw status

ufw status verbose

ufw status numbered

# 启用防火墙

ufw enable

# 禁用防火墙

ufw disable

# 重置防火墙

ufw reset

2. 规则管理


# 允许SSH

ufw allow ssh

ufw allow 22/tcp

# 允许HTTP和HTTPS

ufw allow http

ufw allow https

ufw allow 80/tcp

ufw allow 443/tcp

# 允许特定端口范围

ufw allow 8000:9000/tcp

# 允许特定IP

ufw allow from 192.168.1.100

ufw allow from 192.168.1.0/24

# 拒绝连接

ufw deny http

ufw deny from 192.168.1.200

# 删除规则

ufw delete allow http

ufw delete allow 80/tcp

ufw delete 3  # 按编号删除规则

3. 高级配置


# 限制连接速率

ufw limit ssh/tcp

# 允许特定协议

ufw allow proto udp port 53

ufw allow proto tcp port 25

# 配置默认策略

ufw default deny incoming

ufw default allow outgoing

ufw default deny forward

四、网络连接诊断命令

1. 端口扫描与检查


# 查看监听端口

netstat -tuln

ss -tuln

lsof -i :80

# 检查端口是否开放

telnet example.com 80

nc -zv example.com 80

nmap example.com

nmap -p 1-1000 example.com

# 路由跟踪

traceroute example.com

mtr example.com

tracepath example.com

2. 连接状态查看


# 查看当前连接

netstat -nat

ss -s

ss -t -a

# 查看连接数统计

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

# 查看防火墙日志

tail -f /var/log/messages

dmesg | grep -i firewall

journalctl -u firewalld

五、实用防火墙脚本示例

1. 基本服务器防火墙脚本(iptables)


#!/bin/bash

# 清空所有规则

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

# 设置默认策略

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

# 允许本地回环

iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接

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

# 允许SSH

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

# 允许HTTP和HTTPS

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许Ping

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 保存规则

iptables-save > /etc/sysconfig/iptables

2. Docker 环境防火墙配置


# 允许Docker网络

iptables -I DOCKER-USER -i eth0 -j ACCEPT

iptables -I DOCKER-USER -o eth0 -j ACCEPT

# Docker容器访问外部网络

iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE

# 限制容器访问

iptables -I DOCKER-USER -s 172.17.0.0/16 -d 192.168.1.0/24 -j ACCEPT

iptables -I DOCKER-USER -s 172.17.0.0/16 -j DROP

六、防火墙故障排除

1. 常见问题解决


# 检查防火墙是否阻止连接

telnet localhost 80

# 检查服务是否监听正确接口

netstat -tuln | grep :80

# 检查SELinux是否影响

getenforce

setenforce 0  # 临时禁用SELinux(测试用)

# 检查防火墙日志

tail -f /var/log/firewalld

grep "REJECT" /var/log/messages

2. 连接跟踪


# 查看连接跟踪表

conntrack -L

conntrack -L -p tcp --dport 80

# 清空连接跟踪表

conntrack -F

# 监控连接跟踪事件

conntrack -E

七、总结表:最常用命令速查

iptables 常用命令

| 命令 | 功能描述 | 常用示例 |

|------|----------|----------|

| iptables -L | 查看规则 | iptables -L -n -v |

| iptables -A | 添加规则 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |

| iptables -D | 删除规则 | iptables -D INPUT 3 |

| iptables -F | 清空规则 | iptables -F |

| iptables-save | 保存规则 | iptables-save > /path/to/file |

firewalld 常用命令

| 命令 | 功能描述 | 常用示例 |

|------|----------|----------|

| firewall-cmd --state | 查看状态 | firewall-cmd --state |

| firewall-cmd --reload | 重载配置 | firewall-cmd --reload |

| firewall-cmd --add-service | 允许服务 | firewall-cmd --add-service=http |

| firewall-cmd --add-port | 允许端口 | firewall-cmd --add-port=80/tcp |

| firewall-cmd --list-all | 查看所有配置 | firewall-cmd --list-all |

ufw 常用命令

| 命令 | 功能描述 | 常用示例 |

|------|----------|----------|

| ufw status | 查看状态 | ufw status |

| ufw enable | 启用防火墙 | ufw enable |

| ufw allow | 允许连接 | ufw allow ssh |

| ufw deny | 拒绝连接 | ufw deny http |

| ufw delete | 删除规则 | ufw delete allow ssh |

这份防火墙命令大全涵盖了 Linux 系统中主要的防火墙工具和配置方法,适合不同发行版和不同场景下的防火墙管理需求。建议根据实际环境选择合适的工具和配置方法。


评论

页脚信息显示系统