centos 6.5 selinux,centos 6.5安装教程
大家好,今天来为大家解答centos 6.5 selinux这个问题的一些问题点,包括centos 6.5安装教程也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
CentOS上的安全防护软件Selinux详解
selinux简介
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux默认安装在Fedora和Red Hat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到,2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中
DAC:Discretionary Access Control自由访问控制
MAC:Mandatory Access Control强制访问控制
DAC环境下进程是无束缚的
MAC环境下策略的规则决定控制的严格程度
MAC环境下进程可以被限制的
策略被用来定义被限制的进程能够使用那些资源(文件和端口)
默认情况下,没有被明确允许的行为将被拒绝
selinux的工作类型
selinux一共有四种工作类型
strict:每个进程都受到selinux的控制
targeted:用来保护常见的网络服务,仅有限进程受到selinux控制,系统当中默认设置类型
minimum:这个模式在centos7上,是targeted的修改版,只对选择的网络服务,仅对选中的进程生效
mls:提供mls机制的安全性,国防级别的
selinux安全上下文
传统的linux,一切皆文件,由用户、组、权限来进行访问控制,这当中有很多的缺陷
在selinux中,一切皆对象(进程),有存放在inode的扩展属性域的安全元素所控制其访问
所有文件和端口资源和进程都具备安全标签,这就是安全上下文
安全上下文有五个元素组成
system_u:object_r:admin_home_t:s0
user:role:type:sensitivity:category
user:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由进程
role:定义文件,进程和用户的用途,文件:object_r,进程和用户:system_r
type:指定数据类型,规则重定义何种进程类型访问何种文件,target策略基于type实现,多服务功用,public_content_t
sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,一个对象有且只有一个sensitivity,分0-15个级别,s0最低,target策略默认使用是s0
category:对于特定组织划分不分层的分类,如FBI secret,NSA secret,一个对象可以有多个category,c0-c1023共1024个分类,target策略不适用category
查看安全上下文
ls Z; ps-Z
期望(默认)上下文:存放在二进制的selinux策略库中
semanage fcontext l查看系统中的默认安全上下文
@font-face{
font-family:宋体;
}@font-face{
font-family: Cambria Math;
}@font-face{
font-family: Calibri;
}@font-face{
font-family:@宋体;
}p.MsoNormal, li.MsoNormal, div.MsoNormal{ margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: Calibri,sans-serif;}.MsoChpDefault{ font-family: Calibri,sans-serif;}div.WordSection1{}
selinux策略
对象(object):所有可以读取的对象,包括文件、目录和进程,端口等
主体:进程称为主题(subject)
selinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain标签。domain标签能够执行的操作由安全策略里定义
当一个subject视图访问一个object,kernel中的粗略执行服务器将检查AVC,在AVC中,subject和object的权限被缓存,查找应用+文件的安全环境,然后根据查询结果允许或拒绝访问
安全策略:定义主体读取对象的规则数据库,规则中记录了那个类型的主体使用了那个方法读取哪一个对象是允许还是拒绝的,并且定义了那种行为是允许或拒绝
设置selinux
配置selinux
selinux是否启用
给文件重新打安全标签
给端口设置安全标签
设定某些操作的布尔型开关
selinux的日志管理
selinux的状态
enforcing:强制,每个受限的进程都必然受限
permissive:允许;每个受限的进程违规操作不会被禁止,但会被记录与审计日志
disabled:禁用,允许任何操作
getenforce:获取selinux当前状态
sestatus:查看selinux状态
setenforce 0|1
0:设置为permissive
1:设置为enforcing
配置文件
/etc/sysconfig/selinux链接文件链接到/etc/selinux/config
/etc/selinux/config
# 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=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted Only targeted network daemons are protected.
# strict Full SELinux protection.
SELINUXTYPE=targeted
SELINUX=enforcing设置selinux的状态
SELINUXTYPE=targeted设置selinux的工作类型
设置selinux也可以在开机的时候设定,在/boot/grub/grub.conf文件内核那一行后面设定selinux的状态selinux=0|1,只要配置文件或内核设定为禁用,最后selinux的状态为禁用
注意:在从disabled状态切换至enforcing或permissive状态需要重启系统,这时候系统会对每一个文件一一重打标签,需要花费一定的时间。
修改selinux的安全标签
给文件重新打安全标签
chcon [OPTION] [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE..
chcon [OPTION] reference=RFILE FILE..
-R:递归打标,对目录而言
例如我想给自己定义的web文档根目录自定义为/htdocs
chcon-R httpd_sys_content_t/htdocs
恢复目录或文件默认的安全上下文
resotrecon [-R]/path/to/somewhere
例如:我又将web的文档根目录改为原来的目录,这时候自定义的目录的标签需要还原
restorecon-R/htdocs
恢复是根据策略库当中的策略进行还原
默认安全上下文查询与修改
semanage来自policycoreutils-python包,有些系统默认没有安装,安装次包即可使用semanage命令
查看默认的安全上下文
semanage fcontext l
添加安全上下文
semanage fcontext-a t httpd_sys_content_t/home/hadoop(/.*)?
restorecon Rv/home/hadoop此步骤一定不能忘记,它从策略库进行还原安全上下文,执行此命令才会生效
删除安全上下文
semanage fcontext d t httpd_sys_content_t/home/hadoop(/.*)?
selinux端口标签
查看端口标签
semanage port-l
添加端口
semanage port-a-t port_label p tcp|udp port
semanage port a-t htt_port_t-p tcp 8080
删除端口
semanage port-d-t port_label-p tcp|udp port
semanage port-d-t htt_port_t-p tcp 8080
修改现有(已存在)端口为新标签
semanage port-m t port_label p tcp|udp port
semanage port m t ssh_port_t p tcp 8080将ssh服务的端口改为8080
selinux布尔值
查看布尔值命令
getsebool [-a] [boolean]
semanage boolean l-C查看修改过的布尔值
设置bool值命令
setsebool [-P] boolean value(on|off|1|0)
setsebool httpd_enable_homedirs on|1开启httpd家目录访问,但不会写入策略库中
setsebool-P httpd_enable_homedirs on|1
修改bool值时后面的值可以对布尔值类型后跟=加值的设置方法
setsebool httpd_enable_homedirs=on
selinux的日志管理
需要安装settroublesshoot*安装此包需要重启系统才能生效,它会将错误日志记录到/var/log/message
grep setroubleshoot/var/log/message
sealer-l UUID
查看安全事件日志说明
sealert-a/var/log/audit/audit.log
扫描并分析日志
yum-y install selinux-policy-devel(centos7)
yum y install selinux-policy-doc(centos6)
mandb| makewhatis需要更新man帮助的数据才能查询
man-k _selinux
例如man httpd_selinux
总结:selinux在安全防护上确实起到了一定的作用,它是在内核层面来工作,往往有许多的漏洞,一旦黑客利用漏洞入侵系统后果不堪设想,还有其操作的繁琐和稳定性的欠缺的导致很多企业不愿意用到selinux,一般都会使用硬件的安全防护设备,所以我们只需要作为了解,知道有这么个东西,如何开关闭及一些简单的操作即可。
centos6.5安装到U盘出问题
usblinux把linux系统安装到u盘里
加电
BIOS找启动方式,找设备
MBR
grub
vmlinux initrd
产生init
/etc/inittab-->找到应该启动的级别
按照不同的级别启动不同类型的服务/etc/rcX.d/
/etc/rc.sysinit
/etc/rc.local
产生终端可以登录
ls/root/install.log
livecd不用安装,直接可以使用系统的CD,DVD
回顾开机启动的过程:
开机-->bios(配置主板的程序,basic input and output system,加电自检,找到启动设备的编号)-->找到mbr(master bootloader record,它是属于硬盘的0磁盘0扇区)-->grub-->通过grub找到vmlinuz和initrd(驱动硬件)-->内核启动,产生init进程-->/etc/inittab(确定系统的启动级别)-->/etc/rc.sysinit(获取主机的网络环境和主机类型,测试与载入设备,是否启动selinux,模块的加载,设置系统时间.................)-->/etc/rc.local
与USB有关的模块
[root@li~]# lsmod|grep ci
uhci_hcd 25421 0
ohci_hcd 24553 0
ehci_hcd 33869 0
--因为U盘分区在windows下不认,所以我这里两G的U盘,直接都用来做usblinux
1,首先删除U盘里原有分区
第一种:用fdisk/dev/sdb,然后用d命令去删除
第二种:dd if=/dev/zero of=/dev/sdb bs=1024 count=1--删除磁盘分区信息
重新按照规划的去分区:
Disk/dev/sdb: 2000 MB, 2000570368 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units= cylinders of 3844* 512= 1968128 bytes
Device Boot Start End Blocks Id System
/dev/sdb1* 1 763 1466455 83 Linux
/dev/sdb2 764 1016 486266 82 Linux swap/ Solaris
Command(m for help): w
--或者分为1G做usblinux,500m做swap,500m留给fat32
Disk/dev/sdb: 2000 MB, 2000570368 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units= cylinders of 3844* 512= 1968128 bytes
Device Boot Start End Blocks Id System
/dev/sdb1* 1 509 978267 83 Linux
/dev/sdb2 510 764 490110 82 Linux swap/ Solaris
/dev/sdb3 765 1016 484344 b W95 FAT32
Command(m for help): w
[root@li~]# partprobe
--有些U盘报kerenl相关的两到三段信息,就不要使用多分区,就分一个分区。
2,格式化分区,并挂载
[root@li www]# partprobe--fdisk分区后,都要用此命令刷新
--这一步,有很多U盘会报错,如果报错的话最好去windows虚拟机下全格一下,再重新在linux下来做
[root@li www]# mkfs-t ext3/dev/sdb1
[root@li www]# mkswap/dev/sdb2
[root@li www]# mkdir/usb
[root@li www]# mount/dev/sdb1/usb/--建立一个目录,挂载/dev/sdb1
3,安装基本的目录结构
准备光盘iso文件,挂载到一个目录去
[root@li www]# mount/share/iso/rhel-5.4-server-i386-dvd.iso/yum/-o loop
[root@li www]# cd/yum/Server/
[root@li Server]# rpm-qip filesystem-2.4.0-2.i386.rpm
Description:
filesystem软件包是安装在红帽 Linux系统上的一个基本
软件包。filesystem含有一个 Linux操作系统的基本目录布局,
包括各目录的正确许可权限。
要使用--nodeps脱离依赖性才可以安装
[root@li Server]# rpm-ivh--root=/usb/--nodeps filesystem-2.4.0-2.i386.rpm
或者先装setup包,再装filesystem包
[root@li~]# rpm-ivh--root=/usb/share/yum/Server/setup-2.5.58-7.el5.noarch.rpm
[root@li~]# rpm-ivh--root=/usb/share/yum/Server/filesystem-2.4.0-2.i386.rpm
[root@li~]# ls/usb--一个基本的目录布局就已经装好了
bin etc lost+found opt sbin sys var
boot home media proc selinux tmp
dev lib mnt root srv usr
4,安装相应的软件包,也就是定制功能
下面最主要的一步就是安装系统的软件包,首先要思考安装的这个USB系统需要什么功能,比如最基本的命令ls,cd等
这里可以选择使用busybox(是一个基本命令工具集),但如果对其不是特别熟悉,还是按基本命令一个一个的来选
首先要装bash包,包含50多个内部命令
[root@dns Server]# chroot/usb--不装bash无法 chroot进去
chroot: cannot run command `/bin/bash': No such file or directory
[root@dns Server]# rpm-qf/bin/ls
coreutils-5.97-23.el5
[root@dns Server]# rpm-qf `which vi`
vim-minimal-7.0.109-6.el5
[root@dns Server]# rpm-qf `which vim`
vim-enhanced-7.0.109-6.el5
[root@dns Server]# rpm-qf `which ping`
iputils-20020927-46.el5
[root@dns Server]# rpm-qf `which mount`
util-linux-2.13-0.52.el5
[root@dns Server]# rpm-qf `which tar`
tar-1.15.1-23.0.1.el5
[root@dns Server]# rpm-qf `which rpm`
rpm-4.4.2.3-18.el5
[root@dns Server]# rpm-qf `which man`
man-1.6d-1.1
[root@dns Server]# rpm-qf `which ssh`
openssh-clients-4.3p2-36.el5
[root@dns Server]# rpm-qf `which awk`
gawk-3.1.5-14.el5
[root@dns Server]# rpm-qf `which sed`
sed-4.1.5-5.fc6
[root@dns Server]# rpm-qf `which grep`
grep-2.5.1-55.el5
[root@dns Server]# rpm-qf `which find`
findutils-4.2.27-6.el5
[root@dns Server]# rpm-qf `which locate`
mlocate-0.15-1.el5.2
[root@dns Server]# rpm-qf `which useradd`
shadow-utils-4.0.17-14.el5
[root@dns Server]# rpm-qf `which passwd`
passwd-0.73-1
[root@dns Server]# rpm-qf `which init`
SysVinit-2.86-15.el5
[root@dns Server]# rpm-qf `which clear`
ncurses-5.5-24.20060715
[root@dns Server]# rpm-qf `which ps`
procps-3.2.7-11.1.el5
[root@dns Server]# rpm-qf/usr/bin/which
which-2.16-7
[root@dns Server]# rpm-qf `which ifconfig`
net-tools-1.60-78.el5
[root@dns Server]# rpm-qf `which fdisk`
util-linux-2.13-0.52.el5
[root@dns Server]# rpm-qf `which partprobe`
parted-1.8.1-23.el5
[root@li~]# rpm-qf `which showmount`
nfs-utils-1.0.9-42.el5
[root@li~]# rpm-qf `which service`
initscripts-8.45.30-2.el5
[root@li Server]# rpm-qf `which bzip2`
bzip2-1.0.3-4.el5_2
[root@li Server]# rpm-qf `which gzip`
gzip-1.3.5-10.el5
--经过上面对基本命令的包查找,最终安装下列这些基本包
[root@dns Server]# yum install--installroot=/usb bash coreutils vim-minimal vim-enhanced iputils util-linux tar rpm man openssh-clients gawk sed grep findutils mlocate shadow-utils passwd SysVinit ncurses procps which net-tools util-linux parted nfs-utils initscripts bzip2 gzip
--如果上面步骤安装完后,有忘记安装的包,再使用yum装不上去
[root@li~]# yum install--installroot=/usb iptables
Loaded plugins: downloadonly, rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
No package iptables available.
Nothing to do
--所以再安装的话使用rpm去安装
[root@li~]# rpm-ivh--root=/usb/share/yum/Server/iptables-1.3.5-5.3.el5.i386.rpm
5,安装启动引导文件和模块
[root@li Server]# chroot/usb--使用此命令,就是以/usb目录为根目录了
bash-3.2# ls/boot/--可以看到现在usblinux里的/boot目录没有任何文件
bash-3.2# exit--用exit退出chroot模式
exit
[root@li~]# cp/etc/skel/.bash*/usb/root/-rf
--拷环境变量模版过去
定制支持usb存储启动的ramdisk(initrd文件)
[root@li Server]# mkinitrd--with usb_storage/usb/boot/initrd.img `uname-r`
从真机上拷贝vmlinuz到usblinux对应目录
[root@li Server]# cp/boot/vmlinuz-2.6.18-164.el5/usb/boot/vmlinuz
从真机上拷贝内核模块到usblinux对应目录
[root@li Server]# cp/lib/modules/2.6.18-164.el5//usb/lib/modules/-rf
拷内核源码,可选步骤
[root@li Server]# mkdir/usb/usr/src/kernels/
[root@dns Server]# cp/usr/src/kernels/2.6.18-164.el5-i686//usb/usr/src/kernels/-rf
6,安装并手动写grub
--如果是用真实机分区来代替U盘做usblinux的话,这一步不用做,只需要把这个分区的引导信息加入到真实机的配置文件里就可以了
安装grub包,用--nodeps脱离依赖性
[root@li Server]# rpm-ivh--nodeps--root=/usb grub-0.97-13.5.i386.rpm
--脱离依赖安装,会没有splash.xpm.gz图片,可以从真机拷一个
也可以按下面安装
[root@li~]# rpm-ivh--root=/usb/share/yum/Server/*logos*
warning:/share/yum/Server/redhat-logos-4.9.16-1.noarch.rpm
[root@li~]# rpm-ivh--root=/usb/share/yum/Server/grub-0.97-13.5.i386.rpm
--但这样安装完后,grub目录下只有一个背景图片
[root@dns Server]# ls/usb/boot/grub/
splash.xpm.gz
grub-install安装到/dev/sdb
[root@li Server]# grub-install--root-directory=/usb--recheck/dev/sdb
--如果是用真实机分区来做的话,这里/dev/sdb改成/dev/sda
--grub-install之后,grub目录的基本文件就有了(除了配置文件grub.conf)
[root@dns Server]# ls/usb/boot/grub/
device.map iso9660_stage1_5 splash.xpm.gz vstafs_stage1_5
e2fs_stage1_5 jfs_stage1_5 stage1 xfs_stage1_5
fat_stage1_5 minix_stage1_5 stage2
ffs_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
修改device.map
[root@li Server]# vim/usb/boot/grub/device.map
(hd0)/dev/sdb
--如果是用真实机分区来做的话,这里/dev/sdb改成/dev/sda
手动写grub.conf文件
--下面是以u盘来做的写法
[root@li Server]# vim/usb/boot/grub/grub.conf
default=0
timeout=-1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title usblinux
root(hd0,0)
kernel/boot/vmlinuz ro root=/dev/sdb1
initrd/boot/initrd.img
=============================================
--因为我这次是使用真实机的/dev/sda14来做根./dev/sda15做swap
上面的第6步不用做,只做这一小段就好了
所以把下面这段加到真实机的/boot/grub/grub.conf里
title usblinux
root(hd0,13)--因为我模拟的这个usblinux的根为sda14,所以这里写13
kernel/boot/vmlinuz ro root=/dev/sda14
initrd/boot/initrd.img
# grub-install/dev/sda--加完后,就grub-install安装一下
--------------------------------------------------
7,拷贝密码文件,拷贝环境变量
--这一步可以不拷,因为现在usblinux上默认有passwd和group文件,没有shadow和gshadow
--里面默认有root用户和系统用户
[root@li Server]# cp/etc/passwd/usb/etc/passwd
[root@li Server]# chroot/usb/--再次chroot到/usb目录,提示符就变了
[root@li/]# pwconv--同步/etc/passwd和/etc/shadow
[root@li/]# grpconv--同步/etc/group和/etc/gshadow
[root@li/]# passwd root--修改root的密码,到时候登录需要
8,手动编写fstab文件
[root@li/]# vim/etc/fstab--注意这里是usblinux系统里的fstab,因为已经chroot进来了
/dev/sdb1/ ext3 defaults 0 0
/dev/sdb2 swap swap defaults 0 0
devpts/dev/pts devpts gid=5,mode=620 0 0
sysfs/sys sysfs defaults 0 0
proc/proc proc defaults 0 0
tmpfs/dev/shm tmpfs defaults 0 0
--用真实机的/dev/sda14来做根./dev/sda15做swap的话,就把上面的sdb1换成sda14,sdb2换成sda15,其它的不变
9,让usblinux支持网络
从真机拷贝eth0的配置文件到usblinux对应目录中:
[root@li Server]# cp/etc/sysconfig/network-scripts/ifcfg-eth0/usb/etc/sysconfig/network-scripts/
修改网络配置文件,可以改成静态IP
[root@li Server]# vim/usb/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
从真机拷贝全局网络配置文件到usblinux对应目录中
[root@li Server]# cp/etc/sysconfig/network/usb/etc/sysconfig/
从真机拷贝modprobe.conf到usblinux对应目录中
[root@li Server]# cp/etc/modprobe.conf/usb/etc/
alias eth0 8139too--注意这一句在不同的系统里可能要修改,现在这里的网卡模块是8139too,所以这里是8139too就可以;这个在虚拟机里为pcnet32
然后重启系统,在bios选择使用usb引导进入系统,去验证功能
--如果是真实机分区做的,就不用改bios,直接在grub选择菜单选择usblinux引导进入就可以了
-------------------------------------------------------------
上面的步骤里还没有去加的功能有动态获取IP(需要安装dhclient包)
没有yum命令,没有图形界面(有需要的话,自己使用rpm安装yum命令后,使用yum安装图形包的两个组)
启动时有大量无用信息,可以在grub.conf里加rhgb quiet来解决
但重启后还会有一个错误信息:
(会有一个usb_storage的报错信息,但此信息没有影响,是mkinitrd--with usb_storage时造成的)
如果一定要除掉这句报错,可以手工修改initrd文件
# cd/tmp
# cp/usb/boot/initrd.img/tmp/initrd.img.gz
# gunzip initrd.img.gz
# cpio-i--make-directories< initrd.img
# rm initrd.img
# vim init--打开,删除以下的几行
echo"loading usb-storage.ko module"
insmod/lib/usb-storage.ko
echo waiting for dirver initialization
stabilized/proc/bus/usb/devices
echo waiting for driver initializtin
# find.| cpio-c-o>../initrd.img
# gzip-9../initrd.img
# cp../initrd.mg.gz/usb/boot/initrd.img
=============================================================
centos下关闭selinux不重启的方法
关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX=为 disabled,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1设置SELinux成为enforcing模式
setenforce 0设置SELinux成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux
#---------------------------------------------------------------
查看selinux状态:
/usr/bin/setstatus-v
如下:
SELinux status: enabled
SELinuxfs mount:/selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
getenforce/setenforce查看和设置SELinux的当前工作模式
#-----------------------------------------------------------------------
发现服务一启动,马上停止,在网上查找资料,找到安装时要先禁用SELinux,再安装MySQL,步骤是:
1.关闭SELinux,重启系统;
2.安装MySQL(MySQL server应该可以启动了);
3.启用SELinux,重启系统,之后MySQL server就可以正常启动了。
启用禁用SELinux的方法是:
vi/etc/selinux/config(也有人说是/etc/sysconfig/selinux文件,其实两个之间是链接关系,随便改其中一个,另一个也改了)
SELINUX=disable禁用SeLinux
SELINUX=enforcing启用SeLinux