目录
一、iptables
防火墙会从以上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止,ACCEPT,REJECT,DROP)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
在进行路由选择前处理数据包,用于目标地址转换(PREROUTING);
处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
在进行路由选择后处理数据包,用于源地址转换(POSTROUTING)。
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。
语法格式:iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
练习
1.iptables: 开启防火墙:可以正常使用ssh服务,dns服务, httpd服务,chrony服务, nfs服务
1>保证iptables服务正常运行
[root@baiheng ~]# yum install iptables-services.x86_64 -y 安装iptables服务的包
[root@baiheng ~]# systemctl stop firewalld --先暂停firewalld服务
[root@baiheng ~]# systemctl start iptables --开启iptables服务
2>添加规则
[root@baiheng ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
[root@baiheng ~]# iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
[root@baiheng ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
[root@baiheng ~]# iptables -t filter -A INPUT -p udp --dport 123 -j ACCEPT
[root@baiheng ~]# iptables -t filter -A INPUT -p udp --dport 111 -j ACCEPT
[root@baiheng ~]# iptables -t filter -A INPUT -p ip -j REJECT
3>查看规则
[root@baiheng ~]# iptables -vnL --line-numbers
二、firewalld
iptables service 首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了需要 reload 内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作,而不幸的是,这个动作很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中。
如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么 firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新即可,它具备对 IPv4 和 IPv6 防火墙设置的支持。
相比于传统的防火墙管理工具,firewalld支持动态更新技术并加入了区域的概念。区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以选择不同的集合,从而实现防火墙策略之间的快速切换。
在RHEL7中,firewalld服务是默认的防火墙配置管理工具,他拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。firewall-config和firewall-cmd是直接编辑xml文件,其中firewall-config是图形化工具,firewall-cmd是命令行工具
练习
2.firewalld: 开启防火墙:可以正常使用ssh服务,dns服务, httpd服务,chrony服务, nfs服务
且实现:访问第一台机器web服务的9090端口,转发到第二台机器的80端口(永久生效)
1>开启firewalld服务
[root@baiheng ~]# systemctl start firewalld
2>设置可以正常使用ssh服务,dns服务, httpd服务,chrony服务, nfs服务
[root@baiheng ~]# firewall-cmd --add-service=ssh
success
[root@baiheng ~]# firewall-cmd --add-service=http
success
[root@baiheng ~]# firewall-cmd --add-service=dns
success
[root@baiheng ~]# firewall-cmd --add-port=123/udp
success
[root@baiheng ~]# firewall-cmd --add-service=nfs
success
3>访问第一台机器web服务的9090端口,转发到第二台机器的80端口(永久生效)
[root@baiheng ~]# firewall-cmd --add-masquerade --开启地址伪装
[root@baiheng ~]# firewall-cmd --add-forward-port=port=9090:proto=tcp:toport=80:toaddr=192.168.188.131 --permanent --端口转发
[root@baiheng ~]# firewall-cmd --reload --重启服务