linux防火墙相关指令 firewall指令firewall-cmd【笔记】

前言

提示:如果防火墙开启,我们pingLinux服务器的IP会ping不通,所以我们要对防火墙进行设置(一般情况下只需执行1里边的命令就可以了)

1.firewalld的基本使用

  • 启动防火墙: systemctl start firewalld
  • 查看防火墙状态:systemctl status firewalld
  • 停止防火墙: systemctl disable firewalld
  • 禁用防火墙: systemctl stop firewalld
  • 屏蔽:systemctl mask firewalld
  • 屏蔽防火墙服务(让它不能启动) ln -s '/dev/null''/etc/systemd/system/firewalld.service'
  • 取消屏蔽:systemctl unmask firewalld
  • 显示服务(如 firewalld.service) rm '/etc/systemd/system/firewalld.service'

2.systemctl指令

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
  • 启动一个服务:systemctl start firewalld.service
  • 关闭一个服务:systemctl stop firewalld.service
  • 重启一个服务:systemctl restart firewalld.service
  • 显示一个服务的状态:systemctl status firewalld.service
  • 在开机时启用一个服务:systemctl enable firewalld.service
  • 在开机时禁用一个服务:systemctl disable firewalld.service
  • 查看服务是否开机启动:systemctl is-enabled firewalld.service
  • 查看已启动的服务列表:systemctl list-unit-files|grep enabled
  • 查看启动失败的服务列表:systemctl --failed

配置firewalld-cmd

  • 查看版本: firewall-cmd --version
  • 查看帮助: firewall-cmd --help
  • 显示状态:firewall-cmd --state
  • 查看所有打开的端口: firewall-cmd --zone=public --list-ports
  • 更新防火墙规则: firewall-cmd --reload
  • 查看区域信息: firewall-cmd --get-active-zones
  • 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
  • 拒绝所有包:firewall-cmd --panic-on
  • 取消拒绝状态: firewall-cmd --panic-off
  • 查看是否拒绝: firewall-cmd --query-panic
  • 那怎么开启一个端口呢
  1. 添加
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    (–permanent永久生效,没有此参数重启后失效)
  2. 重新载入
    firewall-cmd --reload
  3. 查看
    firewall-cmd --zone=public --query-port=80/tcp
  4. 删除
    firewall-cmd --zone=public --remove-port=80/tcp --permanent
  5. 修改端口启用
    在每次修改端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改 所以也可以在文件中之间修改 然后重新加载
	#systemctl start firewalld.service //开启服务
	#systemctl enable firewalld.service //开机制动启动
	#systemctl stop firewalld.service //关闭服务
	#systemctl disable firewalld.service //禁止开机启动
  1. 获取 firewalld 状态
    firewall-cmd --state
    此举返回 firewalld 的状态,没有任何输出。可以使用以下方式获得状态输出:
    firewall-cmd --state && echo "Running" || echo "Not running"
  2. 在不改变状态的条件下重新加载防火墙:
    firewall-cmd --reload
    如果你使用–complete-reload,状态信息将会丢失。这个选项应当仅用于处理防火墙问题时,例如,状态信息和防火墙规则都正常,但是不能建立任何连接的情况。
  3. 获取支持的区域列表
    firewall-cmd --get-zones
  4. 获取所有支持的服务
    firewall-cmd --get-services
  5. 获取所有支持的ICMP类型
    firewall-cmd --get-icmptypes
  6. 列出全部启用的区域的特性
    firewall-cmd --list-all-zones
    输出格式是:
<zone> interfaces: <interface1> .. services: <service1> .. ports: <port1> .. forward-ports: <forward port1> .. icmp-blocks: <icmp type1> ....

输出区域 全部启用的特性。如果省略区域,将显示默认区域的信息。
firewall-cmd [--zone=<zone>] --list-all

  1. 获取默认区域的网络设置
    firewall-cmd --get-default-zone

  2. 设置默认区域
    firewall-cmd --set-default-zone=<zone>
    流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。

  3. 获取活动的区域
    firewall-cmd --get-active-zones
    这条命令将用以下格式输出每个区域所含接口:

<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..
  1. 根据接口获取区域
    firewall-cmd --get-zone-of-interface=<interface>
  2. 将接口增加到区域
    firewall-cmd [--zone=<zone>] --add-interface=<interface>
    如果接口不属于区域,接口将被增加到区域。如果区域被省略了,将使用默认区域。接口在重新加载后将重新应用。
  3. 修改接口所属区域
    firewall-cmd [--zone=<zone>] --change-interface=<interface>
    这个选项与 –add-interface 选项相似,但是当接口已经存在于另一个区域的时候,该接口将被1添加到新的区域。
  4. 从区域中删除一个接口
    firewall-cmd [--zone=<zone>] --remove-interface=<interface>
  5. 查询区域中是否包含某接口
    firewall-cmd [--zone=<zone>] --query-interface=<interface>
    返回接口是否存在于该区域。没有输出。
  6. 列举区域中启用的服务
    firewall-cmd [ --zone=<zone> ] --list-services
  7. 启用应急模式阻断所有网络连接,以防出现紧急状况
    firewall-cmd --panic-on
  8. 禁用应急模式
    firewall-cmd --panic-off
    应急模式在 0.3.0 版本中发生了变化 在 0.3.0 之前的 FirewallD版本中, panic 选项是 –enable-panic 与 –disable-panic.
  9. 查询应急模式
    firewall-cmd --query-panic
    此命令返回应急模式的状态,没有输出。可以使用以下方式获得状态输出:
    firewall-cmd --query-panic && echo "On" || echo "Off"
    service iptables status可以查看到iptables服务的当前状态。
    但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L

启动和关闭防火墙的命令:

  • 重启后生效
    开启: chkconfig iptables on
    关闭: chkconfig iptables off
  • 即时生效,重启后失效
    开启: service iptables start
    关闭: service iptables stop

3.限制指定IP访问指定端口

例如:限制192.168.1.2可以访问mysql数据库3306端口

  1. 添加限制规则
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="3306" accept'

说明:

  • rule family="ipv4"指定了 IP 协议版本为 ipv4,也可以指定ipv6
  • source address="192.168.1.2"表示访问来源的 IP 地址,可写IP段范围:192.168.1.0/24
  • port protocol="tcp"指定了端口协议为 TCP(如果你的服务使用 UDP 协议,则改为 udp)
  • port="3306"是要开放的端口号
  • accept表示接受来自这个 IP 对这个端口的访问。可行值 reject、drop。表示直接丢弃数据,不回应客户端,直到客户端超时;reject则会返回一个拒绝的数据包
  1. 重新加载使其生效
firewall-cmd --reload
  1. 删除端口限制
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="3306" accept'

4.端口转发

  1. 要打开端口转发,则需要先执行
    firewall-cmd --zone=external --add-masquerade
    PS: 关闭则执行 firewall-cmd --zone=external --remove-masquerade

  2. 然后转发tcp1884端口至12884
    firewall-cmd --zone=external --add-forward-port=port=1883:proto=tcp:toport=12884

  3. 转发1884端口数据至另一个ip192.168.78.100的相同端口上
    firewall-cmd --zone=external --add-forward-port=port=1884:proto=tcp:toaddr=192.168.78.100

  4. 转发1884端口数据至另一ip192.168.78.100的21884端口上
    firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=21884:toaddr=192.168.78.100

  5. 删除
    只需将 --add-forward-port改为--remove-forward-port,其他照写,示例:
    firewall-cmd --zone=external --remove-forward-port=port=22:proto=tcp:toport=21884:toaddr=192.168.78.100

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值