iptables firewall semanage防火墙相关
程序员文章站
2022-07-14 11:04:11
...
保障系统服务的访问安全是Linux操作系统保障人员必不可少的一项工作。防火墙为网络出口与局域内网之间的一条沟,在访问控制策略实施方面起着至关重要的作用。
firewalld 防火墙是RHEL 7 中新增的服务,与先前版本中 iptables 防火墙之间存在一定区别。
下面将分别使用 iptables、firewall-cmd、firewall-config 和 TCP Wrappers等防火墙策略配置服务来完成数十个根据真实工作需求而设计的防火墙策略配置实验。在学习完这些实验之后,各位读者不仅可以熟练地过滤请求的流量,还可以基于服务程序的名称对流量进行允许和拒绝操作,确保Linux 系统的安全性万无一失。
重点:
1、防火墙主要功能都是依据策略对穿越防火墙自身的流量进行过滤。
2、防火墙策略规则是按照从上到下的顺序匹配。
防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,通过防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。
在 RHEL 7 系统中,firewalld 防火墙取代了 iptables 防火墙。
其实,iptables 与 firewalld 都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。
iptables服务会把配置好的防火墙策略交由内核层面netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。
一、iptables介绍
iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:(五链)
➢ 在进行路由选择前处理数据包(PREROUTING);
➢ 处理流入的数据包(INPUT);
➢ 处理流出的数据包(OUTPUT);
➢ 处理转发的数据包(FORWARD);
➢ 在进行路由选择后处理数据包(POSTROUTING)。
一般来说,从内网向外网发送的流量一般都是可控且良性的,因此我们使用最多的就是INPUT 规则链,该规则链可以增大黑客人员从外网入侵内网的难度。
iptables 服务的术语中 (四表)
ACCEPT(允许流量通过)、
REJECT(拒绝流量通过)、
LOG(记录日志信息)、
DROP(拒绝流量通过)。
这里需要着重讲解的是 REJECT 和 DROP 的不同点。
REJECT 拒绝动作后,流量发送方会看到端口不可达的响应:
ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Port Unreachable
From 192.168.10.10 icmp_seq=2 Destination Port Unreachable
From 192.168.10.10 icmp_seq=3 Destination Port Unreachable
From 192.168.10.10 icmp_seq=4 Destination Port Unreachable
DROP 发送方无法判断流量是被拒绝
ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
--- 192.168.10.10 ping statistics ---
iptables 中常用的参数以及作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址 IP/MASK,加叹号“!”表示除这个 IP 外 -d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如 TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
常见命令应用:
[[email protected] ~]# iptables -L 查看已有防火墙规则链
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
[[email protected] ~]# iptables -F 清空已有防火墙规则链
[[email protected] ~]# iptables -P INPUT DROP 规则链的默认策略设置为拒绝
[[email protected] ~]# iptables -I INPUT -p tcp --dport 5000 -j ACCEPT 在INPUT规则链中最前插入允许目的端口5000的流量通过
[[email protected] ~]# iptables -I INPUT -p icmp -j ACCEPT 允许ping流量通过INPUT规则链
service iptables save 保存iptables规则链
二、firewalld介绍
--get-default-zone 查询默认的区域名称
--set-default-zone=<区域名称> 设置默认的区域,使其永生效
--get-zones 显示可用的区域
--get-services 显示预先定义的服务
--get-active-zones 显示当前正在使用的区域与网卡名称
--add-source= 将源自此 IP 或子网的流量导向指定的区域
--remove-source= 不再将源自此 IP 或子网的流量导向某个指定区域
--add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称> 将某个网卡与区域进行关联
--list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名> 设置默认区域允许该服务的流量
--add-port=<端口号/协议> 设置默认区域允许该端口的流量
--remove-service=<服务名> 设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
--reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on 开启应急状况模式
--panic-off 关闭应急状况模式
firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)
它有2中模式:firewall-cmd firewall-config
firewalld 支持动态更新技术并加入了区域(zone)默认为 public)的概念。
firewall防火墙常见命令:
[[email protected] ~]# firewall-cmd --get-default zone 查看当前firewall服务使用的默认区域
[[email protected] ~]# firewall-cmd --get-zone-of-interface=ens32 网卡使用的区域
public
[[email protected] ~]# firewall-cmd --zone=public --add-service=ssh --permanent 永久把ssh服务加入public区域
Warning: ALREADY_ENABLED: ssh
success
[[email protected] ~]# firewall-cmd --reload 重启firewall 服务后生效
三、Selinux
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
1,并非所有的 Linux distributions 都支持SELinux的
目前SELinux支持三种模式,分别如下:
• enforcing:强制模式,代表SELinux运作中,且已经正确的开始限制 domain/type 了;
• permissive:宽容模式:代表SELinux运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为SELinux的 debug 之用;
•disabled:关闭,SELinux并没有实际运作。
2,查看SELinux的模式
# getenforce
Enforcing <==就显示出目前的模式为 Enforcing
3,查看 SELinux 的政策 (Policy)?
[[email protected] ~]# sestatus
SELinux status: enabled <==是否启动 SELinux
SELinuxfs mount: /selinux <==SELinux 的相关文件资料挂载点
Current mode: enforcing <==目前的模式
Mode from config file: enforcing <==设定档指定的模式
Policy version: 21
Policy from config file: targeted <==目前的政策为何?
4,通过配置文件调整SELinux的参数
[[email protected] ~]# vi /etc/selinux/config
SELINUX=enforcing <==调整enforcing|disabled|permissive
SELINUXTYPE=targeted <==目前仅有 targeted 与 strict
5,通过命令更改SELinux模式
[[email protected] ~]# setenforce [0|1]
选项与参数:
0 :转成 permissive 宽容模式;
1 :转成 Enforcing 强制模式
semanage命令用于管理SELinux的策略,格式为“semanage [选项] [文件]”。常用参数及作用: -l 查询、-a 添加、-m 修改、-d 删除
semanage port -m -t ssh_port_t -p tcp 5000
semanage port -l | grep ssh
上一篇: Java_IO异常的处理
下一篇: iptables设置黑白名单