Blog26@linux网络端口安全 上_firewalld

网络端口安全


PS:实验前首先在同一虚拟机上设定两块处于不同网段的网卡

前述:

保障数据的安全性是继保障数据的可用性之后最为重要的一项工作。防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用。

本节将介绍使用iptables、firewall-cmd、firewall-config和TCP Wrappers等防火墙策略配置服务。通过这些服务我们不仅可以过滤请求的流量,还可以基于服务程序的名称对流量进行允许和拒绝操作,确保Linux系统的安全性万无一失。




一、火墙概述


1. 关于火墙的作用

火墙是介于公网与企业内网之间的保护屏障,如下图所示。

防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了




2.  firewalld与iptables


1)区别

iptables:

> 把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理

> iptables service 在 /etc/sysconfig/iptables 中储存配置

> 包含四表五链,配置较为麻烦,学习难度大

> 数据包在iptables中需要经过的链(chain):



firewalld:

> 把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理

> 拥有自己的图形化管理工具:firewall-config

> 引入域的概念,进行区域管理。通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流

> service是firewalld中另外一个非常重要的概念。

从端口号改为服务名主要有两个好处:

首先是使用服务名配置的语义清晰,不容易出错;

其次在对某个服务的端口号进行修改的时候只需要修改相应的 service文件就可以了,而不需要再修改防火墙方案——zone

> firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置/etc/firewalld/ 和/usr/lib/firewalld/。

使用时的规则: 当需要一个文件时firewalld会首先到第一个目录中去查找,如果可以找到,那么就直接使用,否则会继续到第二个目录中查找。

firewalld的这种配置文件结构的主要作用是这样的:在第二个目录中存放的是firewalld给提供的通用配置文件,如果我们想修改配置, 那么可以copy一份到第一个目录中,然后再进行修改。这么做有两个好处:首先我们日后可以非常清晰地看到都有哪些文件是我们自己创建或者修改过的,其 次,如果想恢复firewalld给提供的默认配置,只需要将自己在第一个目录中的配置文件删除即可,非常简单,而不需要像其他很多软件那样在修改之前还 得先备份一下,而且时间长了还有可能忘掉之前备份的是什么版本。


2)相同

> firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核,只不过firewalld和iptables的结构以及使用方法不一样罢了.

> 都是从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)



3) firewalld跟iptables比起来至少有两大好处:

1)firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

2)firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。



firewalld和iptables service 之间最本质的不同是:
• iptables service 在 /etc/sysconfig/iptables 中储存配置,而firewalld将配置储存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里.
• 使用 iptables service每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。







二、管理防火墙


安装防火墙软件:
# yum install -y firewalld firewall-config
启动和禁用防火墙:
# systemctl start firewalld ; systemctl enable firewalld
# systemctl disable firewalld ; systemctl stop firewalld
使用iptables服务:
# yum install -y iptables-services
# systemctl start iptables ; systemctl start ip6tables
# systemctl enable iptables ; systemctl enable ip6tables

注:推荐使用firewalld服务



三、使用命令行接口配置防火墙

查看firewalld的状态:
# firewall-cmd --state
查看当前活动的区域,并附带一个目前分配给它们的接口列表:
# firewall-cmd --get-active-zones
查看默认区域:
# firewall-cmd --get-default-zone
查看所有可用区域:
# firewall-cmd --get-zones
列出指定域的所有设置:
# firewall-cmd --zone=public --list-all
列出所有预设服务:
# firewall-cmd --get-services
(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml)
列出所有区域的设置:
# firewall-cmd --list-all-zones
设置默认区域:
# firewall-cmd --set-default-zone=dmz
设置网络地址到指定的区域:
# firewall-cmd --permanent --zone=internal --add-source=172.25.0.0/24
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)
删除指定区域中的网路地址:
# firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24
添加、改变、删除网络接口:
# firewall-cmd --permanent --zone=internal --add-interface=eth0
# firewall-cmd --permanent --zone=internal --change-interface=eth0
# firewall-cmd --permanent --zone=internal --remove-interface=eth0
添加、删除服务:
# firewall-cmd --permanent --zone=public --add-service=smtp
# firewall-cmd --permanent --zone=public --remove-service=smtp
列出、添加、删除端口:
# firewall-cmd --zone=public --list-ports
# firewall-cmd --permanent --zone=public --add-port=8080/tcp
# firewall-cmd --permanent --zone=public --remove-port=8080/tcp
重载防火墙:
# firewall-cmd --reload
(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)

注:firewalld的规则被保存在/etc/firewalld目录下的文件中,你也可以直接编辑这些文件达到配置防火墙的目的。/usr/lib/firewalld目录下的内容是不可以被编辑的,但可以用做默认模板。



四、管理防火墙规则


**Direct Rules**


通过 firewall-cmd 工具 , 可以使用 --direct 选项在运行
时间里增加或者移除链。如果不熟悉 iptables , 使用直接接口
非常危险 , 因为您可能无意间导致防火墙被入侵。直接端口模式
适用于服务或者程序 , 以便在运行时间内增加特定的防火墙规则。
直接端口模式添加的规则优先应用

添加规则:
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.18 -p tcp --dport 80 -j REJECT
(表示不允许172.25.254.18连接http服务)
删除规则:
# firewall-cmd --direct --remove-rule ipv4 filter INPUT -s 172.25.254.18 -p tcp --dport 80 -j REJECT
列出规则:
# firewall-cmd --direct --get-all-rules
除了250之外其他的都不可以ssh连接本机:
#firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.250 -p tcp --dport 21 -j REJECT    



五、端口伪装和转发

伪装:

# firewall-cmd --permanent --zone=< ZONE > --add-masquerade
# firewall-cmd --permanent --zone=< ZONE > --add-rich rule='rule family=ipv4 source addres=172.25.0.0/24 masquerade'
注:在企业7.0系统中,第一步做好后只需要在测试主机中做好网关即可

端口转发:
# firewall-cmd --permanent --zone=< ZONE > --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.18
(相当于DNAT,在路由前进行)
# firewall-cmd --permanent --zone=< ZONE > --add-rich-rule='rule family=ipv4 source address=172.25.18.118 forward-port port=22 protocol=tcp to-port=22'
(相当于SNAT,在路由后进行)



六、管理 SELinux 端口标签


列出端口标签 :
# semanage port -l
添加端口标签 :
# semanage port -a -t http_port_t -p tcp 82
删除端口标签 :
# semanage port -d -t http_port_t -p tcp 82



参考文献
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值