centos7 firewalld平常使用

若生产中使用有docker,建议不要使用firewalld,改用iptables,用firewalld坑不少,暂时还未找到解决办法,在此作下记录:docker

说明:若加参数permanent为永久添加即添加至zone配置中,reload生效,重启firewalld也会生效,若不加 --permanent,重启后再也不生效)服务器

docker和firewalld共存时,使用命令添加开放端口规则,且加 --permanent参数网络

firewall-cmd --add-port=80/tcp  --permanent 添加规则后,80端口被外部正常访问,ssh

而后使用firewall-cmd --remove-port=80/tcp  --permanent 永久移除规则,按正常状况80端口将不能被外部网络访问,tcp

但实际确依然能被外部访问,并且此后防火墙像是被关闭了同样,全部服务端口都能被外部访问到。但查看配置中已经没有开放80端口的测试

规则,firewalld也是runing状态,此后从新开一台测试机,不安装docker进行测试,firewalld再也不出现以上问题。spa

 

一、启动firewalld3d

systemctl start firewalld调试

systemctl enable firewalld #加入到开机启动blog

二、查看状态

systemctl status firewalld

firewall-cmd --state

三、关闭firewalld

systemctl stop firewalld

 

service说明:

在 /usr/lib/firewalld/services/ 目录中,还保存了另一类配置文件,每一个文件对应一项具体的网络服务,如 ssh 服务等.
与之对应的配置文件中记录了各项服务所使用的 tcp/udp 端口,在最新版本的 firewalld 中默认已经定义了 70+ 种服务供咱们使用.
当默认提供的服务不够用或者须要自定义某项服务的端口时,咱们须要将 service 配置文件放置在 /etc/firewalld/services/ 目录中.
service 配置的好处显而易见:
第一,经过服务名字来管理规则更加人性化,
第二,经过服务来组织端口分组的模式更加高效,若是一个服务使用了若干个网络端口,则服务的配置文件就至关于提供了到这些端口的规则管理的批量操做快捷方式。

每加载一项 service 配置就意味着开放了对应的端口访问

四、查看系统自带默认有那些service能够进行配置

firewall-cmd --get-services

五、查看当前已经开放的service和port

firewall-cmd --list-services

firewall-cmd --zone=public --list-services  # 指定区域进行查看

firewall-cmd --list-ports

firewall-cmd --zone=public --list-ports  # 指定区域进行查看

六、查看全部已开放的service和port等

firewall-cmd --list-all  # 查看默认区域的

firewall-cmd --zone=public  --list-all  # 只查看指定pubilc区域的

firewall-cmd --list-all-zones  # 查看全部区域的

 

七、查询单个服务的启用状态[返回值yes/no]

firewall-cmd --query-service http

 

八、动态添加一条防火墙规则至默认区域(public),好比开放服务或端口(此方法能够当即生效,但重启firewalld服务或reload后将再也不生效,由于没有保存在配置文件中)

firewall-cmd --add-service=ftp

firewall-cmd --add-port=2326/tcp

firewall-cmd --zone=public --add-port=4990-4999/udp   #添加4990-4999 udp端口 ,并指定区域

九、动态添加规则后若想保存至zone配置中须要添加参数 --permanent(reload才生效)

firewall-cmd --add-service=ftp --permanent

firewall-cmd --add-port=12222/tcp --permanent

firewall-cmd --zone=public --add-port=4990-4999/udp  --permanent   #添加4990-4999 udp端口 ,并指定区域

 firewall-cmd --reload #配置生效

十、动态移除规则,但须要重载防火墙才可生效

firewall-cmd --remove-service=http #移除直接生效

 

 firewall-cmd --remove-port=2327/tcp --permanent #永久移除、删除,需reload才生效

 firewall-cmd --reload

 

 

十一、重载防火墙规则

一般手动修改zone配置进行规则添加后,须要进行重载生效,以 root 身份输入如下命令,从新加载防火墙,并不中断用户链接,即不丢失状态信息

 firewall-cmd --reload

注意:一般在防火墙出现严重问题时,这个命令才会被使用。好比,防火墙规则是正确的,但却出现状态信息问题和没法创建链接。

firewall-cmd --complete-reload

 

十二、‘将同一台服务器上80端口的流量转发至8080

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 

1三、若是要将端口转发到另一台服务器上

  1)在须要的区域中激活 masquerade

firewall-cmd --zone=public --add-masquerade 

  2)添加转发规则

例子中是将本地的80端口的流量转发到IP地址为:10.0.10.15 的远程服务器上的8080端口。

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.0.10.15 

1四、防火墙假装IP

firewall-cmd --query-masquerade # 检查是否容许假装IP

firewall-cmd --add-masquerade # 容许防火墙假装IP

firewall-cmd --remove-masquerade# 禁止防火墙假装IP

 

危险命令:[当即生效]

若是是远程的机器执行上面的规则会马上断开网络链接,必须紧记不能随便执行。若是你只是虚拟机或者物理机器登录就能够执行来调试。

拒绝全部包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

 

***************************************************************************************************************

拒绝访问操做:

#添加禁止响应ping

firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'  

#查看是否有此规则[等号后面跟详细的名称]

firewall-cmd --query-rich-rule='rule protocol value='icmp' drop' 

#删除方法

firewall-cmd --remove-rich-rule='rule protocol value=icmp drop' 

#添加拒绝某个IP访问ssh端口

 firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject" 

或直接丢弃

firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject" 

或对端口进行操做

 

firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.10.1 port port=22 protocol=tcp reject' 

说明:
rule :规则
family:ipv4  指定ipv4的地址
source address=10.0.10.1  要拒绝的IP,能够是IP或者是IP段
service name='ssh'指定的是ssh服务 
drop :就是此条规则的执行方法是丢弃
若是要放行直接修改后面的reject为accept便可。
 
#容许来自此IP容许经过防火墙

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" accept' 

#容许一个IP(10.0.10.1)仅能经过指定端口(8080-8090)访问到目标(10.0.10.13):

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="8080-8090" protocol="tcp" accept'

#若是要移除规则相对麻烦些,要输入后面详细的记录:

firewall-cmd --remove-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="80" protocol="tcp" accept' 

最后说明:

若是规则中没有加入参数:--permanent都是即时生效的,并且reload或者重启服务后都不会再有记录。
而加入了参数:--permanent后须要手动reload或者重启服务才生效。 同时能够加入--zone 应用于于哪一个区域的参数。
相关文章
相关标签/搜索