本小节来给大家演示使用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