Linux——防火墙、SELinux规则

防火墙的功能:简单地释放或阻止某些服务和端口

[En]

The function of firewall: simply to release or block certain services and ports

1、防火墙的简单操作

查看防火墙状态
systemctl status firewalld

开启防火墙
systemctl start firewalld

关闭防火墙
systemctl stop firewalld

设置防火墙开机自启
systemctl enable firewalld

设置防火墙取消开机自启
systemctl disable firewalld

2、firewall的直接规则

注意:要在防火墙开启状态下才可设置

1、查看防火墙放行的服务
firewall-cmd --list-all

2、在防火墙中放行某服务,并设为永久生效
firewall-cmd --permanent --add-service=&协议名

3、在防火墙中放行某端口,并设为永久生效
firewall-cmd --permanent --add-port=8088/tcp

4、刷新(重新加载)防火墙配置
firewall-cmd --reload

网络服务和协议名称之间的对应关系:

[En]

Correspondence between network services and protocol names:

服务名 协议名 vsftpd ftp NFS nfs SAMBA windows:cifs linux:smb、nmb APACHE http/https

3、firewall的富规则

注意:要在防火墙开启状态下才可设置

1、添加一条富规则(以172.25.1.0/24网段,ftp服务为例)
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.1.0/24 service name=ftp accept'

2、删除一条富规则
firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address=172.25.1.0/24 service name=ftp accept'

3、笼统的设置一个攻击域
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.1.0/24 reject'

4、为某个具体的服务设置一个攻击域
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.1.0/24 service name=ssh reject'

5、添加端口到防火墙中:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.1.0/24 port port=80 protocol=tcp accept'

6、添加端口转发:(要先添加端口才能端口转发)
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.1.0/24 forward-port port=8080 protocol=tcp to-port=80'

tcp:有去有回,类似于打电话
udp:有去无回,类似于发传真

SElinux也是Linux操作系统的一种安全访问规则。用于确定哪个进程可以访问哪些文件、目录和端口的一组安全规则。保护的对象是 服务(进程)、 服务对应的文件(目录)、 服务对应的端口

SElinux可以被看作是与标准权限系统并行的权限系统,如果selinux开启,以root身份运行进程,访问文件不光要受 用户对文件访问权限的限制,还要受 进程对文件selinux上下文类型的限制,否则,就算是root用户运行的进程,也不一定能访问某个文件。

1、selinux的三种模式(状态)

名称 模式 作用 enforcing 强制模式 拒绝非法访问并录入日志 permissive 许可模式(警告模式) 暂时允许非法访问并录入日志 disabled 禁用模式 允许非法访问且不录入日志

如何切换selinux的状态:

#获取selinux状态
[root@localhost ~]# getenforce

临时切换:
[root@localhost ~]# setenforce 0    #临时关闭selinux策略 enforcing  -> permissive
[root@localhost ~]# setenforce 1    #临时开启selinux策略 permissive -> enforcing

永久切换:
[root@localhost ~]# vim /etc/selinux/config
SELINUX=enforcing/permissive/disabled
[root@localhost ~]# reboot

2、SELinux的上下文

在linux系统里面,每个文件、进程、端口都具有SELinux上下文,它是一种安全策略,用来判断某个进程能否访问文件、目录或端口的工具。

[root@localhost /]# ll -Z
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       bin -> usr/bin
dr-xr-xr-x. root root system_u:object_r:boot_t:s0      boot
drwxr-xr-x. root root system_u:object_r:device_t:s0    dev
drwxr-xr-x. root root system_u:object_r:etc_t:s0       etc
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 home
...

第四列(用户:角色:类型:敏感度)

[En]

Fourth column (user: role: type: sensitivity)

用户 -> 系统用户(system_u);root及普通用户组成的未指定用户(unconfined_u)
角色 -> 系统角色(system_r);未指定角色(unconfined_r);对象角色(object_r)
类型 -> 以_t结尾,每个服务它的三个方面的类型要一一对应,即 服务对应的文件和端口要与服务本身的SELinux上下文类型一致
敏感度 -> s0,指的是安全等级,有0、1、2三种,数值越大,灵敏度越高

查看文件的上下文
方法一:ll -Z filename
[root@localhost etc]# ll -Z samba/

方法二:semanage fcontext -l | grep filename
filename要写绝对路径,且不一定能查看所有文件
[root@localhost etc]# semanage fcontext -l | grep /etc/ssh

查看进程的上下文
ps -auxZ | grep 进程
[root@localhost ~]# ps -auxZ | grep sshd

查看所有端口上下文
semamage  port -l | grep 端口号
[root@localhost ~]# semanage port -l | grep 22

查看已经开放的端口上下文
[root@localhost ~]# netstat -pantZ

修改文件的上下文类型

临时修改:
chcon -t 上下文类型 filename
将selinux设置成disabled后reboot,然后再设置成enforcing后reboot,修改会失效,将还原成原始默认类型  -> 不推荐使用
[root@localhost ~]# chcon -t httpd_sys_content_t /opt/testfile
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# reboot
[root@localhost ~]# sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
[root@localhost ~]# reboot
[root@localhost ~]# ll -dZ /opt/testfile

永久修改:
semanage fcontext -a -t 上下文类型 ‘/filename(/.*)?’    #注意:这里的filename要写绝对路径
restorecon -RFv /filename           #强制递归刷新上下文类型并显示刷新过程
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t '/opt/test(/.*)?'
[root@localhost ~]# restorecon -RFv /opt/test/

修改端口的上下文类型(添加selinux上下文类型)

semanage port -a -t 端口上下文类型 -p tcp/udp  端口号
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 22022
[root@localhost ~]# semanage port -l | grep ssh

3、selinux布尔值

当selinux开启时,系统默认会设置很多服务功能的开关,而且默认都是关闭的,sebool就是那个开关

getsebool -a(| grep 布尔值) #查看
setsebool bool名 on/off        #设置开启或关闭
semanage boolean -l(| grep 布尔值)  #查看布尔值是否永久开启(括号中右边那个值),并显示该布尔值状态的简短描述

注意:
1、文件会默认继承父文件夹的selinux类型;
2、文件被cp到新的文件夹下,会自动继承新文件夹的selinux上下文类型,但mv不会这样,仍会保留原上下文类型;
3、如果修改了某服务的配置文件位置,则必须重新修改该文件的selinux上下文类型,以重新匹配服务,否则服务无法访问该配置文件。

声明:未经许可,不得转载

Original: https://www.cnblogs.com/wzgwzg/p/15602936.html
Author: 王智刚
Title: Linux——防火墙、SELinux规则

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524319/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux下IPC之共享内存的使用方法

    基本参考 《Unix环境高级编程》 第14.9节共享内存来学习。 需要说明的 讲shmget(key,size, flag)函数时,书上大概意识是说, 想访问已有的shm时,key…

    Linux 2023年6月7日
    071
  • Redis

    Redis原创笑笑师弟 最后发布于2018-12-21 14:17:59 阅读数 1780 收藏展开目录 redis简介 redis功能 redis学习步骤 windows系统下的…

    Linux 2023年5月28日
    091
  • Java动态脚本Groovy读取配置文件

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 核心涉及: @Value:作用是通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值…

    Linux 2023年6月14日
    072
  • Java实现哈希表

    2.1、哈希冲突 冲突位置,把数据构建为链表结构。 装载因子=哈希表中的元素个数 / (散列表)哈希表的长度 装载因子越大,说明链表越长,性能就越低,那么哈希表就需要扩容,把数据迁…

    Linux 2023年6月14日
    076
  • 学习颜色搭配

    html;gutter:true; Color</p> <pre><code> .font-style { font-size: 50px; w…

    Linux 2023年6月13日
    0117
  • PyQt5的使用

    PyQt5 目录 Qt Designer PyQt5基本窗口控件(QMainWindow、Qwidget、Qlabel、QLineEdit、菜单、工具栏等) PyQt5高级组件(Q…

    Linux 2023年6月14日
    093
  • Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

    一、Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通过http请求,向搜索引擎服务器提交一定格式…

    Linux 2023年6月13日
    082
  • cube.js 即将使用cube store 替换redis

    随着发着cube store 的能力已经很强大了,官方目前计划使用cube store 替换redis cube.js 内存查询参考 官方对于redis 的说明 官方觉得redis…

    Linux 2023年5月28日
    0114
  • Java 集合框架

    一、 Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据。 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元…

    Linux 2023年6月7日
    073
  • java内存调优总结

    ···bashJVM 调优,是个很简单也很复杂的话题,由于经常遇到这类问题,在这里总结一下。 先从解决bug开始,当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会G…

    Linux 2023年6月14日
    079
  • linux三剑客之awk

    linux三剑客之awk 适用范围:awk主要是用来格式化文本。 语法格式:awk [参数] [处理规则] [操作对象] 参数 作用 -F 指定文本分隔符(不写默认是以空格作为分隔…

    Linux 2023年5月27日
    096
  • Docker部署mysql 5.7

    在CentOS或者Linux创建部署目录,用于存放容器的配置和MySQL数据;目的是当重装或者升级容器时,配置文件和数据不会丢失。执行以下命令: a、创建目录: mkdir -p …

    Linux 2023年6月7日
    069
  • docker安装minio

    拉取镜像 docker pull minio/minio 运行容器 docker run–net=”host”–name minio…

    Linux 2023年6月7日
    071
  • JuiceFS v1.0 beta3 发布,支持 etcd、Amazon MemoryDB、Redis Cluster

    JuiceFS v1.0 beta3 在元数据引擎方面继续增强,新增 etcd 支持小于 200 万文件的使用场景,相比 Redis 可以提供更好的可用性和安全性。同时支持了 Am…

    Linux 2023年6月14日
    097
  • 2-第一个Django程序

    第一个Django程序 从本章节开始将通过实现一个投票应用程序,来让用户逐步的了解Django。这个程序由两步分组成: 公共站点,允许用户访问进行投票,和查看投票。 站点管理,允许…

    Linux 2023年6月7日
    098
  • vue过滤器和生命周期——day02

    vue之过滤器和生命周期——day02 过滤器: 概念:Vue.js 允许你自定义过滤器, 可被用作一些常见的文本格式化。过滤器可以用在两个地方: mustache 插值和 v-b…

    Linux 2023年6月7日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球