简介
防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户的进入。
策略
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
规则链
➢ 进行路由选择前处理数据包(PREROUTING);
➢ 处理流入的数据包(INPUT);
➢ 处理流出的数据包(OUTPUT);
➢ 处理转发的数据包(FORWARD);
➢ 在进行路由选择后处理数据包(POSTROUTING);
linux版本6
iptables介绍
iptables 命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables 就会根据策略规则所预设的动作来处理这些流量。
iptables常用的参数
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址 IP/MASK,加叹号“!”表示除这个 IP 外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如 TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
iptables -L # 查看已有的防火墙规则链
iptables -F # 清空已有的防火墙规则链
iptables -P INPUT DROP # input规则链的默认策略设置为拒绝
iptables -I INPUT -p icmp -j ACCEPT # input链中添加允许ICMP流量进入的策略规则
iptables -D INPUT 1 # 删除input规则链中的第一条策略
iptables -P INPUT ACCEPT # 设置默认为允许
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT # 设置允许网段的主机的22端口
iptables -A INPUT -p tcp --dport 22 -j REJECT # 拒绝所有22端口
iptables -I INPUT -p tcp --dport 12345 -j REJECT # tcp允许12345端口
iptables -I INPUT -p udp --dport 12345 -j REJECT # udp允许12345端口
iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT # 拒绝主机192.168.10.5访问本机的80端口
iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT # 拒绝所有主机tcp访问1000-1024端口
iptables -A INPUT -p udp --dport 1000:1024 -j REJECT # 拒绝所有主机udp访问1000-1024端口
service iptables save # 保存防火墙规则,永久生效。
linux版本7
firewalld简介
RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems, Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI (命令行界面)和基于 GUI(图形用户界面)的两种管理方式。
irewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
firewalld区域名称
trusted 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务相关,则允许流量
internal 等同于 home 区域
work 拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与dhcpv6-client 服务相关,则允许流量
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关
firewalld命令参数
--get-default-zone # 查询默认的区域名称
--set-default-zone=<区域名称> # 设置默认的区域,使其永久生效
--get-zones # 显示可用的区域
--get-services # 显示预先定义的服务
--get-active-zones # 显示当前正在使用的区域与网卡名称
--add-source= # 将源自此 IP 或子网的流量导向指定的区域
--remove-source= # 不再将源自此 IP 或子网的流量导向某个指定区域
--add-interface=<网卡名称> # 将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称> # 将某个网卡与区域进行关联
--list-all # 显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones # 显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名> # 设置默认区域允许该服务的流量
--add-port=<端口号/协议> # 设置默认区域允许该端口的流量
--remove-service=<服务名> # 设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议> # 设置默认区域不再允许该端口的流量
--reload # 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on # 开启应急状况模式
--panic-off # 关闭应急状况模式
(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。
(Permanent)模式,一直存在
firewall-cmd --get-default-zone # 查看当前的区域
firewall-cmd --get-zone-of-interface=ens33 # 查看区域中的网卡
firewall-cmd --permanent --zone=external --change-interface=ens33 # 网卡默认修改为external
firewall-cmd --set-default-zone=public # 默认区域设置为public
firewall-cmd --panic-on # 开启拒绝所有网络
firewall-cmd --panic-off # 关闭拒绝所有网络
firewall-cmd --zone=public --query-service=ssh # 查看public区域是否允许ssh协议
firewall-cmd --zone=public --query-service=https # 查看public区域是否允许https协议
firewall-cmd --permanent --zone=public --add-service=https # 永久允许https协议
irewall-cmd --permanent --zone=public --remove-service=http # 永久拒绝http协议
firewall-cmd --zone=public --add-port=8080-8081/tcp # 允许访问8080和8081端口
#####流量转发######
命令格式
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口>:proto=<协议>:toport=<目标端口>:toaddr=<目标IP地址>
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
#####富规则######
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" #拒绝192.168.10.0/24网段访问本机ssh服务(22端口)
firewall-cmd --reload # 重新加载防火墙
图形界面的防火墙
firewall-config 的界面
1、选择运行时(Runtime)模式或永久(Permanent)模式的配置。
2、可选的策略集合区域列表。
3、常用的系统服务列表。
4、当前正在使用的区域。
5、管理当前被选中区域中的服务。
6、管理当前被选中区域中的端口。
7、开启或关闭 SNAT(源地址转换协议)技术。
8、设置端口转发策略。
9、控制请求 icmp 服务的流量。
10、管理防火墙的富规则。
11、管理网卡设备。
12、被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量。
13、firewall-config 工具的运行状态。
firewall-config 工具配置完防火墙策略之后,无须进行二次确认,因为只要有修改内容,它就自动进行保存