linux中的防火墙管理(1)--firewall

来源:互联网 发布:windows开放ssh 端口 编辑:程序博客网 时间:2024/05/22 04:48

Firewall


一 防火墙相关概念

         所谓防火墙指的是一个软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使internet与intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
        在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。

二 firewall服务

      防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

火墙本质   kernel(内核)中的iptables(不能直接管理)      --过滤数据包
firewalld是往iptables中写内容的软件  --执行内容相对较少,操作简单(偏向windows更多)
iptables 是另一个往iptables中写内容软件     --执行内容相对较多,操作难
两个管理方式只能同时开启一个

Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
  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 --get-service --permanent         ##检查下一次重载后将激活的服务。

firewall-cmd --query-service=ftp               ##查看ftp服务是否支持,返回yes或者no


firewall-cmd --add-service=ftp                 ##临时开放ftp服务
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 --zone=internal --list-services   ##列出internal的所有service
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 --query-masquerade   ##查看 ip 地址伪装
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服务


六  让ip能访问而不能登陆(http可用而ssh不可用)
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

原创粉丝点击