本小节来给大家演示使用iptables firewall-cmd等防火墙策略配置服务,在这里采用了几个真实工作需求中可能会用到的策略配置,希望各位老哥学习完,能加深自己的印象,更好的维护系统
Iptables
早期环境中,默认是采用iptables来管理配置防火墙,虽然新的防火墙已经使用,但是大部分学者还是习惯使用于iptables。所有先来给大家介绍介绍iptables的玩法
五链
- 在进行路由选择前处理数据包——PREOUTING
- 处理流入的数据包——INPUT
- 处理流出的数据包——OUTPUT
- 处理转发的数据包——FORWARD
- 在进行路由选择后处理数据包——POSTEROUTING
四表
- 允许流量通过——ACCEPT
- 拒绝流量通过并回应——REJECT
- 记录日志信息——LOG
- 拒绝流量通过丢弃不回应——DROP
常用设置参数
参数 | 作用 |
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在末尾新加规则链需要加-A |
-I | 在规则链头部加入规则,或者创建第一天规则需要写入 |
-D | 删除某一条规则链 |
-s | 匹配来源地址IP/MASK +!表示排除这个IP |
-d | 匹配目标地址 |
-i | 匹配网卡流入的数据 |
-o | 匹配网卡流出的数据 |
-p | 匹配协议 |
-dport | 匹配端口号 |
-sport | 匹配来源端口号 |
将流入流量的策略设置为拒绝
[10:54 4.2root@ahei ~]# iptables -P INPUT DROP
拒绝所有流量,包括imcp,ssh等
如果想进行操作,则需要设置额外策略来放行
允许ping命令
[10:54 4.2root@ahei ~]# iptables -I INPUT -p imcp -j ACCEPT
可以允许其他机器ping该主机
-I 选项是因为是第一条策略,所有要加
允许主机访问本机的3306端口
[10:54 4.2root@ahei ~]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
-p tcp 代表协议是tcp
--dport 3306 允许访问tcp 3306端口
需要加访问主机 在协议前加 -s 主机范围/地址
删除某一条规则链
[10:54 4.2root@ahei ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:52113
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
默认可以看到前十条记录
例如我们将icmp 设置为拒绝,在DORP表下删除该策略就直接拒绝了
[11:11 4.2root@ahei ~]# iptables -D INPUT 1
因为该记录在第一位,所有编号就默认是1
将默认策略设置为允许
[11:11 4.2root@ahei ~]#iptables -P INPUT ACCETP
拒绝访问110端口
[11:11 4.2root@ahei ~]# iptables -A INPUT -p tcp --dport 110 -j DROP
[11:11 4.2root@ahei ~]# iptables -A INPUT
-p udp --dport 110 -j DROP
拒绝访问包含tcp及udp协议,所有都要写入
连续端口可以写成 1:100
设置永久生效需要保存设置
[11:11 4.2root@ahei ~]# iptables-save
Firewalld
firewalld可以实现防火墙策略之间的快速切换,不同的场景切换不同的策略即可
区域 | 默认策略规则 |
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量树相关;如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、ipp-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
一些默认参数
参数 | 作用 |
–get-default-zone | 查看默认的区域名称 |
–set-default-zone | 设置默认区域名称 |
–get-zones | 显示可以用的区域 |
–get-service | 显示预定的服务 |
–get-active-zones | 显示当前使用的区域与网卡名称 |
–add-source= | 将源自此IP或子网的流量导入指定的区域 |
–remove-souce= | 不在将此IP或子网的流量导入指定区域 |
–add-interface= | 将该网卡的流量都导入某个区域 |
–change-interface= | 将某个网卡与区域进行关联 |
–list-all | 将显示当前区域的网卡配置,资源,端口,服务等信息 |
–list-all-zones | 将显示所有区域的网卡,资源,端口,服务等信息 |
–add-service= | 设置默认区域允许该服务的流量 |
–add-port= | 设置默认区域允许该端口流量 |
–reload | 设置永久生效 |
–panic-on | 开启应急状况,阻断一切流量 |
TIPS
配置永久模式 需要加入–Permanent ,设置的策略只有重启以后才能生效,所有还需要手动配置–reload命令
查看默认使用的区域
[11:35 4.2root@ahei ~]#firewall-cmd --get-default-zone
public
查看指定网卡绑定的区域
[11:35 4.2root@ahei ~]#firewall-cmd --get-zone-of-interface=eth0
public
修改网卡的默认区域
[11:35 4.2root@ahei ~]#firewall-cmd --permanent --zone=dmz --change-interface=eth0
success
查看该区域
[11:35 4.2root@ahei ~]#firewall-cmd --permanent --get-zone-of-interface=eth0
dmz
修改默认区域为public
[11:35 4.2root@ahei ~]#firewall-cmd --set-default-zone=dmz
success
[11:35 4.2root@ahei ~]#firewall-cmd --get-default-zone
dmz
[11:35 4.2root@ahei ~]#firewall-cmd --get-zone-of-interface=eth0
dmz
应急模式
[11:35 4.2root@ahei ~]#firewall-cmd --panic-on
success
[11:35 4.2root@ahei ~]#firewall-cmd --panic-off
success
查询某个流量或服务是否放行
[11:35 4.2root@ahei ~]#firewall-cmd --zone=dmz --query-service=服务名(ssh,ftp.https....)
yes/no
设置ssh流量放行,并生效
[11:35 4.2root@ahei ~]#firewall-cmd --permanent --zone=public --add-service=ssh
success
[11:35 4.2root@ahei ~]#firewall-cmd --reload
success
这样重新加载服务就生效了
拒绝ssh流量,立即生效
[11:35 4.2root@ahei ~]#firewall-cmd --permanent --zone=dmz --remove-service=ssh
success
[11:35 4.2root@ahei ~]#firewall-cmd --reload
success
访问8080 8081端口允许,当前生效
[11:35 4.2root@ahei ~]#firewall-cmd --zone=dmz --add-port=8080-8081/tcp
success
[11:35 4.2root@ahei ~]#firewall-cmd --zone=dmz --list-ports
8080-8081/tcp
端口转发,将3305转发到3306
[11:35 4.2root@ahei ~]#firewall-cmd --permanent --zone=dmz --add-forward-port=port=3305:proto=tcp:toport=22:toaddr=192.168.10.1
success
[11:35 4.2root@ahei ~]#firewall-cmd --reload
success