第五周作业练习
总结openssh服务安全加固
SSH(Secure Shell)是一种能够让用户安全访问远程系统的网络协议,它为不安全网络中的两台主机提供了一个强加密数据通信通道。SSH是Linux、UNIX系统管理员操作和管理主机的首选方式。虽然SSH比其他通信方式更加安全,但是错误的配置也可能导致其出现安全问题。
- SSH配置是文件为/etc/ssh/sshd_config
- 针对SSH的配置文件的修改要生效需要重启ssh服务。
- SSH配置文件中需要带有#号的注释行,不会在服务运行中生效,生效需要删除#号。
- 注释通常为该选项的默认值。
- 使用SSHv2版本的协议,确保系统使用SSHv2版本,配置为仅接受SSHv2版协议的连接。配置为Protocol 2
- 关闭或者延迟压缩。配置项为Compression no
- 限制身份最大尝试连接次数。配置项为MaxAuthTries 3
- 禁用root账号远程登录。配置项为PermitRootLogin no
- 显示最后一次登录的时间和日期。配置项为PrintLastLog yes
- 结束空闲的SSH会话。配置项为ClientAliveCountMax选项和ClientAliveInterval选项相互配合,例如要在十五分钟(300秒)后关闭不活动的会话,修改配置文件如下:
ClientAliveInterval 300
ClientAliveCountMax 0
- 禁用空密码。配置项为PermitEmptyPasswords no;
实施密码复杂性规则,可以参考一下要求。
密码长度大于x
密码至少包含x个小写字符
密码至少包含x个大写字符
密码至少包含x个数字
密码至少包含x个特殊字符
密码不得包含用户名(正向或者反向)
- 使用非常规端口,更改默认22端口。配置项为Port 22
- 将服务器绑定到固定的IP地址,通过一个专有地址来连接。配置项为ListenAddress 10.0.0.1
- 使用秘钥进行身份认证。配置项为PubkeyAuthentication yes
总结sudo配置文件格式,总结相关示例
Sudo配置文件在/etc/sudo.conf
授权规则配置文件:/etc/sudoers
/etc/sudoers.d
sudo命令:

配置规则有两类
- 别名定义:不是必须的
- 授权规则:必须的。
Sudoers授权规则格式:
用户 登录主机=(代表用户)命令
User host=(runas) command
范例:
Root ALL=(ALL) ALL
总结PAM架构及工作原理
PAM 可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的 验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。由于 PAM 仅是一套验证的机制,又可以提供给其他程序所呼叫引用,因此不论你使用什么程序,都可以使用 PAM 来进行验证,如此一来,就能够让账号密码或者是其他方式的验证具有一致的结果!也让程序设计师方便处理验证的问题
PAM 是一个独立的 API 存在,只要任何程序有需求时,可以向 PAM 发出验证要求的通知, PAM 经过一连串的验证后,将验证的结果回报给该程序,然后该程序就能够利用验证 的结果来进行可登入或显示其他无法使用的讯息。 这也就是说,你可以在写程序的时候将 PAM 模块的功能加入,就能够利用 PAM 的验证功能。 因此目前很多程序都会利用 PAM
PAM认证过程:
1.用户开始执行 /usr/bin/passwd 这支程序,并输入密码;
2.passwd 呼叫 PAM 模块进行验证;
3.PAM 模块会到 /etc/pam.d/ 找寻与程序 (passwd) 同名的配置文件;
4.依据 /etc/pam.d/passwd 内的设定,引用相关的 PAM 模块逐步进行验证分析;
5.将验证结果 (成功、失败以及其他讯息) 回传给 passwd 这支程序;
6.passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新密码或者通过验证!)

配置文件介绍
PAM配置文件有下面两种写法:
1)写在/etc/pam.conf文件中,但centos6之后的系统中,这个文件就没有了。
2)将PAM配置文件放到/etc/pam.d/目录下,其规则内容都是不包含 service 部分的,即不包含服务名称,而/etc/pam.d 目录下文件的名字就是服务名称。如: vsftpd,login等,只是少了最左边的服务名列。如:/etc/pam.d/sshd

可将PAM配置文件分为四类:
- 第一类代表 模块类型
- 第二列代表 控制标记
- 第三列代表 模块路径
- 第四列代表 模块参数
PAM模块类型
- 认证管理(auth)
- 账号管理(account)
- 回话管理(session)
- 密码管理(password)

常见的PAM模块
- pam_nologin.so模块
功能:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录。
默认此模块对ssh登录有影响,但不影响su登录。
- pam_limits.so模块
功能:在用户级别实现对其可使用资源的限制,例如,可打开文件的数量,可运行的进程,可以使用的内存空间。
实现私有时间服务器
前提:在 chronyd 配置时需要使用 root 用户登录进系统。
配置文件说明:chronyd 配置文件为/etc/chrony.conf,#号开头的行表示注释
即此行不生效,后续配置文件仅列出生效行配置。
chronyd 服务端配置方法,其中包括两类使用情景:仅对同局
域网机器提供对时服务;服务端需与上级时钟服务器对时。
服务端配置
1.修改 chronyd 配置文件如下图所示:

2.修改完成后,重启 chronyd 服务并且配置 chronyd 服务开机自启动,如下
图所示:

服务端需与上级时钟服务器对时
1.修改 chronyd 配置文件如下图所示:

若现场存在多台上级对时服务器设备,可填写多个 server 行,修改 ip 地址
即可。
2.修改完成后,重启 chronyd 服务并且配置 chronyd 服务开机自启动,如下
图所示

客户端配置
1.在进行客户端配置之前,先使用 chronyd 命令和服务端手动对时一次,
命令格式:chronyd -q ‘server 10.0.0.136 iburst’,如下图所示:

2.修改 chronyd 配置文件如下图所示:

- 修改完成后,重启 chronyd 服务并且配置 chronyd 服务开机自启动

- 查看对时同步信息,使用命令 chronyc sourcestats –v

5.在确定客户端对时成功后,执行 hwclock -w 将硬件时间进行修改和同
步

DNS服务工作原理及域名三级结构
域名系统(Domain Name System,DNS)技术是一项用于管理和解析域名与IP地址对应关系的技术。简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的IP地址或域名,即将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。这样一来,只需要在浏览器中输入域名就能打开想要访问的网站了。DNS域名解析技术的正向解析也是我们最常使用的一种工作模式。
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。目前最常见的域名后缀有.com(商业组织)、.org(非营利组织)、.gov(政府部门)、.net(网络服务商)、.edu(教育机构)、.pub(公共大众)、.cn(中国国家顶级域名)等。

DNS域名三级结构从上至下分别成为根域、一级域、二级域。根域,全球总共有13个根域,根域是固定的;顶级域有com,edu,net,org,cn等等;
二级域是不确定的,用户可以向有关机构申请自己的二级域,如magedu.com。
实现私有DNS, 供本地网络主机作DNS递归查询。




总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
(1)DNS服务器类型可分为主服务器、从服务器、缓存DNS服务器。主服务器负责维护一个区域的所有域名信息;从服务器在主域名服务器出现故障接替主服务器的工作来
提供域名解析服务;缓存DNS服务器仅负责转发功能,不负责解析。
(2)解析答案有以下几种:
肯定答案:存在对应的查询结果
否定答案:请求查询的条目不存在导致无法返回结果
权威答案:直接由存有此查询结果的DNS服务器返回的答案
非权威答案:由其他非权威服务器返回的答案
(3)正反解析域
正向解析域即把域名解析为IP地址
反向解析域即把IP地址解析为域名
(4)资源记录
资源记录类型有A、AAAA、PTR、SOA、NS、CNAME、MX
A:将域名解析为ipv4地址,即FQDN->IP
AAAA:将域名解析为ipv6地址,即FQDN->IPV6
PTR:反向解析,即IP->FQDN
SOA :起始授权记录,一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
NS:指明当前区域的DNS服务器
CNAME:别名
MX:邮件交换器
总结防火墙分类
按照保护范围分:主机防火墙、网络防火墙
按照实现方式分:硬件防火墙、软件防火墙
按照网络协调分:网络层防火墙、应用层防火墙
总结iptable 5表5链, 基本使用,扩展模块
五表为:filter、nat、mangle、raw、security
五链为:PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING
基本使用:
iptables -s 源IP地址
iptables -d 目标IP地址
iptables -p 指定协议
iptables -i 报文流入的接口
iptables -o 报文流出的接口
--source-port 匹配报文源端口
--destination-port 匹配报文目标端口
--tcp-flags mask/comp 匹配检查的标志位
扩展模块:
multiport 以离散的方式定义多端口匹配
iprange 定义连续的ip地址范围匹配
mac 定义源MAC地址匹配
strig 对报文中的应用层数据做字符串匹配检查
time 将报文到达的时间与指定时间范围进行匹配
connlimit 对每个客户端IP做并发连接数数量匹配
limit 对收发报文的速率做匹配
state 根据“连接追踪机制”检查连接状态
总结iptables规则优化实践,规则保存和恢复
1、将所有入站和出站的状态为ESTABLISH的连接放至第一条
2、谨慎放行入站的新请求
3、针对特殊目的限制访问需求的,在放行规则前拒绝
4、同类规则,匹配范围小的放在前面
5、不同类的规则,匹配范围大的放在前面
6、将可合并的规则合并为一条,减少规则数量
7、设置默认白名单策略
使用REDIRECT将90端口重定向80,并可以访问到80端口的服务
firewalld常见区域总结。
firewalld区域分为:trusted、home、internal、work、public、external、dmz、block、drop

通过ntftable来实现暴露本机80/443/ssh服务端口给指定网络访问

nft add table inet test
nft add chain inet test test_chain
nft add rule inet test test_chain tcp dport 80 accept
nft add rule inet test test_chain tcp dport 443 accept
nft add rule inet test test_chain tcp dport ssh accept
总结关系型数据库相关概念,关系,行,列,主键,惟一键,域。
1.关系:关系是一张数据表,每个表可以包含多行和多列。表中的每一行表示一个实体或记录,而表中的每一列表示实体或记录的属性。
2.行:行也称为元组或记录,表示关系表中的一个记录或实例。它由一组有序的值组成,这些值对应于该行中的各个属性或字段。
3.列:列也称为属性或字段,表示关系表中的一个特定类型的数据。每个字段都有一定的数据类型,并且所有相同名称的字段共享相同的数据类型(例如,所有“姓名”字段都是字符串类型)。
4.主键:主键是关系表中用于唯一标识每个记录的一列或多列。主键必须具有唯一性,也就是说,在整个表中,任何两个记录都不能具有相同的主键值。常用来作为关系之间关联的依据。
5.唯一键:唯一键是关系表中具有唯一性的一列或多列,但它们不一定要成为主键。唯一键可以用来保证表中没有重复的记录,但是它们不提供唯一标识每个记录的功能。
6.域:域指的是在关系表中每一列可以取到的数据范围,它是由数据类型和数据范围两部分组成。例如,“年龄”列的域可能是介于0-120之间的整数值。
总结关联类型,1对1,1对多,多对多关系。
1.1对1关系:指两个实体之间的关系是唯一的。例如,一个人只有一个身份证号码,一个身份证号码也只对应一个人。在面向对象编程中,这种关系通常通过将一个类的实例作为另一个类的属性来实现。比如,一个人类实例包含一个身份证类实例的引用。
2.1对多关系:指一个实体与另一个实体存在“一对多”的关系。例如,一个学校有多个学生,但每个学生只能属于一个学校。在面向对象编程中,这种关系通常通过将一个类的实例作为另一个类的属性列表来实现。比如,一个学校类实例包含一个学生类实例的列表。
- 多对多关系:指两个实体之间的关系是可重复的。例如,一个学生可以选修多个课程,而一个课程也可以被多个学生选修。在面向对象编程中,这种关系通常需要创建一个连接表(join table),该表包含连接两个实体的信息,比如一个学生和一门课程之间的关联。
总结mysql设计范式
MySQL设计范式是关系型数据库中的一种规范化设计标准,主要目的是保证数据的完整性、减少冗余和提高查询效率。常见的MySQL设计范式有以下三种:
第一范式要求每个字段都是原子性的,不可再分解。也就是说,每一列的值只能是一个单一的值或者是一个简单的值域,不能包含多个值。
第二范式要求每一个非主键列都要完全依赖于主键,而不是部分依赖。也就是说,如果一个表中存在组合主键,那么除了主键外的所有列必须和组合主键一起作为主键才满足第二范式。
三范式要求每一个非主键列都不能依赖于其它非主键列。也就是说,不能存在传递依赖关系。如果存在传递依赖关系,则需要进一步拆分表,将非主键列与其它非主键列放在不同的表中。
总结Mysql多种安装方式,及安全加固,并总结mysql配置文件。
mysql安装方式有:程序包管理器安装、源代码编译安装、二进制程序包安装
安全加固:1、设置数据库管理员root口令 2、禁止root远程登录 3、删除anonymous用户账号 4、删除test数据库
mysql配置文件存放于/etc/my.cnf,在这里可以定义mysql服务器的的相关配置,如mysql监听的端口,数据目录和服务器选项的定义,mysql数据库文件默认存放于/var/lib/mysql中。

浙公网安备 33010602011771号