关于 开机启动加密破坏修复 自制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 20:42
下一篇 2016-09-15 13:19

相关推荐

  • redis主从复制(1)— 慢查询导致复制中断

    redis的异常行为是一件令人头疼的问题。redis提供的错误日志只提供了一些server的运行状态信息,而没有server在故障现场的操作日志,比如执行了什么命令,命令操作对象的数据结构信息。如果redis也有mysql的slow-log,那么很多性能和故障问题也很容易处理。1、redis rdb在redis2.8版本以前,redis主从数据复制在生产上存…

    Linux干货 2016-04-12
  • Hadoop集群配置(最全面总结)

    通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves\ 官方地址:(http://hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.ht…

    Linux干货 2015-04-13
  • LAMP平台基于NFS实现web服务器负载均衡

    前言 随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步。 NFS服务介绍 NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问…

    Linux干货 2015-04-22
  • 日志收集工具EFK之fluent部署手稿

    Edit EFK fluent部署安装 1. 环境介绍 Centos 6.5 64bit 2. 安装 td-agent介绍 fluent 考虑到灵活可扩展性,使用Ruby编写,部分功能考虑性能使用C语言编写。普通用户安装操作Ruby daemon还是有一定难度的。考虑到flunt的上手难度, fluent专门发布了稳定发布包,就也是所谓的td-agent. …

    Linux干货 2016-03-24
  • linux多网卡绑定

    为了增加网络牢固性,linux服务器通过多块网卡来实现网卡冗余或链路聚合、负载均衡的技术。网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援…

    系统运维 2016-06-23
  • 优云Automation:实现IT服务弹性伸缩的利器

    随着互联网业务快速持续增长,IT资源使用量按需变化成为常态,这就要求信息部门能快速响应资源使用的变化要求,对运维提出不小挑战。比如电商、在线教育等企业经常推出一些秒杀、抢红包活动,在特定时间段对资源的利用处于高峰期,之后基本处于空闲。 几年前,我们从申请采购到应用部署上线都只能人工操作,需要提前几个月开始规划。如今通过云平台能很好实现资源按需动态管理,运维人…

    系统运维 2017-03-15

评论列表(1条)

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

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