前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS 防火墙 firewall-cmd 命令

CentOS 防火墙 firewall-cmd 命令

作者头像
I Teach You 我教你
发布2023-07-18 18:05:04
5580
发布2023-07-18 18:05:04
举报
文章被收录于专栏:王二麻子IT技术交流园地
防火墙状态及规则
  1. 查看防火墙状态:firewall-cmd --state
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --state 
2running
  1. 查看防火墙:firewall-cmd --list-all
代码语言:javascript
复制
 1[root@localhost ~]# firewall-cmd --list-all
 2public (active)
 3  target: default
 4  icmp-block-inversion: no
 5  interfaces: eth0
 6  sources:
 7  services: dhcpv6-client http
 8  ports: 999/tcp
 9  protocols:
10  masquerade: no
11  forward-ports:
12  source-ports:
13  icmp-blocks:
14  rich rules:
  1. 更新防火墙规则:firewall-cmd --reload
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --reload
2success
端口
  1. 临时增加(reload之后消失):不需要reload
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --add-port=999/tcp
2success
3[root@localhost ~]# firewall-cmd --query-port=999/tcp
4yes
5[root@localhost ~]# firewall-cmd --reload
6success
7[root@localhost ~]# firewall-cmd --query-port=999/tcp
8no
  1. 永久增加:reload后生效
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --permanent --add-port=999/tcp
2success
3[root@localhost ~]# firewall-cmd --reload
4success
5[root@localhost ~]# firewall-cmd --query-port=999/tcp
6yes
  1. 临时删除端口:reload后消失
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --remove-port=999/tcp
2success
3[root@localhost ~]# firewall-cmd --query-port=999/tcp
4no
5[root@localhost ~]# firewall-cmd --reload
6success
7[root@localhost ~]# firewall-cmd --query-port=999/tcp
8yes
  1. 永久删除端口:reload后生效
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --permanent --remove-port=999/tcp
2success
3[root@localhost ~]# firewall-cmd --query-port=999/tcp
4yes
5[root@localhost ~]# firewall-cmd --reload
6success
7[root@localhost ~]# firewall-cmd --query-port=999/tcp
8no
  1. 查询端口
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --query-port=999/tcp
2yes
  1. 查看所有放行的端口
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --list-ports
2999/tcp
IP
  1. 防火墙添加允许访问的IP 注:添加允许访问的IP后,需要reload才能生效
代码语言:javascript
复制
1[root@localhost logs]# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="10.45.2.35" accept' --permanent
2success
3[root@localhost logs]# firewall-cmd  --reload
4success
服务
  1. 防火墙服务的状态
代码语言:javascript
复制
 1[root@localhost ~]# systemctl status firewalld.service
 2● firewalld.service - firewalld - dynamic firewall daemon
 3   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
 4   Active: active (running) since 五 2021-10-29 11:09:30 CST; 3 days ago
 5     Docs: man:firewalld(1)
 6 Main PID: 42215 (firewalld)
 7   CGroup: /system.slice/firewalld.service
 8           └─42215 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
 9
1010月 29 11:09:30 localhost.localdomain systemd[1]: Starting firewalld - dyna...
1110月 29 11:09:30 localhost.localdomain systemd[1]: Started firewalld - dynam...
1211月 02 10:22:44 localhost.localdomain firewalld[42215]: WARNING: ALREADY_EN...
1311月 02 10:23:29 localhost.localdomain firewalld[42215]: WARNING: ALREADY_EN...
14Hint: Some lines were ellipsized, use -l to show in full.
  1. 启动/关闭防火墙
代码语言:javascript
复制
1[root@localhost ~]# systemctl stop firewalld.service
2[root@localhost ~]# systemctl start firewalld.service
  1. 获取所有支持的服务
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --get-services
2RH-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 git gre 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 ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp 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
  1. 增加服务(临时增加)
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --add-service=https
2success
3[root@localhost ~]# firewall-cmd --query-service=https
4yes
5[root@localhost ~]# firewall-cmd --reload
6success
7[root@localhost ~]# firewall-cmd --query-service=https
8no
  1. 删除服务(临时删除)
代码语言:javascript
复制
 1[root@localhost ~]# firewall-cmd --query-service=https
 2yes
 3[root@localhost ~]# firewall-cmd --remove-service=https
 4success
 5[root@localhost ~]# firewall-cmd --query-service=https
 6no
 7[root@localhost ~]# firewall-cmd --reload
 8success
 9[root@localhost ~]# firewall-cmd --query-service=https
10no
  1. 查询服务
代码语言:javascript
复制
1[root@localhost ~]# firewall-cmd --query-service=https
2yes
  1. 增加服务(永久)
代码语言:javascript
复制
1[root@localhost bin]# firewall-cmd --permanent --add-service=http
2success
3[root@localhost bin]# firewall-cmd --reload
4success
5[root@localhost bin]# firewall-cmd --query-service=http
6yes
  1. 删除服务(永久)
代码语言:javascript
复制
1[root@localhost bin]# firewall-cmd --permanent --remove-service=ssh
2success
3[root@localhost bin]# firewall-cmd --reload
4success
5[root@localhost bin]# firewall-cmd --query-servicessh
6no
封禁IP
  1. 查看所有的规则:
代码语言:javascript
复制
 1firewall-cmd --list-all-zones
 2# drop: 丢弃所有进入的包,而不给出任何响应
 3# block: 拒绝所有外部发起的连接,允许内部发起的连接
 4# public: 允许指定的进入连接
 5# external: 同上,对伪装的进入连接,一般用于路由转发
 6# dmz: 允许受限制的进入连接
 7# work: 允许受信任的计算机被限制的进入连接,类似 workgroup
 8# home: 同上,类似 homegroup
 9# internal: 同上,范围针对所有互联网用户
10# trusted: 信任所有连接
  1. 管理端口
代码语言:javascript
复制
1#列出 dmz 级别的被允许的进入端口
2firewall-cmd --zone=dmz --list-ports
3# 允许 tcp 端口 8080 至 dmz 级别
4firewall-cmd --zone=dmz --add-port=8080/tcp
5# 允许某范围的 udp 端口至 public 级别,并永久生效
6firewall-cmd --zone=public --add-port=5060-5059/udp --permanent
  1. 网卡接口
代码语言:javascript
复制
1# 列出 public zone 所有网卡
2firewall-cmd --zone=public --list-interfaces
3# 将 eth0 添加至 public zone,永久
4firewall-cmd --zone=public --permanent --add-interface=eth0
5# eth0 存在与 public zone,将该网卡添加至 work zone,并将之从 public zone 中删除
6firewall-cmd --zone=work --permanent --change-interface=eth0
7# 删除 public zone 中的 eth0,永久
8firewall-cmd --zone=public --permanent --remove-interface=eth0
  1. 管理服务
代码语言:javascript
复制
1# 添加 smtp 服务至 work zone
2firewall-cmd --zone=work --add-service=smtp
3# 移除 work zone 中的 smtp 服务
4firewall-cmd --zone=work --remove-service=smtp
  1. 配置 external zone 中的 ip 地址伪装
代码语言:javascript
复制
1# 查看
2firewall-cmd --zone=external --query-masquerade
3# 打开伪装
4firewall-cmd --zone=external --add-masquerade
5# 关闭伪装
6firewall-cmd --zone=external --remove-masquerade
  1. 配置 public zone 的端口转发
代码语言:javascript
复制
1# 要打开端口转发,则需要先
2firewall-cmd --zone=public --add-masquerade
3# 然后转发 tcp 22 端口至 3753
4firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753
5# 转发 22 端口数据至另一个 ip 的相同端口上
6firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
7# 转发 22 端口数据至另一 ip 的 2055 端口上
8firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
  1. 配置 public zone 的 icmp
代码语言:javascript
复制
1# 查看所有支持的 icmp 类型
2firewall-cmd --get-icmptypes
3destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
4# 列出
5firewall-cmd --zone=public --list-icmp-blocks
6# 添加 echo-request 屏蔽
7firewall-cmd --zone=public --add-icmp-block=echo-request [--timeout=seconds]
8# 移除 echo-reply 屏蔽
9firewall-cmd --zone=public --remove-icmp-block=echo-reply
  1. IP 封禁 (这个是我们平时用得最多的)
代码语言:javascript
复制
 1# 单个IP
 2firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.222' reject"
 3# IP段
 4firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.0/24' reject" 
 5# 单个IP的某个端口
 6firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2 port port=80 protocol=tcp accept" 
 7# 这个是我们用得最多的,封一个IP和一个PORT。reject:拒绝;accept:允许。当然,我们仍然可以通过 ipset 来封禁 ip
 8# 封禁 ip
 9firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
10firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.222
11# 封禁网段
12firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
13firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.0/24
14# 导入 ipset 规则
15firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/blacklist.xml
16# 然后封禁 blacklist
17firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'
  1. IP封禁和端口
代码语言:javascript
复制
1firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2 port port=80 protocol=tcp accept"
2# 只对192.168.1.2这个IP只能允许80端口访问  (拒绝访问只需把  accept 换成 reject、删除该规则把 –add-rich-rule 改成 –remove-rich-rule即可)
3----------------------------------------- 
4firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2/24 port port=80 protocol=tcp accept"
5# 只对192.168.1.2这个IP段只能允许80端口访问(拒绝访问只需把  accept 换成 reject、删除该规则把 –add-rich-rule 改成 –remove-rich-rule即可
  1. 双网卡内网网卡不受防火墙限制
代码语言:javascript
复制
1# 公网网卡–zone=public默认区域
2firewall-cmd --permanent --zone=public --add-interface=eth1
3
4# 内网网卡–zone=trusted是受信任区域 可接受所有的网络连接
5firewall-cmd --permanent --zone=trusted --add-interface=eth2
  1. 重新载入以生效
代码语言:javascript
复制
1firewall-cmd --reload
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/08/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 防火墙状态及规则
  • 端口
  • IP
  • 服务
    • 封禁IP
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档