分享

银河麒麟服务器操作系统 V10 SP1 firewalld 配置文件实操

李白 2021-11-18 12:00:40 发表于 已解决 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 2725
系统本身已经内置了一些常用服务的防火墙规则,存放在/usr/lib/firewalld/services/
(模板服务配置路径)。注意,请勿修改/usr/lib/firewalld/services/,只有
/etc/firewalld/services 的文件可以被编辑。
[root@kylin-vm~]# ls /usr/lib/firewalld/services/
amanda-client.xml dhcpv6.xml high-availability.xml ipp-client.xml kpasswd.xml
libvirt.xml mysql.xml pmcd.xml pop3s.xml RH-Satellite-6.xml smtp.xml tftp.xml
bacula-client.xml dhcp.xml https.xml ipp.xml ldaps.xml mdns.xml nfs.xml
pmproxy.xml postgresql.xml rpc-bind.xml ssh.xml transmission-client.xml
bacula.xml dns.xml http.xml ipsec.xml ldap.xml mountd.xml ntp.xml
pmwebapis.xml proxy-dhcp.xml samba-client.xml telnet.xml vnc-server.xml
dhcpv6-client.xml ftp.xml imaps.xml kerberos.xml libvirt-tls.xml ms-wbt.xml
openvpn.xml pmwebapi.xml radius.xml samba.xml tftp-client.xml wbem-https.xml
以下例子均以系统自带的 public zone 为例子.
1. 如果想开放 80 端口供外网访问 http 服务,例子如下
1.1 将 http.xml 复制到/etc/firewalld/services/下面,以服务形式管理防火墙,这个 cp
命令其实是可以省略的,系统会优先去读取 /etc/firewalld 里面的文件,读取完毕后,会去
/usr/lib/firewalld/services/ 再次读取,为了方便修改和管理,建议复制到/etc/firewalld。
[root@kylin-vm~]# cp /usr/lib/firewalld/services/http.xml
/etc/firewalld/services/
[root@kylin-vm~]# ls /etc/firewalld/services/
http.xml
[root@kylin-vm~]# ls /etc/firewalld/zones/
public.xml public.xml.old
1.2 修改 public.xml,加入 http 服务
cat/etc/firewalld/zones/public.xml
<?xmlversion="1.0"encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For useinpublic areas. Youdonot trust the other computers on
networks to not harm your computer. Only selected incoming connections are
accepted.</description>
<servicename="dhcpv6-client"/>
<servicename="ssh"/>
<servicename="http"/># 这行是后加的,要匹配 /etc/firewalld/services/文件夹下
的文件名
</zone>
1.3 重新载入 两条命令都可以的
以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:
[root@kylin-vm~]# firewall-cmd --reload
success
以 root 身份输入以下信息,重新加载防火墙并中断用户连接,即丢弃状态信息:
[root@kylin-vm~]# firewall-cmd --complete-reload
success
注意:通常在防火墙出现严重问题时,这个命令才会被使用。比如,防火墙规则是正确
的,但却出现状态信息问题和无法建立连接。
2. 修改防火墙 ssh 的端口方法
2.1 复制 ssh.xml 文件到/etc/firewalld/services/
[root@kylin-vm~]# cp /usr/lib/firewalld/services/ssh.xml
/etc/firewalld/services/
2.2 修改 ssh.xml 文件 12222 为 ssh 端口
[root@kylin-vm~]# cat /etc/firewalld/services/ssh.xml
<?xmlversion="1.0"encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell(SSH)is a protocolforlogging into and executing
commands on remote machines. It provides secure encrypted communications. If
you plan on accessing your machine remotely via SSH over a firewalled
interface,enablethis option. You need the openssh-server package installedforthis
option to be useful.</description>
<portprotocol="tcp"port="12222"/>
</service>
2.3 重新载入 两条命令都可以的
以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:
[root@kylin-vm~]# firewall-cmd --reload
success
以 root 身份输入以下信息,重新加载防火墙并中断用户连接,即丢弃状态信息:
[root@kylin-vm~]# firewall-cmd --complete-reload
success
注意:通常在防火墙出现严重问题时,这个命令才会被使用。比如,防火墙规则是正确
的,但却出现状态信息问题和无法建立连接。
3. 指定 ip 访问 ssh 端口
3.1 修改/etc/firewalld/zones/
# rule 字段内为要限制的 ip 和使用的服务;
[root@kylin-vm~]# cat /etc/firewalld/zones/public.xml
<?xmlversion="1.0"encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For useinpublic areas. Youdonot trust the other computers on
networks to not harm your computer. Only selected incoming connections are
accepted.</description>
<servicename="dhcpv6-client"/>
<rulefamily="ipv4">
<sourceaddress="192.167.23.1"/>
<servicename="ssh"/>
<accept/>
</rule>
</zone>
执行如下指令也可以实现 IP 和端口允许和限制;
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source
address="192.167.0.142" port protocol="tcp" port="6379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source
address="192.167.0.142" port protocol="tcp" port="6379" drop"
重新载入 两条命令都可以的;
以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:
[root@kylin-vm~]# firewall-cmd --reload
success
以 root 身份输入以下信息,重新加载防火墙并中断用户连接,即丢弃状态信息:
[root@kylin-vm~]# firewall-cmd --complete-reload
success
注意:通常在防火墙出现严重问题时,这个命令才会被使用。比如,防火墙规则是正确
的,但却出现状态信息问题和无法建立连接。
4. 添加自定义服务 举例,添加 8080 端口为新的 Service
4.1 添加新文件 8080.xml
cat /etc/firewalld/services/8080.xml
<?xmlversion="1.0"encoding="utf-8"?>
<service>
<short>8080Test</short>
<description>此处为文字说明</description>
<portprotocol="tcp"port="8080"/>
</service>
4.2 编辑 public.xml 文件,加入相应的 Server
cat/etc/firewalld/zones/public.xml
<?xmlversion="1.0"encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For useinpublic areas. You do not trust the other computers on
networks to not harm your computer. Only selected incoming connections are
accepted.</description>
<servicename="dhcpv6-client"/>
<servicename="ssh"/>
<servicename="8080"/># 这行是后加的,要匹配
/etc/firewalld/services/8080.xml 文件名
</zone>
4.3 重新载入
[root@kylin-vm~]# firewall-cmd --reload
success
基于 Firewall 实现网络伪装及端口转发
1)如果想通过 firewalld 实现网络伪装,将内网主机局域网代理上网,可以使用 IP 伪
装,伪装指令如下:
此举启用区域的伪装功能。私有网络的地址将被隐藏并映射到一个公有 IP。这是地址
转换的一种形式,常用于路由。由于内核的限制,伪装功能仅可用于 IPv4。
firewall-cmd--permanent--zone=<ZONE>--add-masquerade
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4
source address=192.167.0/24 masquerade"
2)访问本地端口映射至本机其他端口
将访问 192.167.0.141 主机 8888 端口的请求转发至 22 端口
firewall-cmd --permanent --zone=public
--add-forward-port=port=8888:proto=tcp:toport=22:toaddr=192.167.0.141
3)访问本地端口映射至远程主机端口
#开启防火墙伪装,开启后才能转发端口;
firewall-cmd --add-masquerade --permanent
#将访问 192.167.0.141 主机 6022 端口的请求转发该主机 22 端口;
firewall-cmd --permanent
--add-forward-port=port=6022:proto=tcp:toport=22
#将访问 192.167.0.141 主机 8080 端口的请求转发至 192.167.0.142 的 80 端口;
firewall-cmd --permanent --zone=public
--add-forward-port=port=8080:proto=tcp:toaddr=192.167.0.142:toport=80

版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系在线客服