关于 开机启动加密破坏修复 自制linux系统

 

   开机破坏并且修复之   

   自制linux系统 

 

 

 

        CentOS 6启动流程:

POST –> Boot Sequence(BIOS) –> Boot Loader –>

Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init —

>(/etc/inittab, /etc/init/*.conf) –> 设定默认运行级别–> 系统

初始化脚本rc.sysinit –> 关闭或启动对应级别的服务–> 启动终端

grub: GRand Unified Bootloader

grub 0.x: grub legacy

grub 1.x: grub2

grub legacy:

            stage1: mbr

            stage1_5: mbr之后的扇区,让stage1中的bootloader

能识别stage2所在的分区上的文件系统

stage2:磁盘分区(/boot/grub/)

=================================================================

开机加密口令 防止单用户恶意破解口令

生成加密口令

第一步:

[root@Compro ~]# grub-md5-crypt

Password: 输入口令时不显示

Retype password: 输入口令时不显示

$1$6lDgy$WpWXTfAKA/mcC6goW90If.    这个就是加密过后的口令

下面命令也是可以生成加密口令的

openssl passwd -1

xxxxxx

xxxxxx

第二步:

在配置文件中 :vim /boot/grub/grub.conf

添加 :第一个title开的的字符上方 添加加上 password –md5 加密过的口令

例如:

password –md5 $1$6lDgy$WpWXTfAKA/mcC6goW90If 

title CentOS 6 (2.6.32-642.el6.x86_64)

        root (hd0,0)

然后保存重启

第三步:

开机开始的时候任意键进入菜单界面:这是单用户的ace等口令是无效的,提示输入p 会让输入passwd:也就是刚才上面保存过的加密口令;输入成功则显示出来ace等口令,输入就可以进入单用户修改口令,当然如果在不知道加密口令的用户直接敲回车会正常启动,防止了恶意破解口令

也可以将加密的口令放在配置文件的前后,放在前面是防止进入单用户界

password –md5 $1$6lDgy$WpWXTfAKA/mcC6goW90If

title CentOS 6 (2.6.32-642.el6.x86_64)

        root (hd0,0)

        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_compro-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_compro/lv_swap crashkernel=auto.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_compro/lv_root rd_NO_DM rhgb quiet

        initrd /initramfs-2.6.32-642.el6.x86_64.img

        password 口令

在末尾添加加密口令是 启动开始的大概几秒钟,直接弹出来passwd:输入加密的口令登录启动系统

================================================================

开机任意键进入菜单界面的一个背景图片

在配置文件中找到以下字符

splashimage=(hd0,0)/grub/splash.xpm.gz

修改背景

1 先做一张分辨率640*480的图 命名为bjtp 上传系统家目录中

2 安装一个linux的修图工具

[root@Compro ~]# yum -y install ImageMagick

3 转换图片格式

[root@Compro ~]# convert -resize 640×480 -colors 14 bjtp.png bjtp.xpm

查看格式

[root@Compro ~]# more bjtp.xpm

压缩

[root@Compro ~]# gzip bjtp.xpm

拷贝到grub

[root@Compro ~]# cp  bjtp.xpm.gz /boot/grub/

修改配置文件

[root@Compro ~]# vim /boot/grub/grub.conf

splashimage=(hd0,0)/grub/bjtp.xpm.gz    将文件名称修改一下就可以了

重启reboot开机过程中按下任意键进入菜单的界面,这是还就可以看到刚刚修改的图片了

==================================================================

破坏第1阶段并且修复

[root@Compro ~]#  dd if=/dev/zero of=/dev/sda bs=1 count=446

然后查看一下

[root@Compro ~]#  hexdump -C -v /dev/sda -n 512

重启reboot 这时候会无法启动 启动的时候自动进入光盘引导界面,这时候选择第三项救援模式

修复:

进入救援模式下的shell界面切根

bash-4.1# chroot /mnt/sysimage/

bash-4.1# grub-install /dev/sda

bash-4.1# exit

bash-4.1# exit

reboot重启就好了

================================================================

破坏第1.5阶段并且修复

[root@Compro ~]# dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1

[root@Compro ~]# hexdump -C -v /dev/sda -n 1024

重启后手动光盘引导进入救援模式shell界面

输入命令grub

bash-4.1# grub> root (hd0,0)

grup> setup (hd0)

grup> quit 

bash-4.1# exit

reboot重启就好了

=================================================================

删除/grub目录所有内容

[root@Compro ~]# rm -rf /boot/grub/

[root@Compro ~]# reboot 重启

开机手动光盘引导进入救援模式

bash-4.1# chroot /mnt/sysimage

bash-4.1# cd /boot

bash-4.1# grub-install /dev/sda

bash-4.1# cd /boot/grub/       这时候没有grub.conf配置文件需要手写一份

bash-4.1# exit

bash-4.1# exit

reboot 重启

启动界面会提示grub> 输入内容

grub> kernel (hd0,0)/vmlinuz….. root=/dev/sda2

grub> initrd (hd0,0)/initramfs…. 

grub> boot

修过过程中再次提示输入上面的命令不过在之前开头加上grub> root (hd0,0)就ok了

创建vim /boot/grub/grub.conf

default=0

timeout=5

title Compro

root(hd0,0)

kernel /vmlinuz-2.6… root=/dev/sda2

initrd /inirtamfs….

==========================================================

删除boot目录并且恢复之 (大招,一招致命,解决 以上所有破坏)

[root@Compro ~]# umount /boot

[root@Compro ~]# rm -rf /boot

[root@Compro ~]# reboot

直接进入救援模式

bash-4.1# mkdir /mnt/cdrom

bash-4.1# mount /dev/cdrom /mnt/cdrom

bash-4.1# rpm -ivh /mnt/cdrom/Pachages/kernel-2* –root=/mnt/sysimage –replacepkgs 或者 force

bash-4.1# chroot /mnt/sysimage/

bash-4.1# grub-install /dev/ada

bash-4.1# vim /boot/grub/grub.conf

default=0

timeout=3

title Compro

root (hd0,0)

kernel /vmlinuz… root=/dev/sda2

initrd /initagfs  ….

==================================================================

自制Linux系统:

添加新的硬盘,用 [root@Compro ~]# echo '- – -' > /sys/class/scsi_host/host2/scan   加载

1分区并创建文件系统

[root@Compro ~]# fdisk /dev/sdb

分两个必要的分区

/dev/sdb1对应/boot /dev/sdb2对应根/

[root@Compro ~]# mkfs.ext4 /dev/sdb2

[root@Compro ~]# mkfs.ext4 /dev/sdb2

2挂载boot

[root@Compro ~]# mkdir /mnt/boot

[root@Compro ~]# mount /dev/sdb1 /mnt/boot/

[root@Compro ~]# cd /mnt/boot/

[root@Compro boot]# cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /boot/initramfs-2.6.32-642.el6.x86_64.img .

3安装grub

[root@Compro boot]# grub-install /dev/sdb –root-directory=/mnt

4、建立grub.conf:

[root@Compro boot]# cd grub/

[root@Compro grub]# vim grub.conf

default=0

default=0

timeout=3

title Compro

root (hd0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs-2.6.32-642.el6.x86_64.img

5、创建一级目录

[root@Compro ~]# mkdir /mnt/sysroot

[root@Compro ~]# mount /dev/sdb2 /mnt/sysroot/

[root@Compro ~]# cd /mnt/sysroot/

[root@Compro sysroot]# mkdir -pv {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}

6、[root@Compro sysroot]# vim etc/fstab

/dev/sda1 /boot ext4 defaults 1 1

/dev/sda2  /    ext4 defaults 1 2

8、复制bash和相关库文件 复制相关命令及相关库文件

如:ls,cat,vim,reboot,hostname等  

这里使用的是脚本

[root@Compro sysroot]# /root/copycmd.sh

Please input a command: bash

Please input a command or quit: vim

Please input a command or quit: cat

Please input a command or quit: ls

Please input a command or quit: ifconfig

Please input a command or quit: df

Please input a command or quit: mount

Please input a command or quit: umount

Please input a command or quit: rpm

Please input a command or quit: reboot

Please input a command or quit: hostname

Please input a command or quit: halt

Please input a command or quit: quit

这里已经完成了,下面看脚本内容

#!/bin/bash 

ch_root="/mnt/sysroot"

[ ! -d $ch_root ] && mkdir $ch_root 

bincopy() {

    if which $1 &>/dev/null; then

        local cmd_path=`which –skip-alias $1`

        local bin_dir=`dirname $cmd_path`

        [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}

        [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}

        return 0

    else

        echo "Command not found."

        return 1

    fi

}

libcopy() {

    local lib_list=$(ldd `which –skip-alias $1` | grep -Eo '/[^[:space:]]+')

    for loop in $lib_list;do

        local lib_dir=`dirname $loop`

        [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}

        [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}

    done

}  

read -p "Please input a command: " command 

while [ "$command" != "quit" ];do

    if bincopy $command ;then

        libcopy $command

    fi

    read -p "Please input a command or quit: " command

done

=====================================================================

原创文章,作者:小马哥,如若转载,请注明出处:http://www.178linux.com/46532

(0)
小马哥小马哥
上一篇 2016-09-14
下一篇 2016-09-15

相关推荐

  • PHP字符串的编码问题

        大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。     PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。     使用substr截取中…

    Linux干货 2015-10-22
  • rpm包管理

    一、概述 RPM 是RPM Package Manager(RPM软件包管理器)的缩写。由redhat公司的Redhat package manager改名而来,成了RedHat的工业标准 二、rpm的命名格式: rpm包的命名格式:name-version-relase.arch.rpm version: major.minor.release,同源代码 …

    Linux干货 2015-10-07
  • Python入门之闭包,匿名函数,过滤器,映射器,折叠

    在学习python函数的过程中,函数的高阶应用包括闭包lambda函数,过滤器等都让我头痛不已.接下来我把课堂中听到的笔记进行整理,再写一遍,希望在提醒自己的同时也能帮助到别人. 首先,我们来看一下什么是闭包,闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见…

    Linux干货 2015-12-19
  • 用户与组管理

    如何成为linux用户?     在linux系统中,要想从系统中获取资源、对系统进行管理和控制,就需要向系统申请一个账号,从而实现特定用途,当申请到账号后,要对它设置口令,这样用户账号就申请成功了,然后可以登陆系统,当用户登陆系统时,需要通过系统的认证,认证成功后才给予授权,在用户的使用过程中还会对用户进行审计。 为什么要设置…

    Linux干货 2016-08-08
  • Linux的SOCKET编程详解

    1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal) UNIX system V有:消息(message)、共享存储区…

    Linux干货 2015-04-10
  • PHP5.4的变化关注—What has changed in PHP 5.4.x

    What has changed in PHP 5.4.x Most improvements in PHP 5.4.x have no impact on existing code. There are a few incompatibilities and new features that should be …

    Linux干货 2015-06-17

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-20 11:10

    内容很完整,操作性强,赞一个,