回顾SSH 和SSL 协议+系统自动化安装 : PXE服务

来源:互联网 发布:openwrt 网络摄像头 编辑:程序博客网 时间:2024/05/16 02:44

安全和加密实现原理

***************************************************************************************************

ssl 、openssl、ssh、openssh 是什么

SSL 协议

国际标准的加密及身份认证通信协议。SSL 通信协议使用通信双方的客户证书即CA 证书,在通信双方之间建立起受双方信任的。安全的通信通道。值得注意的是,SSL 协议本身不实现主机登录的功能,需要配合其他的应用层协议,如SSH协议、FTP协议等。

OpenSSL

是一个C语言函数库,是对SSL 协议的实现。OpenSSL有一个叫做 openssl 的命令行工具,相当于 OpenSSL 中的库的命令行接口。

SSH 协议

SSH实现了主机用户名和密码的认证。通过使用 SSH ,可以把所有传输的数据进行加密,可以防止类似“中间人”的攻击,而且能够防止DNS和IP 的欺骗,且传输的数据是进行过压缩的。SSH 提供两种级别的认证:
1、基于口令的验证
- 客户端通过 ssh 向客户端发起练级请求,服务器端会把自己的公钥发送给客户端;
- 客户端登录时,服务器端首先用自己的私钥对一串数据进行加密,向客户端发送验证,客户端用服务器的公钥进行进行解密,如果成功,则客户端连接的服务器是安全的;
- 然后,客户端再对密码用自己的私钥进行加密,发送给服务器端;
- 服务器端用客户端的公钥进行解密,如果成功,则用户登录成功。

注意
客户端首次远程连接服务器端时,需要回答“yes/no”,作用是将服务器端的公钥复制到本机的.ssh/know_hosts 文件里面去,此文件记录了客户端连接过的服务器端的IP地址及其对应的公钥。当客户端要连接的服务器的IP 被其他服务器占用时,客户端再次连接则会报错

2、基于密钥的验证 :原理
- 首先在客户端生成一对密钥(使用命令:ssh-keygen)
- 并将在客户端生成的公钥拷贝到服务端(使用命令:ssh-copy-id),且生成且存放在服务器端的/root/.ssh/authorized_keys 文件中
- 当客户端再次向服务器端发送连接请求时,服务器端会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf
- Server 将字符串用客户端的公钥进行加密,发送给Client
- Client 用自己的私钥解密,然后将解密后的字符串再次发送给Server
- Server 接受到 Client 发来的字符串后,和之前的进行对比,如果一致,则允许Client登录

OpenSSH

是SSH 协议的免费开源实现,为Server 和 Client 提供基于SSH 协议进行通信的工具,用来加密远程控件和文件传输过程中的数据。通俗点讲,提供了我们生成密钥、传输密钥以及加密数据等程序工具

可以简单的理解SSH 和SSL 的关系为 :SSH = SSL + 有主机用户登录功能等的应用程序(如果没有理解正确的话 ,请指出)

参考:http://blog.csdn.net/ocean1010/article/details/6950924

系统自动化安装

***************************************************************************************************

安装系统的两个主要阶段

系统引导安装阶段

作用 : 引导加载用户选择的内核及向其传递的参数

过程:
- 读取isolinux/boot.cat 文件,相当于grub 的stage1 ,目的是引导文件加载isolinux.bin ;
- isolinux/isolinux.bin 程序,首先此此程序读取isolinux.cfg 文件,给用户提供一个系统安装的菜单标签,用户进行选择其要加载的内核,不同的菜单标签在此处主要是内核参数不同 ,然后,根据用户选择的的标签,开始anaconda 的安装阶段 ;

anaconda 安装系统阶段

anaconda 是什么

Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。

anaconda 支持的管理模式

  • Kickstart 提供的自动化安装 ;
  • 对一个RedHat实施upgrade;
  • 救援模式下对不能启动的系统进行故障排除 ;

参考:http://www.cnblogs.com/lpfuture/p/5703555.html

PXE 服务

***************************************************************************************************

PXE 是什么

Preboot eXecution Environment , 预启动执行环境,是一种协议。提供了一种使用网络接口来启动计算机的机制。PXE 协议分为 Server 和Client 两端,PXE Client 在网卡的ROM中,当计算机引导时,BIOS 把PXE client 调入内存执行,并显示已经配置好了的命令菜单,经用户选择后,PXE Client 将存放在远端服务器上的操作系统,通过下载到本地运行

PXE 适用场景

没有软驱或者光驱

很多公司为了节约成本,计算机一般不带软驱或者光驱,所以也就无法完成 linux 的本地安装

非标准的软驱或者光驱

linux 内核中,不带非标准的软驱或者光驱的驱动,也就无法完成本地安装

计算机数量大

需要同时安装大量的计算机时,拿着光驱去安装 系统,显然不现实

PXE 服务成功运行的两个关键

关键问题

1、需要安装系统的 Client 端在启动时,需要如何被分配一个IP 地址,来进行网路传输 ?

2、client 安装linux 系统 ,要如何下载 linux 内核 和根文件系统 ?

解决办法

1、在DHCP Server 给PXE client 分配一个和PXE server 同一网段中的IP 地址,DHCP Server 在进行分配IP 时 ,会针对 PXE 协议增加特有配置 ;

2、PXE client 会通过使用TFTP client ,通过TFTP 协议到TFTP 上下载所需要的文件 .

参考 :https://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-pex/index.html

PXE 服务工作时涉及程序和文件

光盘中的isolinux 目录下的文件:主要用来引导加载内核和向其传递的参数
  • ~isolinux/isolinux.bin
    对所有光盘都一样的isolinux 提供的引导介质 isolinux.bin . 其配置文件为isolinux.cfg ,当计算机通过光盘引导启动后,isolinux.bin 程序会读取其配置文件isolinux.cfg ;

  • ~isolinux/isolinux.cfg
    isolinux.bin 程序的配置文件,定义了不同的安装策略,对于光盘安装来说,不同的安装策略其所选择的kernerl 和initrd 是一样的,但是向内核传递的参数是不同的

  • ~isolinux/vmlinuz 和 ~isolinux/initrd.img
    即安装时选择的kernel 和initrd

  • ~isolinux/vesamenu.c32
    光盘启动后的安装图形界面

  • ~isolinux/splash.jgp
    光盘启动后的背景图

配置PXE 时生成和创建的目录文件

  • syslinux
    是一个功能强大的引导加载程序,可以从硬盘或者光盘或者PXE 的网络引导启动系统。包含了各种可以引导安装不同操作系统的 bootloader 。 其中pxelinux.0 就是用来引导安装 linux 操作系统的 ;

  • pxelinux.0
    是一个安装系统时的网络引导程序 。 其工作方式是根据配置文件(位于TFTP 服务器上)来提供引导指令。所以要将安装系统时的“安装树” 存放在TFTP 服务器上 ;

  • /var/lib/tftpboot
    安装tftp-server 生成的目录,主要作用类似于光盘中的isolinux 目录,定义了系统安装时的“安装树”

  • /var/lib/tftpboot/pxelinux.cfg/default
    系统安装时的引导kernel和initrd的文件,一般由复制isolinux.cfg 文件而来,再对其进行相应的修改

此外,还需在在web 服务器 上提供相关文件

PXE 服务工作过程

client 向PXE server 所在的服务器发送请求 IP地址的消息; DHCP 检测Client是否合法(主要是检测Client 的网卡MAC 地址是够合法) ,若合法,则给其分配一个IP 地址,用来给PXE client 访问PXE 的web 服务器使用。同时,将启动程序pexlinux.0 的位置信息一并传输给client ; client 向PXE server 中的 TFTP 服务发送获取pxelinux.0 的请求消息 ; TFTP 接收到client 的请求pxelinux.0 的消息之后,向client 发送 ; 当TFTP 收到client 发回的同意的消息之后,正式向PXE client 发送pxelinux.0 的程序 ; Client 执行接收到的pxelinux.0 client 向PXE serve 发送请求消息,请求针对本机安装时要用到的配置信息文件(用来引导安装kernerl 和initrd ),就是 TFTP 服务器上的pxelinux.cfg 目录之下 default 文件 ; TFTP 将配置文件发回给PXE client ,然后client 根据配置文件提示用户进行显示安装时要使用的kernerl 和对应的initrd 文件,会通过一个标签进行显示 ; client 根据用户选择的安装标签向TFTP 发送请求kernel 和其对应的initrd文件的消息,TFTP 接收到消息之后,将文件发回给 client ; client 读取安装kernerl 的引导配置文件,并在里面读取到了kickstart 文件的位置,然后到相应的位置读取kickstart 文件 ; client 根据kickstart 文件中设置完成系统的自动化安装 ; client 完成系统的自动化安装时,要用到的程序包所在的yum 仓库可以在两个地方指明:1、在安装引导配置文件中,向内核传递的参数中指明yum 仓库的位置 ; 2、在kickstart 文件中使用 “url –url=” 进行指明 至此,PXE 实现系统自动化安装的过程完成

搭建安装不同版本的linux 系统的PXE Server

前提准备

关闭防火墙

  • CentOS 6
    1、临时 :chkconfig iptables off
    2、永久 :service iptables stop

  • CwntOS 7
    1、临时 :systemctl stop firewalld
    2、永久:systemctl disabled firewalld

  • 或者
    iptables -F

关闭 selinux

实现搭建可安装CentOS 6 和 7 的系统自动化服务的过程

1、下载相关程序包
yum install all tftp-server dhcpd dhsp syslinux system-config-kickstart

2、配置DHCP 服务,使其能够为PXE client 提供分配IP 的功能,并指明 pxelinux.0 的所在的位置

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf*    vim /etc/dhcp/dhcpd.conf  以下是需要在dhcp中设置的主要内容            option domain-name "magedu.com";            option domain-name-servers 172.18.0.1, 114.114.114.114;            subnet 172.18.0.0 netmask 255.255.0.0  {                  range 172.18.18.7  172.18.18.15;                  filename "pxelinux.0";                  next-server 172.18.18.6;            }

3、开启tftp 、dhcpd、httpd服务,他们分别监听的端口为,可通过ss -untlp 进行查看
- tftp 69
- httpd 80
- dhcpd 67

4、使用web 服务提供kickstart 文件并且通过挂载光盘,创建yum 源,使PXE client 能够通过web 服务自动安装应用程序

    mkdir /var/www/html/centos/{6,7}    mount /dev/sr0 /var/www/html/centos/6    mount /dev/sr1 /var/www/html/centos/7

系统自动化安装时,将会读取kickstart 或者max6.9.cfg(加载引导文件)中关于yum 仓库的路径,然后从此处安装用户所需要的程序包

5、准备加载引导设备的相关文件,分别为6和7 创建一个目录.其中,6和7 的光盘挂载在不同的目录之下

 mkdir /var/lib/tftpboot/{max6.9,max7.3}    cp /dev/media/isolinux/{initrd.img,vmlinuz,vesamenu.c32} /var/lib/tftpboot/max6.9     cp /dev/media/isolinux/{initrd.img,vmlinuz,vesamenu.c32,meun.c32} /var/lib/tftpboot/max7.3    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

系统安装时,pxe 服务会将pxelinux.0 程序发送给客户端,用来引导加载linux的安装启动然后,客户端读取引导加载设备文件之后,将从此处加载用户选择的内核、initrd

6、配置引导加载设备文件,拷贝一份进行修改即可,且在pxe中需更改名字为default

cp /var/www/html/centos/6/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

7、修改引导加载设备文件:default,在里面设置我们自己要添加的菜单标签

 vim /var/lib/tftpboot/pxelinux.cfg/default     label max7.3        menu label ^autoa install CentOS Linux 7        menu default        kernel max7.3/vmlinuz        append initrd=max7.3/initrd.img ks=http://172.18.18.6/max7.cfg    label max6.9          menu label  Install ^CentOS max6.9          kernel max6.9/vmlinuz          append initrd=max6.9/initrd.img ks=http://172.18.18.6/max6.9.cfg     label manual6.9        menu label  ^Install CentOS max6.9 in manual          kernel max6.9/vmlinuz          append initrd=max6.9/initrd.img inst.repo=http://172.18.18/centos/6

inst.repo 表示不需要使用kickstart 文件,手动从yum 源中选择要安装的程序包

8、分别设置kickstart 文件,使pxe 能完成不同的系统版本自动化安装,并且此文件映射在web服务之下,PXE client 可用直接从web 服务中读取。注意权限

    vim /var/www/html/max6.9.cfg (需要进行修改的地方主要是)        注释掉cdrom ,因为不再是光盘中直接进行安装,而是从网络中获取yum 源         添加: 网络中的yum 源,这里是httpd 服务,也可以是ftp            #Use network installation            url --url="http://172.18.18.6/centos/7"        #设置清空分区表            zerombr        #设置格式化磁盘分区            clearpart --all        #设置启动网络            network  ... --onboot=on        #设置图形化界面安装或者字符界面安装            graphical |text        #设置禁用selinux            selinux --permissive        #设置安装后重启            reboot        #如果是centos7 ,则可以添加安装autofs 的程序包,并开启直接在程序包段添加            autofs        #设置脚本:安装后添加yum仓库            %post            systemctl enable autofs (安装后开启autofs)            rm -rf /etc/yum.repos.d/*            cat > /etc/yum.repos.d/base.repo <<eof            [base]            ...            %end        #以及其他想要进行的设置

注:关于6和7 的kickstart 文件,先从其他地方进行拷贝,然后根据自己的需要直接修改即可

至此,安装完成。关于PXE 二次封装的服务 cobbler ,将在下一篇博客中和DNS 一起介绍。