selinux

一.SELINUX的运行模式

修改文件/etc/selinux/config

设置 SELINUX=disabled 禁用

设置 SELINUX=permissive 宽松模式

设置 SELINUX=enforcing 强制模式


二.查看当前运行模式

[root@localhost ~]# getenforce

Enforcing


三.临时修改运行模式

[root@localhost ~]#  setenforce

usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]  //1代表强制,0代表宽松



 #yum -y install setrouble*    //排错软件,提示selinux发生的错误

 #reboot   //安装完软件需重启


四.配置SELINUX的两个主要方面

1.SELINUX上下文环境

(1)查看一个文件的上下文环境

 [root@localhost html]# ls -Z

 -rw-r--r--. root root unconfined_u:object_r:net_conf_t:s0 index.html //文件的上下文环境

 [root@localhost html]# ls -Zd

 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .//目录上下文环境

 [root@localhost html]# 

 只关心httpd_sys_content_t,对照目录的ls -Zd 的httpd_sys_content_t去修改文件的上下文环境


(2)修改selinux上下文环境值

  [root@localhost html]# chcon -t httpd_sys_content_t index.html


(2.1)把文件恢复到所在目录的默认值

  #restorecon -Rv /var/www/html  //-R带表递归恢复上下文环境值,包括子文件和子文件夹

  #restorecon -v /var/www/html/index.html //只修改一个文件的上下文环境,-v打印出来


从其他目录拷贝过来的文件,会继承他原目录的上下文环境

而从其他目录移动过来的文件,则会继承移动目标文件夹的上下文环境


SELINUX布尔值

4.windows通过samba访问linux

 (1)安装samba

  (2) # smbpasswd -a root

  (3) service smb start 启动服务

  (4) 在windows下用UNC路径访问,能够看到root的家目录,但是双击打不开

  (5) # getsebool -a | grep samba

  (6) # sebsebool -P samba_export_all_rw 1 //r,读,w写,1代表打开读写,也可写成rw=on

  (7) 再次在windows下用UNC路径访问,可以打开root的家目录



2.例二. 实现FTP匿名用户上传

  (1) # mkdir -m 757 /var/ftp/incoming

  (2)vim /etc/vsftpd/vsftpd.conf

      anon_upload_enable=YES     修改vsftpd.conf打开匿名上传

  (3) 上传文件测试,

       ftp 192.168.10.1 -> 回车  -> ftp -> 回车 ->

       ftp> cd incoming

       ftp> lcd /etc    //lcd改变本地目录

       ftp> put passwd

  如果已经安装setroubleshoot,屏幕右上角会弹出提示,根据提示修改,

  #chcon -t public_content_rw_t /var/ftp/incoming  //修改上下文环境  

  # getsebool -a | grep ftp > 获得与ftp 相关的selinux布尔值  

  # setsebool -P allow_ftpd_anon_write 1   //打开布尔值,也可写成write=on

  (4)再次尝试上传,成功 

  ftp 192.168.1.2

  ftp>jack 用jack登陆

  ftp>密码

  提示不能更改目录 

  # getsebool -a | grep ftp   > 获得与ftp 相关的selinux布尔值  

  # setsebool -P ftp_home_dir 1  //打开布尔值,允许访问目录

 vimdiff vsftpd.conf  vsftpd.conft //比较两个文件的不同之处


六.安装setroubleshoot   (troubleshooting) 排错

# yum install -y setroubleshoot*

重启

有任何的selinux违规行为,系统都会给出提示和解决方案

如果是图形界面下,屏幕右上角会弹出消息。如果是字符终端下,可以查看日志文件

vim /var/log/messages

run sealert -l 17876b7e-c588-4d5e-a900-ca093341fc38

在终端在运行这行则会有相关帮助信息提示

# sealert -l 17876b7e-c588-4d5e-a900-ca093341fc38


七.获得SELINUX设置的帮助

(1)man ftpd selinux

     man httpd selinux

     man samba selinux

 (2)有些服务配置文件中也有说明

     vim /etc/samba/smb.conf


加密解密

[root@localhost html]# tr 'a-z' 'A-Z'   //把字母转换成大写

hellow

HELLOW

^C

[root@localhost html]# cat index.html | tr 'a-z' 'A-Z' //把文件字母转换成大写输出

BBB

[root@localhost html]# tr 'a-z' 'A-Z' < index.html  //把文件字母转换成大写输出

WSYHT

[root@localhost html]# tr 'a-y' 'b-z' //加密

hellow

ifmmpx

^C


GnuPG加密工具

对称加密

非对称加密

签名


gpg --version //查看版本


对称加密

加密操作:  -c

解密操作:  -d 


对称加密

终端1(bob)

ssh -X [email protected] //-X表示可以打开图形界面

echo "bob" > bob.txt

gpg -c bob.txt   //加密

cp bob.txt.gpg /tmp


终端2 (jack)

ssh -X [email protected] //-X表示可以打开图形界面

cp /tmp/bob.txt.gpg . 

gpg -d bob.txt  //解密输出到屏幕 (不写-d也行)

gpg -d bob.txt.gpg > bob.txt //解密并重定向到bob.txt这个文件


非对称加密

终端1(bob)

ssh -X [email protected] //-X表示可以打开图形界面

#gpg --gen-key

#回车

#回车

#0

#y

#wsyht

#[email protected]

#回车

#O

#输入保护私钥的密码

提示框点右边选项

随便按乱按字母生成密钥

#gpg --list-keys   //查看公钥信息

#gpg --list-secret //查看私钥信息

#gpg --export -a > /tmp/bob.key //导出公钥,-a表示用ASCII码形式输出 (1)

#cat /tmp/bob.key

#gpg --fingerprint  //打印指纹信息

#cp /tmp/bob.txt.asc .   //拷贝javk已加密的文件到当前文件夹 (4)

#gpg bob.txt.asc

#ls


终端2(jack)

#ssh -X [email protected] //-X表示可以打开图形界面

#gpg --import /tmp/bob.key   //导入公钥  (2)

#gpg --list-keys //可以查看公钥

#gpg --list-secret //查看不了私钥,没有密钥对

#man gpg

#gpg -ear bob bob.txt    e,加密,a,ASCIID码输出,r,接收者,bob用户名

#y

#cat bob.txt.asc

#cp /bob.txt.asc /tmp  //拷贝用公钥加密的文件到tmp (3)


三.使用GPG签名

1.签名可实现的功能:

(1)身份认证,表明用户确实是他声称的那个人

(2)数据完整性,数据一旦被篡改,签名就会失效

(3)认可,不可抵赖

终端1(bob)

2.bob发送签名文件给jack

#echo 'bob file' > bob.txt

#gpg -b bob.txt  //签名

#ls

bob.txt bob.txt.sig

2.2把原文和签名文件发送给jack

#cp bob.txt* /tmp


终端2(jack)

2.3验证签名

#cp /tmp/bob.txt*

#ls

bob.txt bob.txt.sig

#gpg --verify bob.txt.sig 验证签名