centos setenforce,centos7停止维护的后果
大家好,今天给各位分享centos setenforce的一些知识,其中也会对centos7停止维护的后果进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
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,一般都会使用硬件的安全防护设备,所以我们只需要作为了解,知道有这么个东西,如何开关闭及一些简单的操作即可。
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
centos优点
概述一下,centos与redhat的区别和优缺点?
CentOS是一种基于RedHat企业级操作系统代码(RHEL)构建的操作系统,因此它与RedHat具有许多共同之处。但是,它们之间有一些主要区别:
1.支持:RedHat是一种商业操作系统,需要订阅才能获得支持和更新。CentOS则是一个社区版的发行版,完全免费,并不需要购买订阅或付费支持计划。
2.更新:RedHat一般会在发布后的数年内提供更新和支持,而CentOS的重要更新则可能要比相应的RHEL版本稍晚一些。
3.品质保证:RedHat是一种经过广泛测试和验证的操作系统,而CentOS则更加注重稳定性和可靠性。
4.应用场景:RedHat更适合高性能、高安全性和商业关键任务。CentOS则更适合个人使用、中小型企业、组织以及一些开发人员等用户群体。
5.社区:CentOS是一个社区驱动的项目,社区用户可以对代码进行修改和分发。RedHat则更多的是企业驱动,用户只能使用其已发布的产品。
以下是他们各自的优缺点:
RedHat的优点:
-专业的技术支持和服务
-更长的支持周期
-一流的安全性和稳定性
-适合企业关键任务使用
RedHat缺点:
-需要购买订阅才能获得支持和更新
-软件更新速度可能较慢
-价格相对较高
CentOS的优点:
-免费使用和更新
-非常稳定和可靠
-社区活跃,有更多的社区支持和帮助
-拥有与RHEL相似的功能和性能
CentOS的缺点:
-不提供商业支持
-更新可能比RHEL版本稍慢
-对于一些生产环境来说,不如RedHat稳定
centos最小化安装优点
(1)Linux系统的第一个进程(pid=1)为init:
Linux操作系统的启动首先从BIOS开始,接下来进入bootloader,由bootloader载入内核,进行内核初始化。内核初始化的最后一步就是启动pid为1的init进程。这个进程是系统的第一个进程。它负责产生其他所有用户进程。
(2)init进程是所有进程的祖先,不可以kill(也kill不掉)
init以守护进程方式存在,是所有其他进程的祖先。init进程非常独特,能够完成其他进程无法完成的任务。Init系统能够定义、管理和控制init进程的行为。它负责组织和运行许多独立的或相关的始化工作(因此被称为init系统),从而让计算机系统进入某种用户预订的运行模式。
(3)大多数linux发行版的init系统是和systemV相兼容的,被称为sysvinit
sysvinit就是systemV风格的init系统,顾名思义,它源于SystemV系列UNIX。它提供了比BSD风格init系统更高的灵活性。是已经风行了几十年的UNIXinit系统,一直被各类Linux发行版所采用。
(1)CentOS5
(2)CentOS6
(1)优点
sysVinit运行非常良好,概念简单清晰,它主要依赖于shell脚本。
(2)缺点
按照一定的顺序执行--启动太慢、很容易夯(hang)住,fstab与nfs挂载问题
说明:CentOS6采用了Upstart技术代替sysvinit进行引导,Upstart对rc.sysinit脚本做了大量的优化,缩短了系统初始化时的启动时间,但是CentOS6为了简便管理员的操作,Upstart的很多特性并没有凸显或者直接不支持,因此在CentOS6中的服务启动脚本还是以原来的sysv的形式提供的,
(1)CentOS6
(2)Ubuntu14
说明:systemd技术的设计目标是克服sysvinit固有的缺点,提高系统的启动速度,和sysvinit兼容,降低迁移成本,
做主要的优点:并行启动
(1)RedHat7/CentOS7
(2)Ubuntu15
方法1(在装系统时修改):
在安装系统的时候配置,修改内核选项:net.ifnames=0biosdevname=0
方法2(装系统时忘记修改,装系统后修改):
(1)编辑网卡
#cd/etc/sysconfig/network-scripts/#mvifcfg-ens160ifcfg-eth0#mvifcfg-ens192ifcfg-eth1#vimifcfg-eth0TYPE=EthernetBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0#网卡名称改为eth0DEVICE=eth0#设备名称改为eth0ONBOOT=yesIPADDR=xxx.xxx.x.xxPREFIX=24GATEWAY=xxx.xxx.x.xDNS1=xxx.xxx.x.xIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_PRIVACY=no注:删掉网卡内的UUID=176582f7-d198-4e4f-aab0-34ab10d17247通用唯一识别码和HWADDR=00:0c:29:a5:3f:39MAC地址这两行。所有网卡都需要修改
(2)编辑grub文件
[root@localhostnetwork-scripts]#cp-a/etc/sysconfig/grub/etc/sysconfig/grub.bak#备份文件[root@localhostnetwork-scripts]#vim/etc/sysconfig/grubGRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed's,release.*$,,g'/etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=autonet.ifnames=0biosdevname=0rhgbquiet"#这行添加net.ifnames=0biosdevname=0GRUB_DISABLE_RECOVERY="true"
(3)生成启动菜单
[root@localhostnetwork-scripts]#grub2-mkconfig-o/boot/grub2/grub.cfgGeneratinggrubconfigurationfile...Foundlinuximage:/boot/vmlinuz-3.10.0-514.el7.x86_64Foundinitrdimage:/boot/initramfs-3.10.0-514.el7.x86_64.imgFoundlinuximage:/boot/vmlinuz-0-rescue-7d9a96ac2162427d937e06ede5350e9eFoundinitrdimage:/boot/initramfs-0-rescue-7d9a96ac2162427d937e06ede5350e9e.imgdone
然后重启服务器:reboot,重启服务器后查看网卡信息,
再安装操作系统的时候使用的最小化安装,有很多包没有安装,使用时发现好多命令没有如{vim、wget、tree...等},下面就安装命令,可以根据需求自行调整。
yum-yinstallwgetnet-toolsscreenlsoftcpdumpncmtropenssl-develvimbash-completionlrzsznmaptelnettreentpdateiptables-services
rpm-ivh
需要开机自启动的脚本或者配置,可以放在/etc/rc.local里,但是发现并没有执行,下面我们看一下原因。
#ll/etc/rc.locallrwxrwxrwx1rootroot13Jan523:31/etc/rc.local-rc.d/rc.local#发现是个软连接文件#ls-l/etc/rc.d/rc.local-rw-r--r--1rootroot473Oct2011:07/etc/rc.d/rc.local#问题在这里,没有执行权限#chmod+x/etc/rc.d/rc.local#添加执行权限#ls-l/etc/rc.d/rc.local-rwxr-xr-x1rootroot473Oct2011:07/etc/rc.d/rc.local注:这样添加在rc.local里的开机自启动配置就可以执行了。
linux系统下都有一个默认的超级管理员root,ssh服务的默认端口是22,圈内都知道,那么接下来我们可以修改一下我们的默认端口和禁止root用户远程登录,初步提高一下服务器的安全
1、首先修改ssh的默认端口#sed-i"s#\#Port22#Port53226#g"/etc/ssh/sshd_config#端口可以改成1-65535之间任意端口,建议改成较大的端口,因为一万以内的端口常用的服务有占用,防止冲突(需要注意的是:这个端口要记住,否则连接不上服务器)2、禁止root用户远程登陆a):添加一个普通用户并设置密码(注:这一步必须执行,否则将造成远程连接不上服务器)#useraddxxx#添加xxx用户#echo"pass"|passwd--stdinxxx#给xxx用户设置密码为passb):修改ssh服务配置文件并撑起服务#sed-i's/#PermitRootLoginyes/PermitRootLoginno/'/etc/ssh/sshd_config#systemctlrestartsshd
此时断开当前连接或者新开一个连接就会发现使用root用户连接不上服务器了,莫慌,使用xxx用户连接然后切换到root用户即可
SELinux(Security-EnhancedLinux)是美国国家安全局(NSA)对于强制访问控制的实现,说白了就是安全机制,当然如果会配置的话建议配置更好,这里就介绍一下如何关闭吧,哈哈哈。
#sed-i.bak's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config#修改配置文件需要重启服务器配置才会生效,如何立即生效那?#setenforce0#关闭SELinux立即生效,重启服务器后配置失效。
防火墙,不解释,内网服务建议关掉,对外开放的服务器需要配置规则,这里先关掉,关于防火墙配置规则等待后续更新。
#systemctlstopfirewalld#临时关闭#systemctldisablefirewalld#永久关闭
装机后主机名默认为localhost,这里个人想更改自己的主机名,在不搭建内网DNS的情况,能通过主机名找到本机的IP地址。
#hostnamectlset-hostnameweb01#设置主机名为web01,这样设置连配置文件里都修改了
#echo"192.168.6.6web01"/etc/hosts#192.168.6.6为本机IP
如果是云服务器,这步优化基本都被作了,如果是物理机需要执行此步
#sed-i.bak's@#UseDNSyes@UseDNSno@g;s@^GSSAPIAuthenticationyes@GSSAPIAuthenticationno@g'/etc/ssh/sshd_config#systemctlrestartsshd
说明:GSSAPIAuthentication参数是用于Kerberos验证的,而对于绝大多数人来说,不可能使用这种验证机制的,所以要注意把他们停掉。然后重启服务会发现远程连接速度有明显提升
设置服务器字符集,国际通用utf-8,根据自身业务来定
#localectlstatus#查看当前字符集SystemLocale:LANG=en_US.UTF-8VCKeymap:usX11Layout:us#localectlset-localeLANG=zh_CN.UTF-8#修改字符集为zh_CN.UTF-8,命令行和配置文件都生效#cat/etc/locale.conf#查看配置文件LANG=zh_CN.UTF-8
CentOS7.2系统默认最大打开文件限制为1024,每建立一个TCP连接既浪费一个限制(这里不细讲,后续会更新详细说明),为了提升服务器性能,所以我们要增加打开文件的最大限制
#ulimit-n#默认大小1024#echo"*softnofile65536"/etc/security/limits.conf#xi修改最大限制为65535#echo"*hardnofile65536"/etc/security/limits.conf
时间同步,这里不多说了,向OpenStack的所有节点的时间不一致会导致创建不了虚拟机,也会有其他的问题,不多说,我们生产上所有服务器时间都是同步的。
#yuninstall-yntpdate#前面已经装过了#ntpdatentp1.aliyun.com#这里同步的是aliyun的时间,公司内部建议自己搭建时间服务器(减少流量、广播等),然后加入crontab即可,内网时间服务器等待后续更新。
TCP断开连接时会有一个等待时间为2msl(60秒)对应的状态为TIME_WAIT,如果业务并发较大的话会有很多的TIME_WAIT状态(详细等待后续更新),如何来解决那?
#cat/proc/sys/net/ipv4/tcp_timestamps#时间戳,默认是开启的#cat/proc/sys/net/ipv4/tcp_tw_reuse#连接复用,tcp_timestamps是开启的状态下是可以开启的,1为开启,默认是关闭的状态。#cat/proc/sys/net/ipv4/tcp_tw_recycle#socket快速回收,net网络状态下不可以开启,负载均衡上不可以打开,读者根据自身情况开启或关闭,默认为关闭状态。
好了,服务器优化就介绍到这里,以上优化不分先后顺序!!
Centos7系统有什么特点?
CentOS7是一款基于RedHatEnterpriseLinux(RHEL)开发的免费开源操作系统。它具有以下特点:
兼容性高:CentOS7兼容大多数硬件,可以运行在多种计算机硬件平台上,包括x86、x64和ARM等处理器体系结构。
稳定性好:CentOS7采用了RHEL的源代码,在稳定性方面有很大优势。
安全性高:CentOS7安装时会自动开启防火墙和SELinux,可以有效保护系统安全。
支持软件包管理:CentOS7采用了YUM包管理器,可以方便地安装、升级和卸载软件包。
网络功能强大:CentOS7提供了丰富的网络功能,包括虚拟网络、Bonding、VLAN等,可以满足各种网络需求。
免费开源:CentOS7是一款免费开源的操作系统,可以免费下载使用。