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
View Code

 

ps:

     ssh openvpn 可以通过外网来访问内部主机

   firewalld 路由器可以解决内部主机上网的问题

 

posted @ 2019-02-25 20:50  夜雨清风泪  阅读(2386)  评论(0编辑  收藏  举报