第五周作业

1. 总结openssh服务安全加固

SSH是远程控制中广泛使用的数据传输工具,所有的Linux系统默认都会启用此服务,但是SSH默认的配置文件存在很多的安全隐患,需要将SSH服务的配置文件重新配置才能起到安全加固的作用,以下是需要安全加固需要修改的项目:

SSH默认的配置文件所在目录为/etc/ssh/sshd_config

  1. 禁用不安全的加密算法:在sshd_config文件中禁用不安全的加密算法,如DES和RC4等,建议只使用AES和ChaCha20等安全加密算法。
  2. 禁用root账号远程登录: 配置项为PermitRootLogin no
  3. 禁用空密码: 配置项为PermitEmptyPasswords no
  4. 限制用户登录:可以通过修改sshd_config文件中的AllowUsers或DenyUsers选项来限制哪些用户可以登录,也可以使用PAM模块限制用户登录。 
  5. 限制身份最大尝试连接次数: 配置项为MaxAuthTries 3
  6. 使用强密码策略:可以通过修改sshd_config文件中的PasswordAuthentication选项来启用强密码策略,建议设置密码最小长度、密码复杂度等。
  7. 防止暴力破解:可以通过修改sshd_config文件中的MaxAuthTries选项来限制用户登录失败的次数,也可以使用Fail2ban等软件来防止暴力破解。
  8. 使用公钥认证:使用公钥认证可以减少密码泄露的风险,建议禁用密码认证并启用公钥认证。
  9. 修改SSH默认端口:将SSH默认端口修改为非常用端口,可以减少暴力破解的风险。
  10. 定期更新OpenSSH版本:及时更新OpenSSH版本可以修复安全漏洞和提升安全性能。
  11. 配置防火墙:使用防火墙可以限制SSH服务的访问范围,只允许必要的IP地址访问SSH服务端口。
  12. 显示最后一次登录的时间和日期。配置项为PrintLastLog yes

2. 总结sudo配置文件格式,总结相关示例。

sudo授权规则配置文件 /etc/sudoers

sudo授权的规则方式:

用户   登入主机=(代表用户) 命令

User   host=(runas)  command

授权root账号,可以任何人登录主机:

root  ALL=(ALL)  ALL

1.配置规则:

别名定义:大字母_下划线_数字_不能有小写字母

2.授权规则:必须按照格式输入

当授权众多比较复杂时的时候,可以选择在/etc/sudoers.d 所在的目录下创建文件,之后在里面输入相应的配置。

3. 总结PAM架构及工作原理

PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。

  • PAM构架:
  • 1、应用程序:需要进行身份验证或授权的应用程序,如 SSH、sudo、login 等。
  • 2、PAM 库:PAM 库是一个公共库,它提供了用于进行身份验证和授权的 API。应用程序使用这些 API 与 PAM 进行交互。
  • 3、PAM 配置文件:PAM 配置文件位于 /etc/pam.d 目录中。每个应用程序都有一个对应的 PAM 配置文件,用于指定身份验证和授权流程。配置文件中包含一个或多个 PAM 模块,它们是用于完成特定任务的代码库。
  • 4、PAM 模块:PAM 模块是用于执行身份验证和授权任务的代码库。模块可用于检查用户密码、检查用户是否在允许的 IP 范围内、检查用户帐户是否已过期等。PAM 模块可以使用已安装的身份验证技术(如密码、Kerberos、LDAP 等)进行身份验证。
  • 5、身份验证源:身份验证源是用于进行身份验证的数据源,如本地用户数据库、LDAP 目录等。
  • PAM工作原理:
  • PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
  • PAM 的工作原理是检查应用程序请求的认证任务,然后根据系统的配置文件和安装的 PAM 模块来决定如何执行该任务。PAM 模块可以按特定顺序组合,以便在完成认证之前检查用户是否存在于数据库中,并验证其凭证,以及检查用户是否已经过限
  • 1.使用者执行/usr/bin/passwd 程序,并输入密码
  • 2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
  • 3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
  • 4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

4. 总结PAM配置文件格式,总结相关示例, nologin.so, limits,等模块的使用。

专用pam配置文件格式/etc/pam.d/

application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务

type:指模块类型,即功能

control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现

module-path: 用来指明本模块对应的程序文件的路径名

Arguments: 用来传递给该模块的参数

type类型

Auth 账号的认证和授权

Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)

Password 用户修改密码时密码复杂度检查机制等功能

Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等

-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

control类型

required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件

requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件

sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite

optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略

include: 调用其他的配置文件中定义的配置信息

module-path

模块文件所在绝对路径:

模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、pam_limits.so

有些模块有自已的专有配置文件,在/etc/security/*.conf目录

Arguments

debug :该模块应当用syslog( )将调试信息写入到系统日志文件中
no_warn :表明该模块不应把警告信息发送给应用程序
use_first_pass :该模块不能提示用户输入密码,只能从前一个模块得到输入密码
try_first_pass :该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户输入新密码
use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码
expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全造成一定程度的威胁


6. 总结DNS域名三级结构

  •         根域
  • 使用“.”表示,位于域命名空间层次结构的最高层;
  • 目前分布于全世界的根服务器只有13台,全部由Internet网络信息中心(InterNIC)管理,在根域服务器中只保存了其下层的顶级域的DNS服务器名称和IP地址对应关系;
  •         顶级域(TLD,Top Level Domain)
  • 顶级域位于根域下层,可以分为两类:组织域(.com,.net,.org,.gov,.edu,.mil等)和国家域(.iq,.tw,.hk,.jp,.cn等);
  •         二级域
  • 二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
  •         子域
  • 子域是根据具体情况从二级域中按部门或地理位置创建;
  •         主机名
  • 位于DNS域命名空间的最低层,主要指计算机的主机名;
  • 注意:FQDN(Full Qualified Domain Name,完全合格域名)包括域名和主机名;

7. 总结DNS服务工作原理,涉及递归和迭代查询原理

  • 1. 客户端向DNS服务器发送DNS请求:
  • 当客户端在浏览器中输入网址时,浏览器会向DNS服务器发送一个请求,请求DNS服务器将域名转换为IP地址。并且反馈给客户端用户
  • 2. DNS服务器查找本地缓存:
  • DNS服务器收到DNS请求时,它首先查找本地缓存。如果DNS解析已经在最近的DNS记录,那么DNS服务器会直接返回缓存的结果。提供客户端使用。
  • 3. DNS服务器向根域名服务器查询:
  • 当本地缓存中没有找到相关的地址时,DNS服务器会向根域名服务器查询。 DNS服务器向根域名服务器发送一个请求,以获取指向该域名下的子服务器的地址。
  • 4. DNS服务器向该域名下的DNS服务器查询:
  • 一旦DNS服务器接收到根域名服务器的响应,并获取指向相关DNS服务器的IP地址,DNS服务器会将其请求转发给该域名下的DNS服务器。
  • 5. DNS服务器返回结果:
  • 当DNS服务器收到来自子服务器的响应时,它会将IP地址发送回给客户端。此时,客户端就可以打开网站了。

递归查询:如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询。负责检查到底,并且反馈最终结果。

迭代查询:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP 地址,要么告诉本地服务器下一步应该找哪个域名服务器进行查询,然后让本地服务器进行后续的查询。只反馈当前的结果,找不到就会询问下一个服务器,不会反馈最终结果。

8. 实现私有DNS, 供本地网络主机作DNS递归查询。

1.首先打开bind的配置文件vim /etc/named.conf
options {
        listen-on port 53 { any;};

		allow-query     { any; };
将里面的两项设置修改any这样,这样DNS服务服务器就可以提供任何人连接了

2.查看本机的网卡配置,DNS需要指向本机,这样本机就可以当作DNS服务器同时还可以当作客户端。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DNS1=192.168.50.5
将DNS指向本机

之后重启网卡配置
nmcli connection reload
nmcli connection up eth0

3.将bind配置文件named.rfc1912.zones,添加上主服务器,正向解析反向解析的区域文件的记录

正向解析记录
zone "gehong.com" IN {
        type master;
        file "gehong.com.zone";

};

反向解析记录
zone "50.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.50.zone";

};

4. cd /var/named/ 创建主区域文件gehong.com.zone 名称需要跟主记录名字一样,这样于区域文件的记录才能找到

另外需要将文件的权限设置成640 
chmod 640 gehong.com.zone
将文件归到named的用户组里
Chgrp named gehong.com.zone 

5.配置正向解析文件内容

$TTL 1D
@       IN SOA  master admin.gehong.com (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
        NS      ns1
master  A       192.168.50.5
ns1     A       192.168.50.4
www     A       192.168.50.5
@       A       192.168.50.5

6.将正向解析文件复制,修改好名称之后配置反向解析内容

$TTL 1D
@       IN SOA  master admin.gehong.com (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      www.gehong.com.
5       IN      PTR     www.gehong.com.

7.进行语法检查
named-checkconf
named-checkzone gehong.com gehong.com.zone
named-checkzone 50.168.192.in-addr.arpa 192.168.50.zone

8.重启服务

systemctl restart named

9.最终测试:
[root@localhost ~]# host www.gehong.com
www.gehong.com has address 192.168.50.5

[root@localhost ~]# host 192.168.50.5
5.50.168.192.in-addr.arpa domain name pointer www.gehong.com.

成功!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值