SELinux如何管理端口配置文件? (selinux 端口配置文件)

SELinux (Security-Enhanced Linux)是一种操作系统级别的安全性增强工具,它基于Mandatory Access Control (MAC)机制,使用了一种名为”安全策略”的配置文件,并提供了一种可靠的安全机制来保护计算机系统和网络。在安全策略中,SELinux通过针对每个进程和进程间通信鉴别和限制其对系统资源的访问来保证系统的安全。本文将着重介绍SELinux是如何管理端口配置文件的。

一、什么是SELinux端口配置文件?

SELinux控制访问资源的方式是通过其规则和策略来限制和防止特定进程和用户对系统资源的访问。其中,端口也是一种系统资源。 Linux系统中,进程或服务通过绑定或监听一个特定的端口号(也称为套接字),来等待来自其他进程或网络请求的传入数据。SELinux能够通过端口的MAC策略设置来控制这些端口的访问。

SELinux使用的端口配置文件,是一个包含了规则和策略的文件,它被称为”SELinux端口策略配置文件”。该文件通常存放在/etc/selinux目录下。SELinux端口策略配置文件中定义了目标机器上可以使用的端口号及他们的访问权限,并给用户提供一些可配置的选项。

二、SELinux端口配置文件中的端口号和标签

SELinux端口配置文件的主要部分是端口标签。这些端口标签用于定义开放和阻止访问的端口号。所有的端口号都必须在SELinux端口策略配置文件中标记为SELinux标签才能进行访问。

端口标签分为两个部分:端口类型和端口号。 端口类型是可选的,用于定义端口类型的访问策略。而端口号是必须的,它是该端口的标识符。

常见的端口类型有:

 types port_type:用于指定端口类型

 types ping_type:用于指定ICMP ping访问请求

 types http_port_t:用于指定HTTP协议端口

 types ftp_port_t:用于指定FTP协议端口

例如,定义ssh协议的访问策略为开放时,端口配置文件的内容如下:

“`

portcon ssh_port_t udp 22

portcon ssh_port_t tcp 22

“`

其中,“ssh_port_t”是端口类型,“22”是端口号。 这段代码定义了端口22通过ssh协议进行访问和端口类型ssh_port_t标记。

三、SELinux端口配置文件管理

SELinux端口策略配置文件既可以通过命令来自动化创建和管理,也可以手动配置和编辑。

1、手动编辑SELinux端口配置文件

手动编辑SELinux端口配置文件时,需要创建或更新文件/etc/selinux/port_contexts文件或/etc/selinux/semanage.conf文件。修改完成后,需要执行如下命令更新SELinux策略缓存:

“`

# restorecon /etc/selinux/port_contexts /etc/selinux/semanage.conf

“`

2、自动化创建和管理SELinux端口配置文件

Linux系统提供了几个命令来自动化管理SELinux端口配置文件。 sysctl, semanage和audit2allow是最常用的工具。其中,semanage允许用户访问其中的某些工具。下面我们详细介绍这些命令的用法。

1、用sysctl命令创建和管理SELinux端口配置文件

sysctl是一个允许用户查询和修改内核选项的命令,也可以用来管理SELinux端口策略配置文件。它的使用方法如下:

“`

# sysctl net.ipv4.tcp_keepalive_time=1800

“`

这个命令将SELinux使用的tcp_keepalive_time选项设置为1800秒。这使得SELinux策略文件允许访问TCP keepalive服务。

2、用semanage命令创建和管理SELinux端口策略配置文件

semanage允许用户管理SELinux端口策略文件。它提供了管理SELinux端口策略配置文件的各种命令。下面是semanage的典型用法:

(1) 获取SELinux端口配置文件信息

“`

# semanage port -l

“`

运行这个命令将打印出所有已配置的SELinux端口策略文件及其详细信息。

(2) 更新端口策略配置文件添加和删除端口标签

“`

# semanage port -a -t http_port_t -p tcp 8080

“`

这个命令会添加一种新的端口类型http_port_t,用于tcp协议的端口号8080。同样,删除端口标签的命令也很简单:

“`

# semanage port -d -t ssh_port_t -p tcp 22

“`

这个命令将从selinux端口列表中删除tcp的22端口号。

3、用audit2allow命令创建和管理SELinux端口策略配置文件

audit2allow是一个用于管理SELinux策略的工具。它会检查SELinux检查日志并根据日志生成一组策略文件。 该命令的基本用法如下所示:

“`

# tl -f /var/log/audit/audit.log | audit2allow -M name

“`

这个命令将根据/var/log/audit/audit.log文件生成SELinux策略文件,此处name是策略文件的名称。

四、

本文介绍了SELinux端口配置文件的相关内容,包括配置文件的基本的概述,端口类型和端口号的使用、手动编辑和自动化创建和管理SELinux端口策略配置文件等多方面知识。希望本文能够帮助您理解如何使用SELinux提高计算机系统和网络的安全性。

相关问题拓展阅读:

mysql修改端口后启动失败

mysql 修衡羡改端口后启动失败誉拦凳

查看日志庆旅文件/var/log/mysqld.log,发现错误提示:Can’t start server: Bind on TCP/IP port: Permission denied

解决方法:

关闭SELINUX,修改selinux配置文件

 vi /etc/selinux/config

SELINUX=disabled

然后重启服务。

或者使用命令setenforce 0 临时关闭selinux ,不用重启服务器;

如何在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件

让你看的不是LO口的IP 是eth0或者eth1的IP 那个才是网卡IP

selinux可以通过getenforce查看 看值是什么 如果说山迅是permissive或模唯裤者disabled就没事 不是的话想临时改动的话 输入旦简setenforce 0即可

在虚拟机上的Linux系统配置FTP服务,跟Windows建衡仔立连接传游拦纳输文件的具体操作步骤如下:

1、在电脑上下载并安装好小型FTP服务器(Quick Easy FTP Server) 软件,打开进行设置用户名,用于远程登录。

2、设置密码,再输一次确认密码。

3、设置想共享的文件夹。

4、神没设置各项权限,包括下载上传权限、下载上传速度限制等。

5、全部设置完毕后,点击“完成”。

6、完成之后,可以在软件里进行各项服务器配置,并且点左上角绿色按钮可以启动服务器,启动后,绿色按钮变暗,红色按钮变亮。

一. FTP 说明

linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp)。 我们这里也是简单的说明下vsftp的配置。

vsftp提供3种远程的登录方式:

(1)匿名登录方式

就是不需要用户名,密码。就能登录到服务器电脑里面

(2)本地用户方式

需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

(3)虚拟用户方式

同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有祥改的(没有该用户帐号)

二. Vsftp的安装配置

2.1 安装

vsftp 的安装包,可以在安装里找到。 用yum 安装过程也很简单。

安装命令:yum install vsftpd

2.2. 相关命令

2.2.1 启动与关闭

# service vsftpd start

Starting vsftpd for vsftpd:

# service vsftpd stop

Shutting down vsftpd:

# service vsftpd restart

Shutting down vsftpd:

Starting vsftpd for vsftpd:

# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:

# /etc/init.d/vsftpd stop

Shutting down vsftpd:

# /etc/init.d/vsftpd restart

Shutting down vsftpd:

Starting vsftpd for vsftpd:

# /etc/init.d/vsftpd status

vsftpd (pid 3931) is running…

#

2.2.2. 其他命令

–查看裤宴旁vsftpd 启动状态

# chkconfig –list vsftpd

vsftpd:off 1:off 2:off 3:off 4:off 5:off 6:off

# chkconfig vsftpd on

# chkconfig –list vsftpd

vsftpd:off 1:off 2:on 3:on 4:on 5:on 6:off

这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的胡橡运行级别。

我们也可以加level 选项来指定:

# chkconfig –level 0 vsftpd on

# chkconfig –list vsftpd

vsftpd:on 1:off 2:on 3:on 4:on 5:on 6:off

我们看到0已经设置为on了。

我们可以使用man chkconfig 来查看帮助:

–level levels

Specifies the run levels an operation should pertain to. It is given as a string of numbers from 0 to 7. For example, –level 35 specifies runlevels and 5.

传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:

(1)0级是完全关闭系统的级别

(2)1级或者S级代表单用户模式

(3)2-5 级 是多用户级别

(4)6级 是 重新引导的级别

(1)查看防火墙

我一般都是把系统的防火墙关闭了。 因为开了会有很多限制。

# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

num target prot opt source destination

1 MASQUERADE all.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

Table: filter

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT udp.0.0.0/.0.0.0/udp dpt:53

2 ACCEPT tcp.0.0.0/.0.0.0/tcp dpt:53

3 ACCEPT udp.0.0.0/.0.0.0/udp dpt:67

4 ACCEPT tcp.0.0.0/.0.0.0/tcp dpt:67

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 ACCEPT all.0.0.0/92.168.122.0/24 state RELATED,ESTABLISHED

2 ACCEPT all.168.122.0/.0.0.0/

3 ACCEPT all.0.0.0/.0.0.0/

4 REJECT all.0.0.0/.0.0.0/reject-with icmp-port-unreachable

5 REJECT all.0.0.0/.0.0.0/reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

You have new mail in /var/spool/mail/root

–添加开放21号端口:

# /in/iptables -I INPUT -p tcp –dport 21 -j ACCEPT

# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

num target prot opt source destination

1 MASQUERADE all.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

Table: filter

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT tcp.0.0.0/.0.0.0/tcp dpt:21

2 ACCEPT udp.0.0.0/.0.0.0/udp dpt:53

3 ACCEPT tcp.0.0.0/.0.0.0/tcp dpt:53

4 ACCEPT udp.0.0.0/.0.0.0/udp dpt:67

5 ACCEPT tcp.0.0.0/.0.0.0/tcp dpt:67

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 ACCEPT all.0.0.0/92.168.122.0/24 state RELATED,ESTABLISHED

2 ACCEPT all.168.122.0/.0.0.0/

3 ACCEPT all.0.0.0/.0.0.0/

4 REJECT all.0.0.0/.0.0.0/reject-with icmp-port-unreachable

5 REJECT all.0.0.0/.0.0.0/reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

–保存配置

# /etc/rc.d/init.d/iptables save

Saving firewall rules to /etc/sysconfig/iptables:

–重启防火墙:

# service iptables {start|stop|restart}

(2)查看关闭selinux

# sestatus

SELinux status: disabled

我这里在安装操作系统的时候就关闭了selinux,如果没有关闭,可以修改如下文件来关闭:

# cat /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#enforcing – SELinux security policy is enforced.

#permissive – SELinux prints warnings instead of enforcing.

#disabled – SELinux is fully disabled.

SELINUX=disabled

# SELINUXTYPE= type of policy in use. Possible values are:

#targeted – Only targeted network daemons are protected.

#strict – Full SELinux protection.

SELINUXTYPE=targeted

#

保存退出并重启系统reboot

三. FTP配置文件

FTP 安装好之后,在/etc/vsftpd/目录下会有如下文件:

# cd /etc/vsftpd/

# ls

ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh

#

vsftpd.conf: 主配置文件

ftpusers: 指定哪些用户不能访问FTP服务器

user_list: 指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

# cat user_list

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

我们过滤掉#的注释后,查看一下vsftpd.conf 文件:

# cat /etc/vsftpd/vsftpd.conf |grep -v ‘^#’;

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=yes

tcp_wrappers=YES

至于这些参数的意思,在注释里有详细的说明。

我们可以在vsftpd.conf 文件设置如下参数:

(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息

(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间

(4)accept_timeout=60 设置在多长时间后自动建立连接

(5)connect_timeout=60 设置数据连接的更大激活时间,多长时间断开,为别人所使用;

(6)max_clients=200 指明服务器总的客户并发连接数为200

(7)max_per_ip=3 指明每个客户机的更大连接数为3

(8)local_max_rate=50000(50kbytes/sec) 本地用户更大传输速率限制

(9)anon_max_rate=30000匿名用户的更大传输速率限制

(10)pasv_min_port=端口

(11)pasv-max-prot=端口号 定义更大与最小端口,为0表示任意端口;为客户端连接指明端口;

(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;

(13)listen_port=端口号 设置FTP工作的端口号,默认的为21

(14)chroot_local_user=YES 设置所有的本地用户可以chroot

(15)chroot_local_user=NO 设置指定用户能够chroot

(16)chroot_list_enable=YES

(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 )

(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;

(19)chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;

(20)chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;

(21)userlist_enable=YES/NO 是否加载用户列表文件;

(22)userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;

(23)userlist_file=/etc/vsftpd/user_list 列表文件

限制IP 访问FTP:

#vi /etc/hosts.allow

vsftpd:192.168.5.128:DENY 设置该IP地址不可以访问ftp服务

FTP 访问时间限制:

#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd

#vi /etc/xinetd.d/vsftpd/

修改 disable = no

access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)

例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp

ftp的配置基本上只有这些了。

默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:

# cat /etc/passwd | grep ftp

ftp:x:14:50:FTP User:/var/ftp:/in/nologin

创建一个用户来访问FTP,并指定该用户的FTP 目录:

# useradd -d /u02/qsftp qs

# passwd qs

Changing password for user qs.

New UNIX password:

BAD PASSWORD: it is WAY too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

这里指定的是/u02/qsftp 这个目录,要注意个目录的权限。

更改用户不能telnet,只能ftp:

usermod -s /in/nologin username //用户只能ftp,不能telnet

usermod -s /in/bash username //用户恢复正常

禁止用户ssh登陆

useradd username -s /bin/false

更改用户主目录:

usermod -d /bbb username//把用户的主目录定为/bbb

然后用qs这个用户就可以访问了。

以上只是一些简单的设置。 在用户权限这块还有很多内容可以研究。 比如特定用户的特定权限。 安全性等。 以后在研究了。

1. 首先保证网络畅通(假设win: 192.168.1.linux: 192.168.1.2)

2. 安装VSFTPD软件,(一般情况下都会安装好,可以唤衡通过rpm -qa |grep vsftpd来查看)

3. 启动vsftpd服务,service vsftpd start ,出现了一个OK,就算是启动成功了。

4. 在LINUX的字符界面测试一下服务器是否正常:

输入ftp localhost,回车如果成功会提示让你输入用户名,输入ftp,回车,提示输入密码,族枯直接回和穗做车,如果出现了ftp>,此时继续输入dir,如果看到了一个pub的目录,说明服务器没有问题,正常。

5. 转到windows上测试,打开IE浏览器输入 ,如果可以看到pub文件夹,说明好了,如果不能提示无法访问,有可能是linux的防火墙和SELINUX机制导致的。

解决办法:

A: 分别执行: iptables -F

iptables -X

service iptables save

B. 编辑/etc/sysconfig/selinux,会看到一个selinux=enable,如果是enable,改成disabled,然后一定要重启linux系统,这样应该就没有问题了。

无论虚拟和真是机器,对于ftp服务来说,没区别,ftp服务在Linux上,有很多软件,先说vsftp吧。

最困扒简单的办法,

打命令命令: service vsftp start

或者:/etc/init.d/vsftp start

或者:运行setup,在服务汪昌昌那里,开启vsftp。

android之SELinux小记

SELinux是安全增强型 Linux(Security-Enhanced Linux)简称 SELinux。它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。

SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。

SELinux目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。

在目前的大多数发行版中,已经默认在内核集成了SELinux。

举例来说,系统上的 Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户) ,而修复该安全漏洞的 Apache 更新补丁尚未释出。此时 SELinux 可以起到弥补该漏洞的缓和方案。因为 /etc/passwd 不具有 Apache 的 访问标签,所以 Apache 对于 /etc/passwd 的访问会被 SELinux 阻止。

相比其他强制性访问控制系统,SELinux 有如下优势:

SELinux for Android在架构和机制上与SELinux完全一样,考虑到移动设备的特点,所以移植到Android上的只是SELinux的一个子集。SELinux for Android的安全检查几乎覆盖了所有重要的系统资源,包括

域转换,类型转换,进程、内核、文件、目录、设备,App,网络及IPC相关的操作

Android分为 宽容模式 (仅记录但不强制执行 SELinux 安全政策 )和 强制模式 (强制执行并记录安全政策。如果失败,则显示为 EPERM 错误。 );在选择强制执行级别时只能二择其一。

您的选择将决定您的政策是采取操作,还是仅允许您收集潜在的失败事件。宽容模式在实现过程中尤其有用。

DAC是传统的Linux的访问控制方式,DAC可以对文件、文件夹、共享资源等进行访问控制。

在DAC这种模型中,文件客体的所有者(或者管理员)负责管理访问控制。

DAC使用了ACL(Access Control List,访问控制列表)来给非管理者用户提供不同的权限,而root用户对文件系统有完全自由的控制权。

MAC是任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限。

凡是没有出现在安全策略配置文件中的权限,进程就没有该权限。

这个机制相当于一个白名单,这个白名单上配置了所有进程的权限,进程只能做白名单上权限内的事情,一差升纤旦它想做一个不属于它权限的操作就会被拒绝。

这就需要使用到配置文件和其对应的te语法。

语法解析:

指定一个“域”(domain),一般用于描述进程,该域内的的进程,受该条TE语句的限制。

用 type 关键字,把笑或一个自定义的域与原有的域相关联,最简单地定义一个新域的方式为:

意思为赋予shell给domain属性,同时,shell与属于虚仿domain这个里。

例如:有一个allow domain xx 的语句,同样地也给了shell xx的属性。

进程需要操作的客体(文件,文件夹等)类型(安全上下文),同样是用type与一些已有的类型,属性相关联。

type有两个作用,定义(声明)并关联某个属性。

可以把这两个作用分开,type定义,typeattribute进行关联。

class定义在文件 system/sepolicy/private/security_classes 中.

定义在 system/sepolicy/private/access_vectors 。有两种定义方法。

SELinux中,每种东西都会被赋予一个安全属性,它就是SecurityContext(Security Context以下简称SContext,安全上下文或安全属性)是一个字符串,主要由三部分组成。

例如在 SELinux for Android中,进程的SContext可以通过PS-Z命令查看,如下:

其中:

1. kernel/m-3.18/security/selinux/

2. external/selinux/

3. 用BOARD_SEPOLICY_DIRS添加的各te文件和安全配置文件,主要包括device//sepolicy//和system/sepolicy/,以及其他功能模块添加的配置文件。

一文彻底明白linux中的selinux到底是什么

SELinux之一:SELinux基本概念及基本配置

Android selinux配置和用法

详解 SEAndroid 以及 Hack 其规则(sepolicy)

SELinux/SEAndroid 实例简述(二) TE语言规则

关于selinux 端口配置文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » SELinux如何管理端口配置文件? (selinux 端口配置文件)