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