linux中的防火墙管理(1)--firewall
Firewall
一 防火墙相关概念
二 firewall服务
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
火墙本质 kernel(内核)中的iptables(不能直接管理) --过滤数据包
firewalld是往iptables中写内容的软件 --执行内容相对较少,操作简单(偏向windows更多)
iptables 是另一个往iptables中写内容软件 --执行内容相对较多,操作难
两个管理方式只能同时开启一个
1.drop: 丢弃所有进入的包,而不给出任何响应
2.block: 拒绝所有外部发起的连接,允许内部发起的连接
3.public: 允许指定的进入连接
4.external: 同上,对伪装的进入连接,一般用于路由转发
5.dmz: 允许受限制的进入连接
6.work: 允许受信任的计算机被限制的进入连接,类似 workgroup
7.home: 同上,类似 homegroup
8.internal: 同上,范围针对所有互联网用户
9.trusted: 信任所有连接
三 安装管理
yum install firewalld firewall-config -y
图形管理火墙
图形界面:firewall-config &(加上可同时允许两个进程)
(runtime临时修改,立即生效 permanent永久更改,需要重启)
watch -n 1 firewall-cmd --list-all --监控火墙配置(在图形管理中临时更改的内容会直接显示在上面,永久更改的重启firewalld后会在其显示)
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --complete-reload ##更新规则,重启服务
firewall-cmd --get-zones ##列出支持的区域
firewall-cmd --get-active-zones ##显示当前运行的活动域
firewall-cmd --get-default-zone ##显示默认的域
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service=ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
firewall-cmd --zone=public --list-ports ##列出public域 端口
firewall-cmd --zone=public --list-all ##列出public域的所有策略
firewall-cmd --zone=public --add-service=http ##为public域开放http service
firewall-cmd --zone=internal --add-port=443/tcp ##为internal域开放443/tcp协议端口
firewall-cmd --permanent --zone=trusted --add-source=172.28.129.0/24 ##增加172.28.129.0/24网段到trusted域(信任)
firewall-cmd --permanent --zone=trusted --list-sources ##列出truste域的白名单
firewall-cmd --permanent --zone=drop --remove-source=172.28.13.0/24 ##从drop域中删除172.28.13.0/24
firewall-cmd --list-all-zones ##查看所有的域规则
firewall-cmd
--set-default-zone=xxx ##设定默认域
firewall-cmd --zone=xxx--add-masquerade ##打开伪装
firewall-cmd --zone=xxx --remove-masquerade ##关闭伪装
很多时候我们需要开放端口或开放某IP访问权限,我们需要先查看我们当前默认的zone是哪个,然后在对应的zone里面添加port和source,这样对外才会有作用。
比如我当前的默认zone是public,我需要开放80端口对外访问,则执行如下命令:firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload
我们执行的命令,结果都体现在具体的配置文件中,其实我们可以直接修改对应的配置文件即可。
以public zone为例,对应的配置文件是/etc/firewalld/zones/public.xml
###### --permanent 永久更改 ######
##配置文件永久更改 /usr/lib/firewalld/zones ##
##服务设置永久更改 /usr/lib/firewalld/services ##
##当添加或卸载时不写域则为默认域 ##
五 限制IP登陆域
firewall-cmd --add-source=172.25.254.40 --zone=trusted --让此IP默认登陆trusted
firewall-cmd --add-interface=eth1 --zone=trusted --将eth1网盘添加至trusted域(先将其从其他域卸掉)
firewall-cmd --get-active-zones --查看正在运行的域
firewall-cmd --reload --重新加载火墙策略(已连接用户不会中断)
firewall-cmd --complete-reload --中断当前连接,重新加载策略(firewall的规则被保存在/etc/firewalld目录的文件中)
#### dmz
interfaces: eth0
ROL
sources: 172.25.0.252/32
trusted
interfaces: eth1
sources: 172.25.254.40 ###此为正确显示(若不行,便重启)
测试:
设置两个不同网段的ip,分别测试http服务
1 firewall-cmd --direct --add-rules ipv4 filter INPUT 1 -s 172.25.254.41 -p tcp --dport 22 -j REJECT
(vim /mnt/filter更改也可)
2firewall-cmd --direct --add-rules ipv4 filter INPUT 1 ! -s 172.25.254.41 -p tcp --dport 22 -j REJECT
(除了172.25.254.41,都拒绝)
##行为 -j REJECT拒绝/ACCEPT允许/DROP丢弃 (需大写)##
##规则读取顺序由上到下##
七 DirectRules
通过firewall-cmd工具,可以使用--direct选项在运行时间里增加或者移除链。如果不熟悉iptables,使用直接接口非常危险,因为您可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优于应用。
参数:filter(本地数据限制):(-s源地址,-d目的地址,-p协议,-dport端口,-j行为/REJECT拒绝/ACCEPT同意/DROP丢弃)
firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT 添加规则
firewall-cmd --direct --get-all-rules 列出规则
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT 删除规则
八 RichRules
通过该地址,可以用比直接接口方式更易理解的方式建立复杂防火墙的规则。此外。还能永久保留保留设置,这种语法使用关键词值
主要参数:source源地址 destination目的地址 service服务名称 port端口 protocol协议名
地址伪装示例:
firewall-cmd --add-masquerade 开启地址伪装
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.25.254.111 masquerade’ 设定伪装的地址策略
端口转发示例:
firewall-cmd --add-forward-port=port=80:pooto=tcp:toport=8080:toaddr=172.25.53.100