硬件检测--认证和授权

简介:

bios告诉vmlinuz有什么硬件,vmlinuz附带了一些基本的硬件驱动,vga和鼠标,键盘等的驱动,

而其他的驱动,类似于文件系统,硬盘的驱动,则放置在initrd中,减少kernel的空间占用

如果不是第一次启动,则需要一个新旧硬件的比对,kuduz 发现新硬件,然后根据/etc/sysconfig/hwconf

如果挂接老的硬件,需要添加的参数以及如何挂接需要参考/etc/modprobe.conf

如果是新硬件,需要修改这两个文件

modules里面有硬件信息

对比modules.alias根据厂商的硬件信息,识别出新硬件的信息

模块的具体的位置存储在modules.dep,也存储了模块的依赖关系


硬件的发现过程

实验:

1,给本机添加reiserfs的模块,让系统支持rfs的文件系统

kernel.org放置的kernel不能用在企业级的

必须用redhat测试过kernel   (下载源代码,并打上补丁,生成打过补丁的源代码)

lftp ftp.redhat.com

>ls

>cd redhat


[root@localhost linux-2.6.18.i686]# uname -r确定自己的系统版本号

2.6.18-128.el5

[root@localhost tmp]# rpm -ivh kernel-2.6.18-128.4.1.el5.src.rpm 安装相应的的内核

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root 

. 这里报错是因为rpm包是官网下载打包好的,打包所使用的root用户是redhat打包时候的用户

.

.

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

[root@localhost tmp]# cd /usr/src/redhat/   进入目录

[root@localhost redhat]# ls

BUILD   RPMS   SOURCES   SPECS   SRPMS

目录分别代表什么意义

BUILD(用来执行创建rpm的工作目录)编译的中间文件,解开的原代码放那里去

SOURCES源代码文件以及patch文件,rpm默认寻找目录

SPECS此目录存放源代码编译的时候的配置文件

SRPMS半成品,放置原代码包,编译出来的src的rpm包(*src.rpm),(包含了sources+specs,为了遵循GPL的协议,公布出去)

RPMS编译后产生的所有的rpm的文件

[root@localhost redhat]# cd SPECS/

[root@localhost SPECS]# ls

kernel-2.6.spec

[root@localhost SPECS]# rpmbuild -bp --target i686 kernel-2.6.spec

(其中p把pre的部分做完#spec文件中包含了pre,post等部分

Building target platforms: i686

Building for target i686

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.2082

+ umask 022

+ cd /usr/src/redhat/BUILD

+ LANG=C

+ export LANG

+ unset DISPLAY

+ '[' '!' -d kernel-2.6.18/vanilla ']'

+ rm -f pax_global_header

+ cd /usr/src/redhat/BUILD

+ rm -rf kernel-2.6.18

.

.

.

.

+ patch -p1 -s

+ exit 0

[root@localhost SPECS]# cd ../BUILD/

[root@localhost BUILD]# ls

kernel-2.6.18

[root@localhost BUILD]# cd kernel-2.6.18/  到build目录下的kernel

[root@localhost kernel-2.6.18]# ls

config  Config.mk  linux-2.6.18.i686  vanilla  xen

[root@localhost kernel-2.6.18]# cd linux-2.6.18.i686/

[root@localhost linux-2.6.18.i686]# ls

arch     CREDITS        fs       Kbuild       Makefile  REPORTING-BUGS  sound

block    crypto         include  kernel       mm        samples         usr

configs  Documentation  init     lib          net       scripts

COPYING  drivers        ipc      MAINTAINERS  README    security

[root@localhost linux-2.6.18.i686]# uname -r

2.6.18-128.el5

[root@localhost linux-2.6.18.i686]# vim Makefile 

将    把 makefile的标识EXTRAVERSION改成当前的内核 e.g:EXTRAVERSION= -128.el5

EXTRAVERSION = -prep

修改为

EXTRAVERSION = -128.el5

保存退出


[root@localhost linux-2.6.18.i686]#make menuconfig 告诉kernel编译这个模块

File system ---->Reiserfs  support-->选择:stats...../ReiserFs..../ReiserFs....ReiserFs....

保存退出

[root@localhost linux-2.6.18.i686]# make prepare    内核预执行

scripts/kconfig/conf -s arch/i386/Kconfig

  CHK     include/linux/version.h

  UPD     include/linux/version.h

  CHK     include/linux/utsrelease.h

  UPD     include/linux/utsrelease.h

  SYMLINK include/asm -> include/asm-i386

  CC      arch/i386/kernel/asm-offsets.s

  GEN     include/asm-i386/asm-offsets.h

[root@localhost linux-2.6.18.i686]# make modules_prepare  内核模块的预执行

  CHK     include/linux/version.h

  CHK     include/linux/utsrelease.h

  HOSTCC  scripts/genksyms/genksyms.o

[root@localhost linux-2.6.18.i686]# make M=fs/reiserfs/   依赖模块要逐层make

                                           模块的具体路径

  WARNING: Symbol version dump /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/Module.symvers

           is missing; modules will have no dependencies and modversions.


  LD      fs/reiserfs/built-in.o

  CC [M]  fs/reiserfs/bitmap.o

  CC [M]  fs/reiserfs/do_balan.o

  CC [M]  fs/reiserfs/namei.o

  CC [M]  fs/reiserfs/inode.o   结束后有reiserfs.ko即所需的模块

[root@localhost linux-2.6.18.i686]# insmod fs/reiserfs/reiserfs.ko 

 #手动添加reiserfs.ko模块,位置可以在任意地方 

[root@localhost linux-2.6.18.i686]# lsmod |grep reiserfs  查看系统加载模块有没有挂接好

reiserfs              211588  0 

[root@localhost linux-2.6.18.i686]# ls

arch   configs  CREDITS  Documentation  fs       init  Kbuild  lib          Makefile  net     REPORTING-BUGS  scripts   sound

block  COPYING  crypto   drivers        include  ipc   kernel  MAINTAINERS  mm        README  samples         security  usr

[root@localhost kernel-2.6.18]# rmmod reiserfs    #删除rfs模块

[root@localhost kernel-2.6.18]# lsmod |grep reiserfs

[root@localhost linux-2.6.18.i686]#

mkdir /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs 创建文件夹

[root@localhost linux-2.6.18.i686]# install -m 755 -d /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/

[root@localhost linux-2.6.18.i686]# depmod -a 生成modules.dep文件

[root@localhost linux-2.6.18.i686]# 

grep reiserfs /lib/modules/2.6.18-128.el5/modules.dep 

[root@localhost linux-2.6.18.i686]# lsmod |grep reiserfs  查看系统加载模块有没有挂接好

reiserfs              211588  0 

[root@localhost reiserfs]# 

install -m 755 -t /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/ /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/fs/reiserfs/reiserfs.ko 

Install   -m  755  -t (单个文件)   源目标    目的目标

                   -d (整个目录)

手动拷贝需要先设定权限,copy后再给文件设置权限

安装rfs模块到指定的位置

#make install 就是调用install命令,就是将产生的文件copy到相应的位置

[root@localhost reiserfs]# depmod -a

[root@localhost reiserfs]# modprobe reiserfs

[root@localhost reiserfs]# modinfo reiserfs  查看模块的信息

filename:       /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/reiserfs.ko

license:        GPL

author:         Hans Reiser <reiser@namesys.com>

description:    ReiserFS journaled filesystem

srcversion:     75AFFF93098091BCAD10C8A

depends:        

vermagic:       2.6.18-128.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1

[root@localhost reiserfs]# module_sig红帽子的官方签名






































[root@localhost bootinitrd]# zcat initrd-2.6.18-128.el5.img | cpio -i

11745 blocks

[root@localhost bootinitrd]# ls -R

\.:

bin  dev  etc  init  initrd-2.6.18-128.el5.img  lib  proc  sbin  sys  sysroot


./bin:

dmraid  insmod  kpartx  modprobe  nash


./dev:

console  null  ram   ram1  systty  tty0  tty10  tty12  tty3  tty5  tty7  tty9   ttyS1  ttyS3

mapper   ptmx  ram0  rtc   tty     tty1  tty11  tty2   tty4  tty6  tty8  ttyS0  ttyS2  zero


./dev/mapper:


./etc:


./lib:

ata_piix.ko      dm-message.ko  dm-region_hash.ko  firmware   mptbase.ko   ohci-hcd.ko  scsi_transport_spi.ko  vmxnet3.ko

dm-log.ko        dm-mod.ko      ehci-hcd.ko        jbd.ko     mptscsih.ko  pvscsi.ko    sd_mod.ko              vmxnet.ko

dm-mem-cache.ko  dm-raid45.ko   ext3.ko            libata.ko  mptspi.ko    scsi_mod.ko  uhci-hcd.ko


./lib/firmware:


./proc:


./sys:


./sysroot:




权限和认证

login 我是谁

su 我想成为谁

sudo 我想作某件事情,可以作某件事情,需要作一件事情,授权

授权在suid sgid

使用这个文件的时候拥有文件拥有者的权限

sgid,某个组的权限


认证可以有多种方式,passwd+shadow 标准unix的认证方式,login调用一个 pam的模块,pam.so,包括pamunix.so pam.md5.so

login把用户给的用户名字和密码给pam判断是否成功,然后给login返回信息成功还是不成功

认证本身和程序相关,如果程序需要的话,就需要

NIS 是远端的yppasswd ypshadow

如果login包含认证,则需要重新写程序,但是现在只需要写程序,需要修改的用模块的定义

认证不止是su在用,login,

可插入性的认证方式的好处,统一认证,与程序无关,用户透明  (pam机制)



授权,要给用户授权要有一个基准

配置,可以是文件本身上的认证 (suid sgid acl权限,

附加授权权限 setfacl,为了和windows连用,

为了使文件被kevin写,tube读,told写,mark读,如果还有一个其他的用户,则不方便设置


实验2

#mount -o remount,acl /myfiles/

给某一个分区作

#cd /myfiles/testdir 

#mkdir dir 

#setfacl -m u:kevin:rwx dir 

m是modules u用户还是组,kevin用户还是组名 

#getfacl dir

kevin有了rwx的权限


使用acl使的系统性能下降17%

需要去查看用户的权限,然后去比对


htpasswd也是一种授权方式,mysql的用户的认证,哪些用户能对哪些表做什么事情


安全也就是授权和认证

认证和授权都是针对程序的,程序本身不需要授权,则可以跳过去




从用户登录开始,

login登录的提示符,登录的认证程序,inittab 产生的 tty终端调用的login,如果调用的是需要认证的则去找pam机制

终端登录调用的是允许在哪些终端登录,在/etc/securetty

判断是否有nologin的文件,如果存在,普通用户是不可以登录的

passwd认证是否存在该用户,是否可以登录shell

用户的

(0,多长时间可以改密码

最后是0或者1,则不能登录)

shadow看用户是否过期了


minetty --autologin root tty1

跳过认证自动登录

man minetty查看参数


/etc/pam.d/login

去查看/etc/nologin是否存在,如果存在,则不允许登录

进去了,但是被T出来了


tty错误/etc/securetty,删除了tty3,则tty3不允许的登录

从安全的角度考虑,一般只开两个tty的登录许可


tty调用的pam.d/login



登录管理器 gdm 用的不是login



2,用户登录


3,motd文本的信息


4,pam决定了家目录的位置,如果是本地的则去找 /etc/passwd,进入到/


5,启动shell,csh,tcsh,zsh,nash 

判断用户使用哪种shell

执行/etc/profile下面的*.sh

系统有很多的shell,需要各自的环境,以单独的一个文件放置到 profile

conf 其中conf.d设置的是为了修改局部的配置,而不影响整体的配置


图形登录的时候执行xterm的,bash子 shell,之后执行bashrc

tty的时候先读取.bash_profile后,执行bashrc


用户自己决定是否执行 /etc/bashrc


退出的时候不保留记录 kill -9 0


/etc/skel包含了profile,bashrc等配置文件,添加用户的时候拷贝过去

可以放置木马


initrd.img只需要放置本地启动需要的

安装需要防止所有可能的模块,可能需要各种板卡的驱动


1,用于启动的initrd.img

cp /boot/initrd*.img

mkdir /tmp/bootinitrd

zcat ../initrd*.img | cpio -i 

#-i input

#cpio用在纸带机上

#tar最早用在磁带机


dmraid lvm如果根是 raid 或者lvm则能识别出来


kpartx硬件虚拟化 mutipath

双hba卡+一个storage

两个卡认到2个设备

虚拟成一个设备



cd bootinitrd 

#解压开来

zcat ../initrd-2.6.18-128.el5.img | cpio -i

去掉lib中的ext3.ko,然后重新生成

#重新生成

find ./ | cpio -H newc -o > ../initrd.my

#以最高压缩比压缩

gzip -9 initrd.my


2,用于安装的 initrd.img

mkdir installinitrd

cd !$


解压开来之后

modules/pci.ids

作业:

查找pci.ids在系统中的哪个位置

dmesg

pci.ids由org提供


mkdir modules

mkdir 2.6.18-164.el5/i686/


zcat ../* | cpio -i


el4 initrd的制作方法

ext2的initrd

dd if=/dev/zero of=/tmp/initrddir bs=1M count=8

mkfs.ext2 initrddir

mount 

cp -a bootinitrd initrddir

gzip -9 initrddir


initrd.img然后去lib/modules-modules_alias 先去比对,然后去.dep去找位置



本文转自 xxl714 51CTO博客,原文链接:http://blog.51cto.com/dreamgirl1314/1606141,如需转载请自行联系原作者

相关文章
|
2月前
|
人工智能 安全 网络安全
OpenAI:启用多重身份验证功能MFA
【2月更文挑战第22天】OpenAI:启用多重身份验证功能MFA
28 1
OpenAI:启用多重身份验证功能MFA
|
12月前
|
网络协议 安全 数据安全/隐私保护
带你读《自主管理身份:分布式数字身份和可验证凭证》——第1章 为何互联网缺少身份层—为何 SSI可以为其提供身份层
带你读《自主管理身份:分布式数字身份和可验证凭证》——第1章 为何互联网缺少身份层—为何 SSI可以为其提供身份层
带你读《自主管理身份:分布式数字身份和可验证凭证》——第1章 为何互联网缺少身份层—为何 SSI可以为其提供身份层
|
12月前
|
安全 数据安全/隐私保护 物联网
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
|
12月前
|
存储 安全 物联网
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
|
JSON 安全 前端开发
如何认证当前的操作用户?
如何认证当前的操作用户?
|
云安全 安全 语音技术
身份标识和认证技术|学习笔记
快速学习身份标识和认证技术
409 0
|
运维 监控 安全
Linux 认证授权及用户定义及组的类别 | 学习笔记
快速学习Linux 认证授权及用户定义及组的类别
124 0
Linux 认证授权及用户定义及组的类别 | 学习笔记
身份识别工具
本文研究全球及中国市场身份识别工具现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势
|
存储 供应链 安全
如何实现用户通信授权的可信、可知、可追溯?——通信授权服务技术解读
12月9日,阿里云新品发布会第118期,基于区块链技术的通信授权服务正式发布。阿里云通信高级产品经理帛扬与蚂蚁链平台产品专家攻玉从通信授权的技术难点、实现路径入手,深入解读了通信授权服务的产品特征、业务流程以及其背后的蚂蚁链授权宝的应用及技术价值。
5562 0
如何实现用户通信授权的可信、可知、可追溯?——通信授权服务技术解读