系统相关
首页 > 系统相关> > SELinux安全防护 必要时需要关闭

SELinux安全防护 必要时需要关闭

作者:互联网

问题
本案例要求熟悉SELinux防护机制的开关及策略配置,完成以下任务:
1)将Linux服务器的SELinux设为enforcing强制模式
2)在SELinux启用状态下,调整策略打开vsftpd服务的匿名上传访问
3)从/root目录下移动一个包文件到FTP下载目录,调整策略使其能够被下载

步骤

实现此案例需要按照如下步骤进行。
步骤一:将Linux服务器的SELinux设为enforcing强制模式
1)固定配置:修改/etc/selinux/config文件
确认或修改SELINUX为enforcing模式:

[root@svr5 ~]# vim /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted

2)临时配置:使用setenforce命令
查看当前SELinux状态,如果是disabled则需要根据第1)步的配置重启系统;如果是permissive则使用setenforce命令修改为enforcing即可:

[root@svr5 ~]# getenforce
Permissive
[root@svr5 ~]# setenforce 1  			//或者setenforce  enforcing
[root@svr5 ~]# getenforce
Enforcing

步骤二:在SELinux启用状态下,调整策略打开vsftpd服务的匿名上传访问
1)配置一个允许匿名上传的vsftpd服务作为测试环境

[root@svr5 ~]# yum –y install vsftpd
.. ..
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES  								//开启匿名访问
write_enable=YES
anon_umask=022
anon_upload_enable=YES  							//允许上传文件
anon_mkdir_write_enable=YES  						//允许上传目录

[root@svr5 ~]# chown ftp /var/ftp/pub
[root@svr5 ~]# service vsftpd start
为 vsftpd 启动 vsftpd:                                    [确定]

2)启用SELinux时验证FTP上传访问
在targeted策略的布尔值设置中,默认禁止FTP匿名写入和完全访问:

[root@svr5 ~]# ls > test.txt
[root@svr5 ~]# ftp 192.168.4.5
[root@svr5 ~]# ftp 192.168.4.5
.. ..
Name (192.168.4.5:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> put test.txt    										//尝试上传测试文件
local: test.txt remote: test.txt
227 Entering Passive Mode (192,168,4,5,121,146).
553 Could not create file.  								//上传失败
ftp> quit
221 Goodbye.

3)调整与FTP相关的SELinux布尔值,开放上传写入权限
检查与allow_ftpd相关的SELinux布尔值,如果是off,则将其修改为on:

[root@svr5 ~]# getsebool -a |grep allow_ftpd  				//查看布尔值
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
.. .
[root@svr5 ~]# setsebool  -P  allow_ftpd_anon_write=1  		//设置布尔值
[root@svr5 ~]# setsebool  -P  allow_ftpd_full_access=1
[root@svr5 ~]# getsebool -a |grep allow_ftpd  				//确认修改结果
allow_ftpd_anon_write --> on
allow_ftpd_full_access --> on

4)再次访问vsftpd服务,经测试发现匿名上传已经可用

[root@svr5 ~]# ftp 192.168.4.5
.. ..
Name (192.168.4.5:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> put test.txt    										//尝试上传测试文件
local: test.txt remote: test.txt
227 Entering Passive Mode (192,168,4,5,63,249).
150 Ok to send data.
226 Transfer complete.  									//上传成功
237 bytes sent in 6.3e-05 secs (3761.90 Kbytes/sec)
ftp> quit
221 Goodbye.

步骤三:从/root目录下移动一个包文件到FTP下载目录,调整文件的安全上下文
1)关闭FTP布尔值allow_ftpd_full_access以便测试
因为开启此项会扩大FTP目录的访问权限(忽略安全上下文),建议先将其关闭。

[root@svr5 ~]# setsebool  allow_ftpd_full_access=0
[root@svr5 ~]# getsebool  allow_ftpd_full_access
allow_ftpd_full_access --> off

2)建立两个FTP下载用的测试文件
由root用户创建两个测试压缩包,一个直接建立到/var/ftp/目录下,另一个先在/root/下建立,然后移动至/var/ftp/目录 。

[root@svr5 ~]# tar zcf /var/ftp/d1.tar.gz install.log*
[root@svr5 ~]# tar zcf d2.tar.gz install.log*
[root@svr5 ~]# mv d2.tar.gz /var/ftp/
[root@svr5 ~]# ls -lh /var/ftp/d?.tar.gz
-rw-r--r--. 1 root root 13K 8月  16 10:16 /var/ftp/d1.tar.gz
-rw-r--r--. 1 root root 13K 8月  16 10:16 /var/ftp/d2.tar.gz

3)通过FTP方式测试下载
使用wget命令分别下载这两个包文件,第二个包将会下载失败(看不到文件)。

[root@svr5 ~]# wget ftp://192.168.4.5/d1.tar.gz
.. ..
==> PASV ... 完成。    ==> RETR d1.tar.gz ... 完成。
.. ..
2013-08-16 10:36:16 (235 MB/s) - “d1.tar.gz” 已保存 [13124]

[root@svr5 ~]# wget ftp://192.168.4.5/d2.tar.gz
.. ..
==> PASV ... 完成。    ==> RETR d2.tar.gz ...
文件 “d2.tar.gz” 不存在。

4)检查该测试包的安全上下文,正确调整后再次下载第二个包成功。

[root@svr5 ~]# ls -Z /var/ftp/d?.tar.gz
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d1.tar.gz
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/ftp/d2.tar.gz
[root@svr5 ~]# chcon -t public_content_t /var/ftp/d2.tar.gz
[root@svr5 ~]# ls -Z /var/ftp/d2.tar.gz
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d2.tar.gz

[root@svr5 ~]# wget ftp://192.168.4.5/d2.tar.gz
.. ..
==> PASV ... 完成。    ==> RETR d2.tar.gz ... 完成。
长度:13124 (13K) (非正式数据)
.. ..
2013-08-16 10:42:21 (178 MB/s) - “d2.tar.gz” 已保存 [13124]

注意:上例中的chcon操作可替换为restorecon /var/ftp/d2.tar.gz 或者chcon --reference=/var/ftp/d1.tar.gz /var/ftp/d2.tar.gz ,效果相同。

标签:ftp,..,tar,SELinux,svr5,gz,防护,关闭,root
来源: https://blog.csdn.net/Win_Le/article/details/90647386