linux命令-iptables与firewalld 命令详解

linux命令-iptables与firewalld 命令详解

  • 一、iptables简介
  • 二、常用选项
  • 三、基础概念
    • 1、Chains
    • 2、Tables
    • 3、Rules
  • 四、常用操作
    • 1、列出所有链的规则
    • 2、列出带行号的规则
    • 3、列出特定表中的规则
    • 4、允许指定端口传入流量
    • 5、阻止来自指定IP的流量
    • 6、允许来自子网的流量
    • 7、允许端口 22 (SSH) 上的传出流量
    • 8、在网络之间转发流量
    • 9、按行号删除规则
    • 10、将传入流量的默认策略设置为 DROP
    • 11、将传出流量的默认策略设置为 ACCEPT
    • 12、保存当前规则到指定文件
    • 13、从文件中恢复规则
    • 14、将端口 8080 转发至 80
    • 15、伪装流量(NAT)
    • 16、转发流量到其他IP
    • 17、记录丢弃的数据包
    • 18、记录已接受的数据包
    • 19、查看数据包和字节数
    • 20、重置计数器
    • 21、刷新所有规则
    • 22、在指定的 Table 上刷新规则
    • 23、删除所有用户定义的 Chains
  • 五、firewalld简介
  • 六、Firewalld网络区域
  • 七、常用示例
    • 1、启动防火墙
    • 2、停止防火墙
    • 3、设置防火墙开机自启动
    • 4、禁止防火墙开机自启动
    • 5、检查防火墙的状态
    • 6、重新加载防火墙的配置
    • 7、查看活动防火墙状态
    • 8、列出所有活动区域
    • 9、查看指定区域的规则
    • 10、列出所有区域
    • 11、设置默认的区域
    • 12、添加一个接口到区域
    • 13、从区域中移除一个接口
    • 14、查看指定区域的接口
    • 15、列出所有支持的服务
    • 16、添加一个服务到区域
    • 17、从区域中移除一个服务
    • 18、检查服务是否是启动的
    • 19、使服务变更永久生效
    • 20、临时打开一个端口
    • 21、临时关闭一个端口
    • 22、使变更端口永久生效
    • 23、列出在区域中打开的端口
    • 24、允许来自指定 IP 的流量
    • 25、阻止来自指定 IP 的流量
    • 26、记录并丢弃来自指定 IP 的流量
    • 27、使规则永久生效
    • 28、启用伪装
    • 29、禁用伪装
    • 30、在区域之间转发流量
    • 31、在脚本或恢复模式中使用 firewall-offline-cmd
    • 32、永久保存所有变更到磁盘
  • 八、总结
    • 1、功能和用途
    • 2、规则修改和持久性
    • 3、配置复杂度和用户友好性

一、iptables简介

iptables 是一个在 Linux 中的管理防火墙规则的命令行工具,它作为 Linux 内核的 netfilter 框架的一部分运行,以控制传入和传出的网络流量。

firewalld 相比
iptables 是基于规则的,每个规则必须独立定义,firewalld 是基于区域的,规则适用于预定义或自定义区域。

iptables 适合高度精细和手动的配置,firewalld 动态规则更简单且更加用户友好。

iptables 需要刷新或重新启动才能应用更改,firewalld 支持不间断的即时更改。

iptables 对于静态、简单的配置来说非常高效,firewalld 由于抽象层,速度稍微慢一些,但大多数情况下可以忽略不计。

二、常用选项

-A:追加到规则到链中

-D:从链中删除一个规则

-P:为链设置默认策略

-F:刷新链中的所有规则

-L:列出链中的所有规则

-t [table]:指定 table

-i:指定输入接口,例如:eth0

-o:指定输出接口

-s:指定源IP地址

-d:指定目标IP地址

-p:指定协议类型,例如:tcp、udp、icmp

三、基础概念

1、Chains

处理数据包的一组规则

INPUT: 控制传入数据包。

FORWARD: 控制通过系统转发的数据包。

OUTPUT: 控制传出的数据包。

2、Tables

规则处理类别

filter: 基本数据包过滤的默认表。

nat: 处理网络地址转换(NAT)。

mangle: 改变数据包。

raw: 在连接跟踪之前配置数据包。

3、Rules

对数据包应用的操作,例如:ACCEPTDROP

四、常用操作

1、列出所有链的规则

sudo iptables -L

2、列出带行号的规则

sudo iptables -L --line-numbers

3、列出特定表中的规则

sudo iptables -t nat -L

4、允许指定端口传入流量

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


# -A INPUT: 追加到 INPUT链

# -p tcp: 指定协议为 TCP

# --dport 80: 指定目标端口为80

# -j ACCEPT: 接受数据包

5、阻止来自指定IP的流量

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

# -s 192.168.1.100: 指定源IP地址

6、允许来自子网的流量

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

7、允许端口 22 (SSH) 上的传出流量

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

8、在网络之间转发流量

sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

9、按行号删除规则

sudo iptables -D INPUT 2


# -D INPUT 2: 删除 INPUT 链的第二个规则

10、将传入流量的默认策略设置为 DROP

sudo iptables -P INPUT DROP

11、将传出流量的默认策略设置为 ACCEPT

sudo iptables -P OUTPUT ACCEPT

12、保存当前规则到指定文件

sudo iptables-save > /etc/iptables.rules

13、从文件中恢复规则

sudo iptables-restore < /etc/iptables.rules

14、将端口 8080 转发至 80

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

15、伪装流量(NAT)

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

16、转发流量到其他IP

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80

17、记录丢弃的数据包

sudo iptables -A INPUT -j LOG --log-prefix "Dropped Packet: " --log-level 4

18、记录已接受的数据包

sudo iptables -A INPUT -j LOG --log-prefix "Accepted Packet: " --log-level 4

19、查看数据包和字节数

sudo iptables -L -v

20、重置计数器

sudo iptables -Z

21、刷新所有规则

sudo iptables -F

22、在指定的 Table 上刷新规则

sudo iptables -t nat -F

23、删除所有用户定义的 Chains

sudo iptables -X

五、firewalld简介

firewalld 是一个在 Linux 中的防火墙管理工具,提供动态接口管理网络流量,它使用区域来定义网络连接的信任级别,并支持 IPv4 和 IPv6。

六、Firewalld网络区域

drop(丢失):任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络练连接

block(限制):任何接收的网络连接都被IPv4的icmp-host-prohibited信息和icmp6-adm-prohibited信息所拒绝

public (公共):在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接

external (外部) :特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接

dmz (非军事区):用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接

work (工作):用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接用于家庭网络。

home (家庭):您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接

internal (内部):用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接

trusted (信任):可接受所有的网络连接

七、常用示例

1、启动防火墙

sudo systemctl start firewalld

2、停止防火墙

sudo systemctl stop firewalld

3、设置防火墙开机自启动

sudo systemctl enable firewalld

4、禁止防火墙开机自启动

sudo systemctl disable firewalld

5、检查防火墙的状态

sudo systemctl status firewalld

6、重新加载防火墙的配置

sudo firewall-cmd --reload

7、查看活动防火墙状态

sudo firewall-cmd --state

8、列出所有活动区域

sudo firewall-cmd --get-active-zones

9、查看指定区域的规则

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

10、列出所有区域

sudo firewall-cmd --get-zones

11、设置默认的区域

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

12、添加一个接口到区域

sudo firewall-cmd --zone=public --add-interface=eth0

13、从区域中移除一个接口

sudo firewall-cmd --zone=public --remove-interface=eth0

14、查看指定区域的接口

sudo firewall-cmd --get-zone-of-interface=eth0

15、列出所有支持的服务

sudo firewall-cmd --get-services

16、添加一个服务到区域

sudo firewall-cmd --zone=public --add-service=http

17、从区域中移除一个服务

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

18、检查服务是否是启动的

sudo firewall-cmd --zone=public --query-service=http

19、使服务变更永久生效

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

20、临时打开一个端口

sudo firewall-cmd --zone=public --add-port=8080/tcp

21、临时关闭一个端口

sudo firewall-cmd --zone=public --remove-port=8080/tcp

22、使变更端口永久生效

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

23、列出在区域中打开的端口

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

24、允许来自指定 IP 的流量

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

25、阻止来自指定 IP 的流量

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'

26、记录并丢弃来自指定 IP 的流量

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" log prefix="Blocked: " level="info" drop'

27、使规则永久生效

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent

28、启用伪装

sudo firewall-cmd --zone=public --add-masquerade

29、禁用伪装

sudo firewall-cmd --zone=public --remove-masquerade

30、在区域之间转发流量

sudo firewall-cmd --zone=trusted --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100

31、在脚本或恢复模式中使用 firewall-offline-cmd

firewall-offline-cmd --add-service=http

32、永久保存所有变更到磁盘

sudo firewall-cmd --runtime-to-permanent

八、总结

1、功能和用途

‌iptables‌是一个命令行工具,直接操作内核中的Netfilter框架,通过规则链和规则来管理网络流量。它提供了对网络流量的精细控制,允许用户根据IP地址、端口号、协议等条件定义规则‌。iptables适用于需要高度自定义和精细控制网络流量的场景。

‌firewalld‌是一个动态管理防火墙的工具,提供了服务和区域的概念,简化了防火墙规则的管理。它使用iptables作为后端,但通过更高层次的抽象来简化配置和管理。firewalld适用于需要快速配置和动态调整防火墙规则的场景‌。

2、规则修改和持久性

‌iptables‌在修改规则后需要重新加载或保存规则文件才能生效,这可能会导致服务中断。iptables的规则在系统重启后会丢失,除非将规则保存到文件中‌。

‌firewalld‌支持动态修改单条规则,不需要像iptables那样修改后全部刷新才可生效。firewalld的规则更改立即生效,并且支持在运行时模式和永久模式之间切换,确保了更高的灵活性和可靠性‌。

3、配置复杂度和用户友好性

‌iptables‌非常灵活和强大,但相对复杂,需要对网络和防火墙原理有深入的理解。它直接操作内核,提供了广泛的配置选项,适合高级用户和专业网络管理员‌。

‌firewalld‌通过服务和区域的概念简化了配置过程,提供了预定义的规则集和可视化管理界面,使得配置更加直观和简单。它适合那些需要简化管理但仍然需要一定安全性的用户‌

你可能感兴趣的:(运维,Linux,linux,网络,运维)