[关闭]
@mrz1 2018-01-06T20:14:55.000000Z 字数 10698 阅读 1153

2018-1-2课程笔记(systemctl 加密)

笔记


systemd

  1. POST --> Boot Sequence --> Bootloader --> kernel + initramfs(initrd) --> rootfs--> /sbin/init
  2. init:
  3. CentOS 5: SysV init
  4. CentOS 6: Upstart
  5. CentOS 7: Systemd

Systemd:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程

Systemd新特性:

核心概念:unit

Unit类型

特性

关键特性:

不兼容:

管理服务

服务查看

chkconfig命令的对应关系:

服务状态

systemctl 命令示例

service unit文件格式

unit文件格式

Service段的常用选项:

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启systemctl daemon-reload

服务Unit文件示例:

  1. vim /etc/systemd/system/bak.service
  2. [Unit]
  3. Description=backup /etc
  4. Requires=atd.service
  5. [Service]
  6. Type=simple
  7. ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
  8. [Install]
  9. WantedBy=multi-user.target

运行级别

  1. target units
  2. unit配置文件:.target
  3. ls /usr/lib/systemd/system/*.target
  4. systemctl list-unit-files --type target --all
  5. 运行级别:
  6. 0 ==> runlevel0.target, poweroff.target
  7. 1 ==> runlevel1.target, rescue.target
  8. 2 ==> runlevel2.target, multi-user.target
  9. 3 ==> runlevel3.target, multi-user.target
  10. 4 ==> runlevel4.target, multi-user.target
  11. 5 ==> runlevel5.target, graphical.target
  12. 6 ==> runlevel6.target, reboot.target
  13. 查看依赖性:
  14. systemctl list-dependencies graphical.target
  15. 级别切换:
  16. initN ==> systemctl isolate name.target
  17. systemctl isolate multi-user.target
  18. 注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换(修改文件需执行systemctl daemon-reload才能生效)
  19. 查看target
  20. runlevel; who -r
  21. systemctl list-units --type target
  22. 获取默认运行级别:
  23. /etc/inittab==> systemctl get-default
  24. 修改默认级别:
  25. /etc/inittab==> systemctl set-default name.target
  26. systemctl set-default multi-user.target
  27. ls l /etc/systemd/system/default.target
  28. 其它命令
  29. 切换至紧急救援模式:
  30. systemctl rescue
  31. 切换至emergency模式:
  32. systemctl emergency
  33. 其它常用命令:
  34. 传统命令initpoweroffhaltreboot都成为systemctl的软链接
  35. 关机:systemctl haltsystemctl poweroff
  36. 重启:systemctl reboot
  37. 挂起:systemctl suspend
  38. 休眠:systemctl hibernate
  39. 休眠并挂起:systemctl hybrid-sleep

CentOS7引导顺序

设置内核参数

启动排错

破解CentOS7的root口令方法一

破解CentOS7的root口令方法二

centous7设置默认启动内核,并删除

配置文件 :/boot/grub2/grub.cfg
修改:/etc/default/grub GRUB_DEFAULT=saved saved改为0
grub2-mkconfig -o /boot/grub2/grub.crg 重新生成

删除没用的内核
/boot/ 和 /lib/modules/ 里面内核版本的东西 3.10.0.xxxx
grub2-mkconfig -o /boot/grub2/grub.crg 重新生成

修复GRUB2

grub.cfg破坏

删除boot下所有

  1. 进入救援模式
  2. 输入 1 continue
  3. 2 进入shell
  4. chroot /mnt/sysimage
  5. mkdir /mnt/cdroom
  6. mount -o /dev/cdroom /mnt/cdroom
  7. rpm -ivh /mnt/cdroom/Packages/kernel-3.10.0.693.e17.x86.rpm --force
  8. grub2-install /dev/sda
  9. 修复配置文件grub2-mkconfig > /boot/grub2/grub.cfg
  10. exit
  11. reboot

练习

  1. 为编译安装的httpd服务,实现service unit文件
  2. 破解centos7 口令
  3. 修改默认的启动内核为新编译内核
  4. 启动时临时禁用SELinux
  5. 启动时进入emergency模式
  6. 卸载编译安装的新内核

加密和安全

墨菲定律

安全机制

信息安全防护的目标 内容
保密性 Confidentiality
完整性 Integrity
可用性 Usability
可控制性 Controlability
不可否认性 Non-repudiation
安全防护环节 内容
物理安全 各种设备/主机、机房环境
系统安全 主机或设备的操作系统
应用安全 各种网络服务、应用程序
网络安全 对网络访问的控制、防火墙规则
数据安全 信息的备份与恢复、加密解密
管理安全 各种保障性的规范、流程、方法
安全攻击 STRIDE
假冒 Spoofing
篡改 Tampering
否认 Repudiation
信息泄漏 Information Disclosure
拒绝服务 Denial of Service
提升权限 Elevation of Privilege(在早期的centos5中gcc有BUG)

安全设计基本原则

  1. 使用成熟的安全系统
  2. 以小人之心度输入数据(sql注入)
  3. 外部系统是不安全的
  4. 最小授权
  5. 减少外部接口
  6. 缺省使用安全模式
  7. 安全不是似是而非
  8. 从STRIDE思考
  9. 在入口处检查
  10. 从管理上保护好你的系统

安全算法

常用安全技术
认证 -> 授权 -> 审计 -> 安全通信
密码算法和协议:
对称加密 -> 公钥加密 -> 单向加密 -> 认证协议

Linux系统:OpenSSL, gpg(pgp协议的实现)

加密需要

不加密流量的易受攻击性

不安全的传统协议

对称加密算法

对称加密:加密和解密使用同一个密钥
DES:Data Encryption Standard,56bits
3DES:(三遍DES加密就是3DES)
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
特性:
1、加密、解密使用同一个密钥,效率高
2、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1、密钥过多
2、密钥分发
3、数据来源无法确认

非对称加密算法

公钥加密:密钥是成对出现
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key

特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据

缺点:密钥长,加密解密效率低下

算法: RSA(加密,数字签名),DSA(数字签名),ELGamal

    实现数字签名:

发送者:
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
接收者:
使用发送者的公钥来解密M=P(S(M))

数字证书

数字证书

单向散列

将任意数据缩小成固定大小的“指纹”
任意长度输入
固定长度输出
若修改数据,指纹也会改变(“不会产生冲突”)
无法从指纹中重新生成数据(“单向”)

功能:数据完整性
常见算式: md5:128bits、sha1:160bits、sha224sha256、sha384、sha512

  1. md5 file
  2. shalsum file
  3. sha512 file
  4. [root@aliyun ~]#sha1sum 9.sh null.txt > all.sha1
  5. [root@aliyun ~]#sha1sum -c all.sha1
  6. 9.sh: OK
  7. null.txt: OK
  8. [root@aliyun ~]#echo " " >> null.txt
  9. [root@aliyun ~]#sha1sum -c all.sha1 <==> shalsum --check all.sha1 比较文件hash
  10. 9.sh: OK
  11. null.txt: FAILED
  12. sha1sum: WARNING: 1 computed checksum did NOT match

hash(data)=digest 摘要
1. data不同,摘要不同
2. 摘要仙童,data相同
3. 不论data大小,digest大小之和算法有关
4. hash算法,不可逆

常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V

密钥交换

  1. 1A: a,p协商生成公开的整数a,大素数p (只能被自己整除的数是素数)
  2. B: a,p
  3. 2A:生成隐私数据:x (x<p ),计算得出a^x%p,发送给B
  4. B:生成隐私数据:y,计算得出a^y%p,发送给A
  5. 3A:计算得出[(a^y%p)^x] %p = a^xy%p,生成为密钥
  6. B:计算得出[(a^x%p)^y] %p = a^xy%p,生成为密钥

应用程序:RPM

文件完整性的两种实施方式

被安装的文件
MD5单向散列
rpm --verify package_name (or -V)
rpm -V package_name //查看元数据是否发生变化
发行的软件包文件
GPG公钥签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-....(公钥路径)
rpm --checksig pakage_file_name (or -K)
rpm -K /misc/cd/Packages/bash-4.2.46-28.el7.x86_64.rpm 查看签名完整性

使用gpg实现对称加密

对称加密file文件
gpg -c filels file.gpg
在另一台主机上解密file
gpg -o file -d file.gpg

使用gpg工具实现公钥加密

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注