系统的自动化安装
anaconda:系统安装程序
tui:基于图形库curses的文本窗口
gui:图形窗口
装载根文件系统,并启动anaconda
默认启动GUI接口,若要想使用TUI接口,可以向内核传递参数
1.按tab键,在后面添加text
2.按ESC键,boot:linux text
anaconda工作过程:
安装前配置阶段:
安装过程中使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
特殊设备:ISCSI
设定主机名
配置网络接口
时区
管理员密码
设定分区及MBR的安装位置
创建一个普通用户
选定要安装的程序包
安装阶段
在目标磁盘创建分区,执行格式化操作等
将选定的程序包安装至目标位置
安装bootloader和initramfs
首次启动
iptables,selinux,core dump设置
启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包可能来源于下面几种方式:
本地光盘
本地硬盘
ftp server:yum repository
http server:yum repository
nfs server
如果想指定安装源:
boot:linux askmethod 可以让系统询问选择安装的媒介
anaconda的配置方式:
1.交互式配置方式
2.通过读取事先给定的配置文件实现自动化安装
kickstart文件
安装boot引导选项:boot
text:文本安装方式
askmethod:手动指定使用的安装方法
与网络相关的引导选项
ip=address
netmask=mask
gateway=gw
dns=address
ifname=name:mac_addr
远程访问功能相关的引导选项;
vnc
vncpasswd=‘password’
指明kickstart文件位置:ks=
DVD driver:ks=cdrom:/path/to/file
Hard driver: ks=hd:device:/path/to/file
Ftp server: ks=ftp://host:port/path/to/file
Http server: ks=https://host:port/path/to/file
Nfs server: ks=nfs:host:/path/to/file
kickstart文件的格式:
命令段:指明各种安装前配置,如语言,键盘等
程序包段:指明要安装的程序包组或者程序包,不安装的程序包等
%packages:以%packages字段开始
@group_name:要安装的包组
package:安装的程序包
-package:不安装的程序包
%end:以%end字段结束
脚本段:
%pre:安装前脚本
运行环境:运行于安装介质上的微型linux环境
%post:安装后脚本
运行环境:安装完成的系统
命令段中的命令:
必备命令:
autoconfig:认证方式配置
autoconfig –useshadow –passalgo=sha512
bootloader –location=mbr –driverorder=sda –append="crashkernel=auto rhgb quiet"
keyboard:设定键盘类型
lang:语言类型
part:分区
rootpw:指明root的密码
timezone:时区
可选命令:
install or upgrade
text:文本界面安装
network,firewall,selinux,halt,poweroff,reboot,repo
user:安装完成后为系统创建新用户
url:指明安装源
key-skip:跳过安装号码,适用于rhel版本
创建kickstart文件的方式:
1.直接手动编辑
依据某个模板
2.可使用创建工具:system-config-kickstart
一句某模板修改并生成新配置
http://172.18.19.1/centos6.cfg
检查ks文件的语法错误
ksvalidator /path/to/file
配置完成后,保存文件
启动后,指定ks配置文件路径即可:boot:linux ks=ftp://ip/path/to/file
firstboot:-r 可以重新配置
制作引导光盘和U盘
将光盘中的isolinux文件拷到一个制作光盘的目录下
cp /mnt/cdrom/isolinux /tmp/myiso/
编辑对应的isolinux.cfg文件
vi /tmp/myiso/isolinux/isolinux.cfg
initrd=initrd.img text ks=cdrom:/myks.cfg
拷贝ks.cfg文件
cp /root/ks.cfg /tmp/myiso/
切换目录至myiso文件的父级目录
cd /tmp
制作iso文件
mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "centos 7 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
创建U盘启动
dd if=/dev/sr0 of=/dev/sdb
fdisk /dev/sdb –>t –>b 指定vfat
mkfs.vfat /dev/sdb1
mount /dev/sdb1 /mnt/usb
mkdir -p /mnt/usb/boot/grub
cp /misc/cd/images/pxeboot/vmlinuz
/misc/cd/images/pxeboot/initrd /mnt/usb/boot
vi /mnt/usb/boot/grub/grub.conf
title linux
root (hd0,0)
kernel /boot/vmlinuz
initrd /boot/initrd.img ks=http://ip/centos.cfg
grub
root (hd1,0)
kernel /
setup (hd1)
SELinux
Secure Enhanced Linux,是美国国家安全局NSA和SCC开发的linux的一个强制访问控制的安全模块
DAC:Discretionary Access Control 自由访问控制
MAC:Mandatory Access Control 强制访问控制
DAC环境下进程是无束缚的
MAC环境下策略的规则决定控制的严格程度
MAC环境下进程可以被限制的
策略被用来定义被限制的进程能够使用哪些资源(文件,端口。。。)
默认情况下,没有被明确允许的行为将被拒绝
SELinux有四种工作类型:
strict:centos5,每个进程都受到selinux的控制
targeted:用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的过程,rhel4只保护13个服务,rhel保护88个服务
minimum:centos7,修改过的targeted,只对选择的网络服务
mls:提供MLS(多级安全)
minimum和mls稳定性不足,未加以利用
SELinux的安全上下文
传统linux,一切皆文件,由用户,组,权限控制访问
在selinux中,一切皆对象,由存放在Inode扩展属性域的安全元素所控制其访问
所有文件和端口资源和进程都具备安全标签,安全上下文(security context)
安全上下文有五个元素:
user:role:type:sensitivity:category
user_u:object_r:tmp_t:s0:c0
实际上下文:存放在文件系统中 ls -Z
默认的安全上下文:存放在二进制的selinux策略库(映射目录和期望安全上下文)中
semanage fcontext -l
SELinux五个安全元素
User:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由(unconfined)进程
Role:定义文件 ,进程和用户的用途:文件:object_r,进程和用户:system_r
Type:指定数据类型,规则中定义何种进程类型访问何种文件,target策略基于type'实现,多服务公用:public_content_r
Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top。。。一个对象有且只有一个sensitivity,分0-15级,s0最低,target默认策略使用s0
Category:对于特定组织划分不分层的分类,如FBI Secret,一个对象可以有多个category,c0-c1023,共1024个分类,target策略不使用category
SElinux策略
对象(object):所有可以读取的对象,包括文件,目录和进程,端口等
主体(subject):进程称为主体
SELinux中对所有文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain的标签,Domain标签能够执行的操作由安全策略里定义
当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC(访问矢量缓存Access Vector Cache),在AVC中,subject和object的权限被缓存(cache),查找“应用+文件”的安全环境,然后根据查询的结果允许或拒绝访问
安全策略:定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一个对象是允许还是拒绝的,并且定义了哪种行为是允许还是拒绝的
SELinux的状态:(有一个禁用,就禁用)
enforcing:强制,每个受限的进程都必然受限
permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志
disable:禁用
/etc/selinux/config中设置了默认的启动级别
查看当前的selinux的状态,使用getenforce命令查看,0表示关闭,1表示开启,修改当前selinux状态,使用setenforce命令
查看更详细的selinux状态可以使用sestatus命令进行查看
SELinux的标签
查看selinux数据库中的所有规定的标签策略
semanage fcontext -l
更改标签
restorecon -R /var/www/html
R:表示恢复目录标签
chcon –reference file1 file2
参考file1的标签,修改file2文件的标签
添加与删除数据库中的策略
semanage fcontext -a -t httpd_sys_content_t "/website(/.*)?"
semanage fcontext -d -t httpd_sys_content_t "/website(/.*)?"
Tips:restorecon 只能恢复已经存在于selinux数据库中的策略,对于没有定义的文件,不能使用该命令进行恢复,而chcon可以对未在selinux数据库中定义的策略的文件进行恢复
端口号的标签
semanage port -l
查看selinux特定某个端口
添加端口:semanage port -a -t http_port_t -p tcp 666
修改端口:此端口只能是已经存在于selinux端口策略中的端口,没有定义的只能使用-a选项添加 semanage port -m -t ssh_port_t -p tcp 666
删除端口:semanage port -d -t ssh_port_t -p tcp 666
selinux的boolean值
查看selinux中boolean值
semanage boolean -l
前一个off是state,表示现在的状态
后一个off是default,表示写入文件中的默认状态
setsebool -P boolean value 设置boolean值,并将配置写入文件
SELinux日志管理
yum install setroubleshoot*(重启生效)
将错误信息写入到/var/log/message
grep setroubleshoot /var/log/message
查看安全事件日志说明:sealert -l uuid
扫描并分析日志:sealert -a /var/log/audit/audit.log
SElinux帮助
yum install selinux-policy-devel(centos7)
yum install selinux-policy-doc(centos6)
mandb | makewhatis
man -k _selinux
1、启用SELinux策略并安装httpd服务,改变网站的默认主目录为/website,添加SELinux文件标签规则,使网站可访问
2、修改上述网站的http端口为9527,增加SELinux端口标签,使网站可访问
3、启用相关的SELinux布尔值,使上述网站的用户student的家目录可通过http访问
用户student创建的文件public_html要设置selinux策略,用户的家目录student默认权限700,而访问者是以apache用户的身份访问的,所以要设置下acl权限,使用户拥有访问student家目录的权限,这样才能进入家目录去访问public_html文件 setfacl -m u:apache:x /home/student
原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/46869