Linux学习(七) Iptables与Firewalld防火墙

1. iptables

  在 RHEL7 中,firewalld 取代了 iptables。但在早期的 Linux 系统中,如 RHEL6,默认使用 iptables 服务来配置防火墙。

1.1 策略与规则链

  iptables 规则依据数据包处理位置的不同进行分类,具体如下(一般来说,从内网向外网发送的流量一般都是可控且良性的,因此我们使用最多的就是INPUT规则链):

在进行路由选择前处理数据包(PREROUTING)
处理流入的数据包(INPUT)
处理流出的数据包(OUTPUT)
处理转发的数据包(FORWARD)
在进行路由选择后处理数据包(POSTROUTING)

iptables 防火墙策略中的一些动作术语:

ACCEPT(允许流量通过)
REJECT(拒绝流量通过,拒绝流量包后响应拒绝消息)
LOG(记录日志信息)
DROP(拒绝流量通过,丢弃流量包且不响应)

防火墙策略设置为 REJECT 后,流量发送方会看到端口不可达的响应。

[root@localhost ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Port Unreachable
From 192.168.10.10 icmp_seq=2 Destination Port Unreachable
From 192.168.10.10 icmp_seq=3 Destination Port Unreachable
From 192.168.10.10 icmp_seq=4 Destination Port Unreachable
--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3002ms

防火墙策略修改成 DROP 后,发送方会看到响应超时的提醒。无法判断流量是被拒绝,还是接收方主机不在线。

[root@localhost ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.

--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3000ms

1.2 基本的命令参数

iptables中常用的参数以及作用

参数作用
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-I num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d匹配目标地址
-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据
-p匹配协议,如TCP、UDP、ICMP
--dport num匹配目标端口号
--sport num匹配来源端口号

开放端口的一些常用命令

# 查看防火墙开放的端口信息
firewall-cmd --list-ports

# 查看想开的端口是否已开:
firewall-cmd --query-port=6379/tcp

# 添加指定需要开放的端口:
firewall-cmd --zone=public --add-port=5672/tcp --permanent

# 重载入添加的端口:
firewall-cmd --reload

# 移除指定端口:
firewall-cmd --zone=public --remove-port=5672/tcp --permanent

# 查看监听(Listen)的端口
netstat -lntp

# 检查端口被哪个进程占用
netstat -lnp|grep 8080

# 查看进程被哪个程序占用,或者直接:ps -aux | grep pid 查看
ps -aux | grep java

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://dukec.cn/archives/第8章iptables与firewalld防火墙

Buy me a cup of coffee ☕.