selinux控制

Selinux

一、selinux--内核级控制

selinux

1.selinux工作模式

vim /etc/sysconfig/selinux

# This file controls the state of SELinuxon the system.

# SELINUX= can take one of these threevalues:

#    enforcing - SELinux security policy is enforced. #强制模式

#    permissive - SELinux prints warnings instead of enforcing. #警告模式

#    disabled - No SELinux policy is loaded.

SELINUX=disabled  #关闭

# SELINUXTYPE= can take one of these twovalues:

#    targeted - Targeted processes are protected,

#    minimum - Modification of targeted policy. Only selected processes areprotected.

#    mls - Multi Level Security protection.

SELINUXTYPE=targeted

2.查看selinux工作模式

[root@localhost ~]# getenforce

Disabled

3.更改工作状态

setenforce 0  #表示工作在permissive模式,可以查看文件

setenforce 1  #表示工作在enfrocing模式,即强制模式

注意:若更改了状态,一定要重启系统。

二、安全上下文修改

1.selinux文件上下文通常是由父目录指定的,即在创建文件时,将父目录的安全上下文指定给新建文件。若文件是在别处建立,再利用mv或cp -a等命令移至其他位置,该文件仍将保持原来的selinux上下文。

如:修改匿名用户登录FTP服务器的家目录是/linux,检测是否可以查看家目录中问题

[root@foundation90 ~]# lftp 172.25.254.109

lftp 172.25.254.109:~> ls  #查看家目录内容,未显示家目录中内容,知存在安全上下文问题

2.显示文件的安全上下文

ls -Z /目录名  #查看某目录的安全上下文

ps -lZ /目录名

ps auxZ | grep /目录名

selinux控制_第1张图片

selinux控制_第2张图片

 

显示内容中“?”表示安全上下文不同

3.临时修改安全上下文

chcon -t public_content_t /linux  #指定linux文件的安全上下是public_content_t

selinux控制_第3张图片

三、semanage

1.getenfoce #查看工作在enforcing状态

selinux控制_第4张图片

2.mkdir /westos

 mkdir -p /westos/{1..3}

3.修改匿名用户登录FTP服务器的家目录

 vim/etc/vsftpd/vsftpd.conf

 anon_root=/westos

4.匿名登录FTP服务器

[root@foundation9 ~]# lftp 172.25.254.109

lftp 172.25.254.109:~> ls             

lftp 172.25.254.109:/> ls  

可以看出此时不能显示家目录/westos中的内容,存在安全上下文问题

5.查看安全上下文

[root@localhost109 ~]# ps auxZ | grepvsftpd

system_u:system_r:ftpd_t:s0-s0:c0.c1023root 3979 0.0  0.0 52760  564 ?       Ss   21:29   0:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023root 4014 0.0  0.0 112640 936 pts/1 R+21:31   0:00 grep --color=auto vsftpd

selinux控制_第5张图片

内容显示:vsftp只能查看并显示安全上下文是ftpd_t的文件

[root@localhost109 ~]# ls -lZ /var/ftp

drwxr-xr-x. root rootsystem_u:object_r:public_content_t:s0 pub #安全上下文类型是public_content_t

[root@localhost109 ~]# ls -lZ /westos/

-rw-r--r--. root rootunconfined_u:object_r:default_t:s0 file #安全上下文类型是默认类型

selinux控制_第6张图片

6.修改安全上下文

(1)chcon -t 命令可以临时更改安全上下文类型。

所谓临时更改即内核中并没有记录某文件的特殊安全上下文。所以若要永久更改安全上下文,则需要将特殊安全上下文类型记录在为文件中。

(2)先查看内核是否有记录某文件的特殊安全上下文,命令如下:

 semanage fcontext -l | grep /westos #查看关于/westos的安全上下文,若无显示,即没有记录

 semanege fcontext -l | grep /var/ftp #查看/var/ftp的安全上下文

[root@localhost109 ~]# semanage fcontext -l| grep /var/ftp

/var/ftp(/.*)?                     all files #包括该目录及目录中的内容以及将要新建的文件        system_u:object_r:public_content_t:s0

/var/ftp/bin(/.*)?                                 all files          system_u:object_r:bin_t:s0

/var/ftp/etc(/.*)?                                 all files          system_u:object_r:etc_t:s0

/var/ftp/lib(/.*)?                                 all files          system_u:object_r:lib_t:s0

/var/ftp/lib/ld[^/]*\.so(\.[^/]*)*                 regular file       system_u:object_r:ld_so_t:s0

(3)将/westos安全上下文修改为与/var/ftp相同的上下文

根据以上内容显示,修改命令格式如下:

 semanage fcontext -a -t public_content_t '/westos(/.*)?'

 -a  #表示添加安全上下文文件

 -t  #安全上下文类型

7.刷新安全上下文,完成修改

 restorecon -RvvF /westos/

selinux控制_第7张图片

8.匿名登录FTP,ls 进行测试

selinux控制_第8张图片

二、布尔值更改

1.FTP服务器默认的本地用户具有写功能--vsftpd的配置文件中write_enable=YES,则具有上传功能

2.setenfoce 1  #为安全起见,selinux应处于强制模式

3.[root@foundation9 ~]# lftp 172.25.254.109-u student

Password:

lftp [email protected]:~> ls     

lftp [email protected]:~> put/etc/passwd

put: Access failed: 553 Could not createfile. (passwd)  #上传失败,553表示权限用户权限太小

4.查看用户权限

[root@localhost109 ~]# ls -l /home/student

total 4

-rw-r--r--. 1 student student 2367 Apr 2822:08 passwd  #用户无写权限

[root@localhost109 ~]# chmod u+w/home/student  #添加写权限

再测试:[email protected]:~> put /etc/passwd

      put: Access failed: 553 Could not create file. (passwd)  #上传失败

5.setenforce 0  #使工作在警告状态

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce

Permissive

selinux控制_第9张图片

 本地用户可以上传文件,但为了安全起见,selinux为强制状态

6.可以通过更改布尔值,开发个用户的某些功能。

 getsebool -a | grep ftp  #查看FTP服务器各功能的状态

[root@localhost ~]# getsebool -a | grep ftp

ftp_home_dir --> off  #用户上传文家的功能处于关闭状态

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

 setsebool -P ftp_home_dir 1  #永久开启上传文件功能

 setsebool -P ftp_home_dir 0  #关闭该功能

selinux控制_第10张图片

7.本地用户登录FTP服务器上传文件

selinux控制_第11张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




你可能感兴趣的:(Linux学习<二>)