firewalld 防火墙 - 02

一、防火墙富规则
firewalld中的富规则更有针对性,优先级在所有的防火墙策略中也是最高的,下面为firewalld富语言规则帮助手册
[root@ web01 ~]# man firewall-cmd
[root@ web01 ~]# man firewalld.richlanguage
    rule
         [source]
         [destination]
         service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
         [log]
         [audit]
         [accept|reject|drop|mark]

rule [family="ipv4|ipv6"]
source 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"
accept | reject [type="reject type"] | drop

#富语言规则相关命令
--add-rich-rule='<RULE>'        #在指定的区域添加一条富语言规则
--remove-rich-rule='<RULE>'     #在指定的区删除一条富语言规则

--query-rich-rule='<RULE>'      #找到规则返回0,找不到返回1
--list-rich-rules               #列出指定区里的所有富语言规则


# 查看防火墙配置
[root@web01 services]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: port=6666:proto=tcp:toport=22:toaddr=172.16.1.5
  source-ports: 
  icmp-blocks: 
  rich rules: 
1.实例一
允许10.10.0.1主机能够访问http服务,允许172.16.1.0/24能访问111端口
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 service name=http accept'
success

[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=111 protocol=tcp accept'
success

[root@web01 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="10.10.0.1" service name="http" accept
	rule family="ipv4" source address="172.16.1.0/24" port port="111" protocol="tcp" accept
	
#.测试连接   
# 内网网段都可以访问  telnet 172.16.1.7 111
# 内网网段都可以访问  telnet 172.16.1.2 111

[D:\~]$ telnet 172.16.1.* 111  #只要在这个网段都可以
2.实例二
默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh reject'
success

[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh drop'
success

#drop和reject

drop    # 直接丢弃,不返回任何内容
reject  # 拒绝,会返回拒绝的内容
3.实例三
使用firewalld,允许所有人能访问http,https服务,但只有10.10.0.1主机可以访问ssh服务
[root@web01 ~]# firewall-cmd --add-service={http,https}
success

[root@web01 ~]# firewall-cmd --remove-service=ssh
success

[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 service name=ssh accept'
4.实例四
当用户来源IP地址是10.10.0.1主机,则将用户请求的6666端口转发至后端172.16.1.5的22端口
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 forward-port port=6666 protocol=tcp to-port=22 to-addr=172.16.1.5'

[root@web01 ~]# firewall-cmd --add-masquerade 
success
6.查看富规则
[root@web01 ~]# systemctl restart firewalld     #启动防火墙

[root@web01 ~]# firewall-cmd --list-rich-rules  #查看富规则1

[root@web01 ~]# firewall-cmd --list-all         #查看富规则2
7.禁ping
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 protocol value=icmp drop'
二、防火墙备份
我们的防火墙规则,配置永久生效后,会保存在/etc/firewalld/zones/目录下, #名字随便写 只要在/zones/*.xml就行
我们如果要进行同样的防火墙配置,只需要讲该文件推送到新的服务器,并启动防火墙即可
如果要备份,备份的也是/etc/firewalld/zones/目录
[root@web01 ~]# systemctl restart firewalld     #启动防火墙
[root@web01 services]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="http"/>
</zone>

九、防火墙内部共享上网
在指定的带有公网的IP的实例上启动firewalld防火墙的NAT地址转换,以此达到内部主机上网

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dozCcvyw-1618243960887)(C:\Users\17155\Desktop\下载图片\1618241717758.png)]

# 1、防火墙备份
我们的防火墙规则,配置永久生效后,会保存在/etc/firewalld/zones/目录下,
我们如果要进行同样的防火墙配置,只需要讲该文件推送到新的服务器,并启动防火墙即可
如果要备份,备份的也是/etc/firewalld/zones/目录

# 2、防火墙内部共享上网
在指定的带有公网的IP的实例上启动firewalld防火墙的NAT地址转换,以此达到内部主机上网
1.开启IP伪装
[root@lb01 ~]# firewall-cmd --add-masquerade
[root@lb01 ~]# firewall-cmd --add-masquerade --permanent
2.开启内核转发
[root@lb01 ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1

#CentOS 6 系统需要手动开启,CentOS 7 默认就是开启的

[root@lb01 ~]# sysctl -p  #生效启动
3.修改内网服务器的网卡
[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.5  #增加一个网关
DNS1=114.114.114.114

#重启网卡
[root@web01 ~]# ifdown eth1 && ifup eth1
4.测试
[root@web01 ~]# ip a

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8e:6b:4b brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.7/24 brd 172.16.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8e:6b4b/64 scope link 
       valid_lft forever preferred_lft forever

[root@web01 ~]# ping www.baidu.com
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=127 time=11.7 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=127 time=9.53 ms
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值