Iptable与firewalld防火墙
一、防火墙管理工具
1)在RHEL7系统中firewalld服务取代了Iptables服务,但是依然使用Iptables命令来管理系统内核的网络过滤器netfilter。
二、规则链与策略
1)Iptables命令用于创建数据过滤与NAT规则,Iptables命令规则中常见的控制类型有:
ACCEPT:允许通过
LOG:记录日志信息,然后传递给下一条规则继续匹配
REJECT:拒绝通过,必要时会提示
DROP:直接丢弃
2)规则链是依据处理数据包的位置不同来进行分类:
PREROUTE:进行路由选择前处理数据包
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTE:路由选择后处理数据包
Iptables中的规则表是用于容纳规则链,规则表默认是允许状态,那么规则链就设置被禁止的规则,而反之如果规则表是禁止状态,那么规则链就设置被允许的规则。
raw表:确定是否对该数据包进行状态跟踪
managle表:为数据包设置标记
nat表:修改数据包中的源、目的ip或端口
filter表:确实是否放行该数据包(过滤)
Iptables 命令执行后的规则策略仅当前生效,若需重启系统之后依然保存规则并生效需执行“service iptables save”
iptables命令的参数及作用如下:
参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除一条规则
-s 匹配源地址IP/MASK,加叹号"!"表示处该地址外
-d 匹配目标地址
-i 网卡名称 匹配从此网卡流入的数据流量
-o 网卡名称 匹配从此网卡流出的数据流量
-p 匹配协议,比如tcp、udp、icmp
--sport 匹配源端口号
--dport 匹配目的端口号
3)iptable命令介绍:
①iptables -t [table] [命令] [chain rules] -m [扩展选项] -j [target],table可以是filter、nat、managle,默认是filter,命令例如 -P或--policy表示定义默认策略,chain rules表示设置哪个规则链,-j target表示执行的动作,常用的执行动作是ACCEPT、REJECT、DROP、LOG,ACCEPT动作表示放行数据包,REJECT动作表示阻拦数据包并发送阻拦信息通知对方,DROP表示丢弃数据包不予处理,不通知对方。
-m icmp --icmp-type echo-request | echo-reply
-m multiport --dport 目的端口 | --sport | ports
-m iprange --src-range 源地址范围 | --dst-range 目的地址范围
-m limit --limit 300/hour | 300/min | 300/sec 限制某个时间段内不通过300个数据包,一个包1500字节即1500*300=450k,即限速
-m mac --mac-source 用来比对源mac
例如1:iptables -t filter -I FORWARD -s 192.168.10.0/24 -d 192.168.80.0/24 -p icmp -m icmp --icmp-type echo-request -j DROP,表示运行192.168.10.0/24ping通192.168.80.0/24,禁止192.168.80.0/24ping通192.168.10.0/24
例如2:iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-request -j DROP,表示禁止其他计算机ping本地Linux系统
例如3:iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.10.0/24 -m multiport --dport 1:1024,3389 -j DROP,-m multiport --dport 表示匹配多个端口,这条规则表示禁止192.168.80.0/24 TCP 连接192.168.10.0/24的1-1024、3389端口
三、SNAT与DNAT
1)SNAT即源地址转换技术,为了让局域网客户机访问外网服务器。
2)DNAT即目的地址转换技术,为了让外网客户机访问局域网服务器。
四、Firewalld防火墙
1)firewalld防火墙是RHEL7系统的防火墙管理工具,可以使用图形化工具firewall-config或文本管理工具firewall-cmd,firewalld中区域zone的概念:
trusted 允许所有数据包通过
home 拒绝流入的数据包,除非与输出的数据包相关或是ssh,mdns,ipp-client,samba-client,dhcpv6-client服务则允许
internal 等同于home区域
work 拒绝流入的数据包,除非与输出的数据包相关或是ssh,ipp-client,dhcpv6-client服务则允许
public 拒绝流入的数据包,除非与输出的数据包相关或是ssh,dhcpv6-client服务则允许
external 拒绝流入的数据包,除非与输出数据包相关或是ssh服务则允许
dmz 拒绝流入的数据包,除非与输出数据包相关或是ssh服务则允许
block 拒绝流入的数据包,除非与输出数据包相关
drop 拒绝流入的数据包,除非与输出数据包相关
2)字符管理工具firewall-cmd
例1:firewall-cmd --get-default-zone,获取默认区域
例2:firewall-cmd --get-zone-of-interface=ens37,获取网卡所在区域
例3:firewall-cmd --zone=public --query-service=ssh,查询ssh服务是否开启
例4:firewall-cmd --parmanent --zone=public --add-service=https,开启https服务并且永久生效
例5:firewall-cmd --runtime --zone=public --add-port=8080,开启8080端口服务仅当前生效
例6:firewall-cmd --parmanent --zone=public --list port,查看开启的端口服务
例7:firewall-cmd --reload,重新加载防火墙
3)firewalld服务有两份规则策略配置记录
RunTime:仅当前生效的
Parmanent:永久生效的
五、服务的访问控制列表
1)允许名单,进入配置文件配置:vi /etc/host.allow
2)拒绝名单,进入配置文件配置:vi /etc/host.deny