Linux防火墙工具—firewalld加强防护

1、简介

Centos7以上的发行版都自带了firewalld防火墙的,firewalld自带了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

2、服务操作

 # 启动服务
 [root@elasticsearch-04 ~]# systemctl start firewalld # 这里不用担心启用了防火墙以后无法通过ssh远程,22端口默认加入了允许规则
 # 停止服务
 [root@elasticsearch-04 ~]# systemctl stop firewalld
 # 重启服务
 [root@elasticsearch-04 ~]# systemctl restart firewalld

3、重载防火墙配置

 [root@elasticsearch-04 ~]# firewall-cmd --reload
 success

4、查看版本

 [root@elasticsearch-04 ~]# firewall-cmd --version
 0.5.3

5、查看防火墙运行状态

 [root@elasticsearch-04 ~]# firewall-cmd --state
 running

6、查看默认区域的设置

 [root@elasticsearch-04 ~]# firewall-cmd --list-all
 public (active)
 target: default
 icmp-block-inversion: no
 interfaces: eth0
 sources: 
 services: sshdhcpv6-client
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:

7、设置常规端口放行

 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --add-port=21/tcp
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --add-port=22/tcp
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --add-port=8888/tcp
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --add-port=888/tcp

8、一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件

 [root@elasticsearch-04 ~]# cd /usr/lib/firewalld/services
 [root@elasticsearch-04 services]# ls
 amanda-client.xml       jenkins.xml               puppetmaster.xml
 amanda-k5-client.xml     kadmin.xml               quassel.xml
 bacula-client.xml       kerberos.xml             radius.xml
 bacula.xml               kibana.xml               redis.xml
 bgp.xml                 klogin.xml               RH-Satellite-6.xml
 bitcoin-rpc.xml         kpasswd.xml               rpc-bind.xml
 bitcoin-testnet-rpc.xml kprop.xml                 rsh.xml
 bitcoin-testnet.xml     kshell.xml               rsyncd.xml
 bitcoin.xml             ldaps.xml                 samba-client.xml

9、查看还有哪些服务可以打开

 [root@elasticsearch-04 services]# firewall-cmd --get-services
 RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master gitgre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid sshsyncthing syncthing-gui synergy syslog syslog-tls telnettftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

10、查看所有打开的端口

 [root@elasticsearch-04 services]# firewall-cmd --zone=public --list-ports

11、允许某范围的 udp 端口至 public 级别,并永久生效

 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-port=5060-5059/udp --permanent

12、开启一个端口

1.添加
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent # --permanent永久生效,没有此参数重启后失效
2.重新载入
 [root@elasticsearch-04 ~]# firewall-cmd --reload
3.查看
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --query-port=80/tcp
4.删除
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --remove-port=80/tcp --permanent

13、管理端口

1.列出 dmz 级别的被允许的进入端口
 [root@elasticsearch-04 ~]# firewall-cmd --zone=dmz --list-ports
2.允许 tcp 端口 8080 至 dmz 级别
 [root@elasticsearch-04 ~]# firewall-cmd --zone=dmz --add-port=8080/tcp

14、网卡接口

1.列出 public zone 所有网卡
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --list-interfaces
2.将 eth0 永久添加至 public zone
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --permanent --add-interface=eth0
3.eth0 存在 public zone,将该网卡添加至 work zone,并将之从 public zone 中删除
 [root@elasticsearch-04 ~]# firewall-cmd --zone=work --permanent --change-interface=eth0
4.永久删除 public zone 中的 eth0
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --permanent --remove-interface=eth0

15、管理服务

1.添加 smtp 服务至 work zone
 [root@elasticsearch-04 ~]# firewall-cmd --zone=work --add-service=smtp
2.移除 work zone 中的 smtp 服务
 [root@elasticsearch-04 ~]# firewall-cmd --zone=work --remove-service=smtp

16、配置 external zone 中的 ip 地址伪装

1.查看
 [root@elasticsearch-04 ~]# firewall-cmd --zone=external --query-masquerade
2.打开伪装
 [root@elasticsearch-04 ~]# firewall-cmd --zone=external --add-masquerade
3.关闭伪装
 [root@elasticsearch-04 ~]# firewall-cmd --zone=external --remove-masquerade

17、配置 public zone 的端口转发

1.要打开端口转发,则需要先设置公共的zone
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-masquerade
2.然后转发 tcp 8080 端口至 3753
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=3753
3.转发 8080 端口数据至另一个 ip 的相同端口上
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.100
4.转发 8080 端口数据至另一 ip 的 2055 端口上
 [root@elasticsearch-04 ~]# firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=2055:toaddr=192.168.1.100

18、IP 封禁

1.封禁ip
 # 方案一
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.222' reject"
 # 方案二:通过 ipset 来封禁 ip
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.222
2.封禁网段
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
 [root@elasticsearch-04 ~]# firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.0/24

19、应急命令

 [root@elasticsearch-04 ~]# firewall-cmd --panic-on # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
 [root@elasticsearch-04 ~]# firewall-cmd --panic-off # 取消应急模式,但需要重启firewalld后才可以远程ssh
 [root@elasticsearch-04 ~]# firewall-cmd --query-panic # 查看是否开启应急模式

如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家Orchis饰品店,喜欢的小伙伴欢迎????前来下单。

扫描二维码

获取更多精彩

运维猫公众号

有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:

扫描二维码

添加私人微信

运维猫博主

扫码加微信

最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。

点击阅读原文  查看更多精彩内容!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值