firewalld小结
firewalld知识点小结
1.防火墙的概述
1. RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中firewalld是默认的防火墙配置管理工具它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
2. firewalld支持动态更新,并加入了区域zone的概念
3. zone就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换
安全框架方向:
1. 硬件层 机架上锁 服务器温度监控 定期的硬件检查 2. 网络层 设置防火墙仅能公司的IP 地址能够连接服务器的22端口 公有云的话 安全组设置 3. 系统层 服务器没有公网IP 修改ssh端口号,禁止root用户登录 使用密匙登录 4. 服务层 定期更新服务 mysql redis 防止漏洞注入 5. web层 漏洞注入,sql注入,XSS跨站,ddos攻击 可以采用第三方软件 waf防火墙 全栈的https协议(ssl证书,保证网站的传输安全)
SLA :服务等级协议
99.9 8.76小时
99.99 52.6分钟
99.999 5.26分钟
宕机的时间 网络安全产品推荐: 安全狗 知道创宇 牛盾云
补充知识点:
1. Firewalld规则配置,从外访问服务器内部如果没有添加规则默认是阻止,从服务器内部访问服务器外部默认是允许
2. 一个网卡仅能绑定一个zone 但一个zone可以绑定多个网卡
临时关闭:
关闭: /etc/init.d/iptables stop
查看状态: /etc/init.d/iptables status
开启:/etc/init.d/iptables start
永久关闭:
关闭:chkconfig iptables off
开启:chkconfig iptables on
查看状态:chkconfig iptables
禁用旧版的iptable:
systemctl mask iptables #
systemctl mask ipt6ables
2. 防火墙使用区域的介绍zone
划分出不同的区域,制定出不同的区域间的访问控制策略来控制不同程序区域间传送的数据流
区域 默认规则策略 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 拒绝流入的流量,除非与流出的流量相关
3.防火墙的日常管理
1. 区域配置策略
1. firewall有二种模式
runtime临时模式:修改规则马上生效,但如果重启服务则马上失效,测试建议
permanent持久模式:修改规则后需要reload重载服务才会生效,生产建议
2.参数说明:
zone区域相关指令 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久生效 --get-active-zones 显示当前正在使用的区域与网卡名称 --get-zones 显示总共可用的区域 --new-zone=<zone> 新增区域 services服务相关指令 --get-services 显示预先定义的服务 --add-service=<服务名> 设置默认区域允许该服务的流量 --remove-service=<服务名> 设置默认区域不再允许该服务的流量 Port端口相关指令 --add-port=<端口号/协议> 设置默认区域允许该端口的流量 --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量 Interface网卡相关指令 --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域 --change-interface=<网卡名称> 将某个网卡与区域进行关联 其他相关指令 --list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息 --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
3.应用场景
1.使用firewalld中各个区域规则结合,当前默认区域拒绝所有的流量,但如果来源IP是10.0.0.0/24网段则允许
#临时移除策略 firewall-cmd --remove-service=ssh,dhcpv6-client #添加来源是10.0.0.0/24网段,将其加入白名单 firewall-cmd --add-source=10.0.0.0/24 --zone=trusted #检查当前活动的区域 firewalll-cmd --get-activ-zone
2. 查询public区域是否允许请求SSH HTTPS协议的流量
firewall-cmd --list-all
2. 端口访问策略
1.使用firewalld允许客户请求的服务器的80/tcp端口,仅临时生效,如添加--permanent重启后则永久生效
firewall-cmd --add-port=80/tcp #放行多个端口 firewall-cmd --add-port={80/tcp,8080/tcp}
2.移除临时添加的端口规则
firewall-cmd --remove-port={80/tcp,8080/tcp}
3.服务访问策略
1.使用firewalld允许客户请求服务器的http https协议,仅临时生效,如添加--permanent重启后则永久生效
firewall-cmd --add-service={http,https}
2.移除临时添加的服务规则
firewall-cmd --remove-service={http,https}
3. 如何自定义端口,转为对应的服务
#1. 在/usr/lib/firewalld/services/目录下添加自定义的服务 zabbix.xml #2. 防火墙增加规则 firewall-cmd --add-service=zabbix-agent
4.端口转发策略
端口转发是指传统的目标地址映射,实现外网访问内网资源,流量转发命令
基本格式:
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
需要开启地址转发masquerade
firewall-cmd --add-masquerade --permanent
应用:如果需要将本地的10.0.0.61:5555端口转发至后端172.16.1.9:22端口
firewall-cmd --add-forward-port=port=5555:proto="tcp":toport="22":toaddr="172.16.1.9"
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
5.富规则策略
firewalld中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等
基本模板:
rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] destination address="address[/mask]" invert="True" service name="service name" port port="port value" protocol="tcp|udp" protocol value="protocol value" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"] accept | reject [type="reject type"] | drop
应用:
1. 比如允许10.0.0.1主机能够访问http服务,允许172.16.1.0/24能访问10050端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" service name="http" accept' firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" port port="10050" protocol ="tcp" accept'
2. 默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" service name="ssh" drop'
3. 使用firewalld,允许所有人能访问http,https服务,但只有10.0.0.1主机可以访问ssh服务
firewall-cmd --add-service={http,https}
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 service name="ssh" accept'
4.当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.9的22端口
firewall-cmd --add-masquerade firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" forward-port port="5555" protocol="tcp" to-port="22" to-addr="172.16.1.9"'
ps: 富规则规则是按照先后顺序进行匹配的
6.firewalld 的备份
我们所有针对public区域编写的永久添加的规则都会写入备份文件(--permanent)
/etc/firewalld/zones/public.xml
4.防火墙开启内部共享上网
在指定的带有公网的防火墙上实行NAT地址转换,以达到内部主机上网
实现步骤:
1. firewalld防火墙开启masquerade, 实现地址转换
firewall-cmd --add-masquerade --permanent
firewall-cdm --reload
2.客户端将网关指向firewalld服务器,将所有网络请求交给firewalld
#关闭eth0网卡
ifdown eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1 GATEWAY=172.16.1.61 #防火墙的内网地址
3.客户端配置DNS
vim /etc/resolv.conf
nameserver 223.5.5.5 114.114.114.114
4.重启网络服务
systemctl restart network
#开启NetworkManage
nmcli connection reload
nmcli connection down eth1 && nmcli connection up eth1
5. 测试是否通畅
ping baidu.com #PING baidu.com (123.125.115.110) 56(84) bytes of data. #64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=127 time=9.08 ms
5.补充:偷道形式图形化操作
1.服务端安装x11图形界面工具 [root@kvm-node1 ~]# yum install -y xorg-x11-font-utils xorg-x11-server-utils xorg-x11-utils xorg-x11-xauth xorg-x11-xinit 2.服务端开启SSH隧道转发X11 [root@kvm-node1 ~]# vim /etc/ssh/sshd_config X11Forwarding yes [root@kvm-node1 ~]# systemctl restart sshd 3.Windows客户端使用Xshell连接主机, 修改属性-->ssh->隧道-->转发x11-->勾选X DISPLAY-->重连服务器 windows安装xming-->打开 firewall-config 4.安装中文字符,解决界面乱码问题 [root@kevin ~]# yum install -y dejavu-lgc-sans-fonts [root@kevin ~]# yum groupinstall -y "Fonts" 临时调整字体为中文 [root@kvm-node1 ~]# export LANG=zh_CN.UTF-8 ps:需要安装xMing 在windows
ps:
ssh openvpn 可以通过外网来访问内部主机
firewalld 路由器可以解决内部主机上网的问题