centos7默认的防火墙是firewall而不是iptables,新的firewall更容易操作,由博主javacoder.cn整理,转载注明出处。
持久化的配置信息存放在如下两个目录
/usr/lib/firewalld/ #默认,
/etc/firewalld/ #系统级,管理员可以定制,改动的时候可以目录/usr/lib/firewalld下的模板拷一份到/etc/firewalld/目录
#开启,停用,禁用,查看firewall的状态如下
systemctl start firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
firewall将防火墙的信任基本抽象为zone,如下:
drop,block,public,external,dmz,work,home,internal,trusted
从左到右越来越信任。
默认为public,只信任指定的连接。
firewall提供图形化firewall-config和命令行firewall-cmd操作工具,本文以命令行工具为例介绍
firewall-cmd的很多操作即可以针对当前运行有效,也可以添加--permanent选项持久化,对于持久化的设置,不会立即生效,可以对同一个命令不带--permanent选项执行一次,或者firewall-cmd --reload
端口操作
#开启端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
#禁用端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
#查看开启的端口
firewall-cmd --zone=public --list-ports
masquerade(对应iptables的NAT)配置
#查询masquerade是否对某个zone启用
firewall-cmd --zone=public --query-masquerade
#启用masquerade或者停止
firewall-cmd [--permanent] --zone=public --add-masquerade
firewall-cmd [--permanent] --zone=public --remove-masquerade
#将tcp22端口的数据forward到3753
firewall-cmd [--permanent] --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
firewall-cmd [--permanent] --zone=public --remove-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
服务操作
firewall即可以直接操作端口,也可以将服务定义在service-name.xml中,然后操作服务
服务定义目录:/usr/lib/firewalld/services或者/etc/firewalld/services/
#添加服务到zone
firewall-cmd --permanent --zone=public --add-service=smtp
#从zone删除服务
firewall-cmd --permanent --zone=public --remove-service=smtp
其他命令
#列出系统中可用的服务
firewall-cmd --get-services
#丢弃所有的incoming和outgoing包,只能是运行时有效
firewall-cmd --panic-on
firewall-cmd --panic-off
#reload配置
firewall-cmd --reload|--complete-reload
#将接口添加到zone
firewall-cmd --zone=public --add-interface=eno16777736
Posted in: Linux
Comments are closed.