三章 firewalld(二)
1、IP地址伪装
通过地址伪装,NAT设备将经过设备的包转发到指定接收方,同时将通过的数据包的原地址更改为NAT的接口地址转发到不同步目的地。当是返回数据包是,会将目的地之修改为原始主机地址并路由。
2、端口转发
也叫端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上不同端口,或不同计算机上的端口。
firewall-cmd高级配置
1、直接规则
1)直接只用iptables或firewalld语句规则写入管理区域
2)执行优先级最高。优先级:直接规则→富规则→区域规则
3)不会iptables语句的用户直接使用firewalld
4)适用于服务或应用程序
语句:
firewall-cmd --direct
例:启用黑名单
firewall-cmd --direct --add-chain ipv4 raw blacklist
例:将1.0.0.0网段加入到黑名单
firewall-cmd --direct --add-chain ipv4 raw PREOUTING 0 -s 1.0.0.0 -j blacklist
2、富规则(富语言规则)
语句中描述的时间或表达式比较详细。包括允许、拒绝、配置日志记录、端口转发、地址伪装、速率限制、访问时间等。
语句:
firewall-cmd --zone=区域 --add-rich-rule=‘rule 富规则表达式’
--add-rich-rule:添加富规则
--remove-rich-rule:删除富规则
查询富规则是否添加到指定区域
firewall-cmd --query-rich-rule
查看富规则列表
firewall-cmd --list-rich-rule
表达式:
source address=源IP地址
destination address=目标IP地址
server name=服务名
port port=端口号
protocol value=协议类型(TCP/UDP)
icmp-block=ICMP数据包类型(request reply)
maskquerade 转换地址与端口号
accept:通过
drop:丢弃、拒绝
reject:拒绝并返回消息
log:日志
log prefix=日志文件
level:级别
limit value=跳数/时间
--timeout=超时时间
例:
在external区域中,为认证报头协议AH使用新的IPV4和IPV6连接
firewall-cmd --zone=external --add-rich-rule=‘rule protocol value=ah accept’
例:
允许ipv4的主机访问ftp服务
firewall-cmd --zone=external --add-rich-rule=‘rule famliy=ipv4 server name=ftp accept’
例:
允许ipv4的1.0.0.0主机访问tftp服务,并每分钟记录一次日志
firewall-cmd --zone=internal --add-rich-rule=‘rule famliy=ipv4 server name=tftp source address=1.0.0.1/24 log limit value=1/m audit accept’
例:
允许ipv4的192.168.1.10主机访问http服务,并每分钟记录一次日志
firewall-cmd --zone=trusted --add-rich-rule=‘rule famliy=ipv4 server name=http source address=192.168.1.10/24 log limit value=1/m audit accept’
例:
为redius服务拒绝来自1:2:3:4:5:6:: 的ipv6连接,日志前缀为DNS,级别为info,每分钟记录三次
firewall-cmd --zone=trusted --add-rich-rule=‘rule famliy=ipv6 server name=redius source address=1:2:3:4:5:6:: log limit value=3/m log prefix=dns
level=info audit drop’
firewall-cmd --zone=trusted --add-rich-rule=‘rule famliy=ipv6 server name=redius audit accept’
实验接着第二章的做
配置IP伪装和地址转发
1、在外网服务器上搭建web用于测试
结果:内网测试机可以访问。dmz区域的网站服务器也可以访问。
yum -y install httpd
vim /var/www/html/index.html
systemctl enable httpd
systemctl restart httpd
firefox 127.0.0.1
内网服务器访问:firefox http://100.1.1.20
web服务器访问:firefox http://100.1.1.20
原因:
在网关服务器上查看
firewall-cmd --list-all --zone=external
masquerade: yes 地址伪装开启
在网关服务器上配置:
firewall-cmd --remove-masquerade --zone=external
firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 masquerade'
2、配置端口转发实现外网服务器访问dmz的web服务器
在网关服务器上配置:
firewall-cmd --zone=external --add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10
验证:
外网服务器访问
firefox https://100.1.1.10
3、使用富规则实现端口转发
新申请的公网地址100.1.1.15配置在网关服务器的外网接口ens33上
在网关服务器上配置:
vim /etc/*/*/*ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=ens33
UUID=95692582-d4b6-4b10-bd94-79b64a0bb19e
DEVICE=ens33
ONBOOT=yes
IPADDR0=100.1.1.10
NETMASK=255.255.255.0
ZONE=external
IPADDR1=100.1.1.15
NETMASK=255.255.255.0
ifdown ens33
ifup ens33
ip addr查看
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:f7:c3:83 brd ff:ff:ff:ff:ff:ff
inet 100.1.1.10/8 brd 100.255.255.255 scope global ens33
valid_lft forever preferred_lft forever
inet 100.1.1.15/8 brd 100.255.255.255 scope global secondary ens33
valid_lft forever preferred_lft forever
firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 destination address=100.1.1.15/32 forward-port port=443 protocol=tcp to-addr=192.168.2.10'