LINUX 第十七天 学习笔记

一、学习内容提炼

16.3.3 透明正向代理
“透明”二字指的是让用户在没有感知的情况下使用代理服务,这样的好处是一方面不需要用户手动配置代理服务器的信息,进而降低了代理服务的使用门槛;另一方面也可以更隐秘地监督员工的上网行为。

在透明代理模式中,用户无须在浏览器或其他软件中配置代理服务器地址、端口号等信息,而是由DHCP服务器将网络配置信息分配给客户端主机。这样只要用户打开浏览器便会自动使用代理服务了。如果大家此时并没有配置DHCP服务器,可以像如图所示来手动配置客户端主机的网卡参数。
在这里插入图片描述
既然要让用户在无需过多配置系统的情况下就能使用代理服务,作为运维人员就必须提前将网络配置信息与数据转发功能配置好。前面已经配置好的网络参数,接下来要使用8.3.2节介绍的SNAT技术完成数据的转发,让客户端主机将数据交给Squid代理服务器,再由后者转发到外网中。简单来说,就是让Squid服务器作为一个中间人,实现内网客户端主机与外部网络之间的数据传输。

由于当前还没有部署SNAT功能,因此当前内网中的客户端主机是不能访问外网的:
在这里插入图片描述
两种方法让客户端主机上网:
方法一、使用firewalld防火墙配置
此时在服务器上配置防火墙(开启防火墙的SNAT技术),如下
在这里插入图片描述
此时客户端便可以上网了
在这里插入图片描述
方法二、使用纯命令的iptables防火墙管理工具配置
要想让内网中的客户端主机能够访问外网,客户端主机首先要能获取到DNS地址解析服务的数据,这样才能在互联网中找到对应网站的IP地址。下面通过iptables命令实现DNS地址解析服务53端口的数据转发功能,并且允许Squid服务器转发IPv4数据包。sysctl -p命令的作用是让转发参数立即生效:
在这里插入图片描述

现在回到客户端主机,再次ping某个外网地址。此时可以发现,虽然不能连通网站,但是此时已经能够获取到外网DNS服务的域名解析数据。这个步骤非常重要,为接下来的SNAT技术打下了扎实的基础。
在这里插入图片描述
与配置DNS和SNAT技术转发相比,Squid服务程序透明代理模式的配置过程就十分简单了,只需要在主配置文件中服务器端口号后面追加上transparent单词(意思为“透明的”),然后把第62行的井号(#)注释符删除,设置缓存的保存路径就可以了。保存主配置文件并退出后再使用squid -k parse命令检查主配置文件是否有错误,以及使用squid -z命令对Squid服务程序的透明代理技术进行初始化。
在这里插入图片描述
PS:上述图中,Squid服务程序重启的一个小bug:在执行 squid -k parse执行检查前先停止squid服务(systemctl stop squid),然后执行检查(squid -k parse),接着初始化(squid -z),最后重启squid服务(systemctl restart squid)

接下来就可以完成SNAT数据转发功能了。它的原理其实很简单,就是使用iptables防火墙管理命令把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上。SNAT数据转发功能的具体配置参数如下。
在这里插入图片描述

这时客户端主机就可以访问网络了
在这里插入图片描述
PS:squid服务程序无法针对https协议进行控制,故下一节实验选用未启用https服务的网站

16.3.2 ACL访问控制
在日常工作中,企业员工一般是通过公司内部的网关服务器来访问互联网,当将Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的用武之地。它可以根据指定的策略条件来缓存数据或限制用户的访问。比如很多公司会分时段地禁止员工逛淘宝、打网页游戏,这些禁止行为都可以通过Squid服务程序的ACL功能来实现。

Squid服务程序的ACL是由多个策略规则组成的,它可以根据指定的策略规则来允许或限制访问请求,而且策略规则的匹配顺序与防火墙策略规则一样都是由上至下;在一旦形成匹配之后,则立即执行相应操作并结束匹配过程。为了避免ACL将所有流量全部禁止或全部放行,起不到预期的访问控制效果,运维人员通常会在ACL的最下面写上deny all或者allow all语句,以避免安全隐患。

实验1:只允许IP地址为172.16.10.3的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。
下面的配置文件依然是Squid服务程序的配置文件,但是需要留心配置参数的填写位置。如果写的太靠前,则有些Squid服务程序自身的语句都没有加载完,也会导致策略无效。当然也不用太靠后,大约在26~32行的位置就可以,而且采用分行填写的方式也便于日后的修改。
在这里插入图片描述

实验2:禁止所有客户端访问网址中包含linux关键词的网站
Squid服务程序的这种ACL功能模式是比较粗犷暴力的,客户端访问的任何网址中只要包含了某个关键词就会被立即禁止访问,但是这并不影响访问其他网站。
在这里插入图片描述

实验3:禁止所有客户端访问某个特定的网站。
在实验2中,由于我们禁止所有客户端访问网址中包含linux关键词的网站,这将造成一大批网站被误封,从而影响同事们的正常工作。其实通过禁止客户端访问某个特定的网址,也就避免了误封的行为。下面按照如下所示的参数配置Squid服务程序并重启,然后进行测试
在这里插入图片描述

实验4:禁止员工在企业网内部下载带有某些后缀的文件。
在企业网络中,总会有一小部分人利用企业网络的高速带宽私自下载资源(比如游戏安装文件、电影文件等),从而对其他同事的工作效率造成影响。通过禁止所有用户访问.rar或.mp3等后缀文件的请求,可以防止他们继续下载资源,让他们知难而退。下面按照如下所示的参数配置Squid服务程序并重启,然后进行测试
在这里插入图片描述

16.4 反向代理
网站页面是由静态资源和动态资源一起组成的,其中静态资源包括网站架构CSS文件、大量的图片、视频等数据,这些数据相对于动态资源来说更加稳定,一般不会经常发生改变。但是,随着建站技术的更新换代,外加人们不断提升的审美能力,这些静态资源占据的网站空间越来越多。如果能够把这些静态资源从网站页面中抽离出去,然后在全国各地部署静态资源的缓存节点,这样不仅可以提升用户访问网站的速度,而且网站源服务器也会因为这些缓存节点的存在而降低负载。

反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(有些诈骗网站就是这样骗取用户信任的)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。如果访问开启了防护功能的网站,一般会看到如图16-16所示的报错信息。
在这里插入图片描述

为了实验需要下面临时关闭了本书配套站点的CDN服务及防护插件,请大家尽量选择用自己的网站或博客进行该实验操作,避免影响到其他网站的正常运转,给他人造成麻烦。

Squid服务器的网卡配置如下在这里插入图片描述
使用Squid服务程序来配置反向代理服务非常简单。首先找到一个网站源服务器的IP地址(这里以以下网站为例:https://www.yiwugo.com 服务器地址:60.191.250.36),然后编辑Squid服务程序的主配置文件,把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(它不能与反向代理服务同时使用)。然后按照下面的参数形式写入需要反向代理的网站源服务器的IP地址信息,保存退出后重启Squid服务程序。
在这里插入图片描述
在这里插入图片描述

第23章 使用OpenLDAP部署目录服务(属于进阶课程)

在这里插入图片描述

23.1 了解目录服务

回忆前面所学的章节,我们发现其实目录可以被理解成是一种为查询、浏览或搜索的数据库,但数据库又分为了目录数据库和关系数据库,目录数据库主要用于存储较小的信息(如姓名、电话、主机名等),同时具有很好的读性能,但在写性能方面比较差,所以不适合存放那些需要经常修改的数据。

目录服务则是由目录数据库和一套能够访问和处理数据库信息的协议组成的服务协议,用于集中的管理主机帐号密码,员工名字等数据,大大的提升了管理工作效率。轻量级目录访问协议LDAP(Lightweight Directory Access Protocol)是在目录访问协议X.500(X.500目录协议功能非常臃肿,消耗大量资源,无法做到快速查询且不支持TCP/IP协议网络)的基础上研发的,主要的优势是:

LDAP采用树状结构存储数据(类似于前面学习的DNS服务程序),用于在IP网络层面实现对分布式目录的访问和管理操作,条目是LDAP协议中最基本的元素,可以想象成字典中的单词或者数据库中的记录,通常对LDAP服务程序的添加、删除、更改、搜索都是以条目为基本对象的。
在这里插入图片描述
dn:每个条目的唯一标识符,如上图中linuxprobe的dn值是:
cn=linuxprobe,ou=marketing,ou=people,dc=mydomain,dc=org

rdn:一般为dn值中最左侧的部分,如上图中linuxprobe的rdn值是:
cn=linuxprobe

base DN:此为基准DN值,表示顶层的根部,上图中的base DN值是:
dc=mydomain,dc=org

而每个条目可以有多个属性(如姓名、地址、电话等),每个属性中会保存着对象名称与对应值,LDAP已经为运维人员对常见的对象定义了属性,其中有:
在这里插入图片描述

23.2 目录服务实验

OpenLdap是基于LDAP协议的开源程序,它的程序名称叫做slapd,本次实验需要用到两台主机:

主机名称 操作系统 IP地址
LDAP服务端 红帽RHEL7操作系统 172.16.10.2
LDAP客户端 红帽RHEL7操作系统 172.16.10.3

23.2.1 配置LDAP服务端
安装openldap与相关的软件包:
在这里插入图片描述
生成密钥文件(记下生成出的值,后面要用):{SSHA}DZQvntu48f8RJD1KMZ3fL2+vrugRABGs
在这里插入图片描述

修改主机名称
在这里插入图片描述
因为LDAP目录服务是以明文的方式在网络中传输数据的(包括密码),这样真的很不安全,所以我们采用TLS加密机制来解决这个问题,使用openssl工具生成X509格式的证书文件(有效期为365天):
在这里插入图片描述

修改证书的所属和权限
在这里插入图片描述

复制一份LDAP的配置模板在这里插入图片描述

生成数据库文件(不用担心报错信息):
在这里插入图片描述

修改LDAP数据库的所属主与组:
在这里插入图片描述

重启slapd服务程序并设置为开机启动:
在这里插入图片描述

在LDAP目录服务中使用LDIF(LDAP Interchange Format)格式来保存信息,而LDIF是一种标准的文本文件且可以随意的导入导出,所以我们需要有一种“格式”标准化LDIF文件的写法,这中格式叫做“schema”,schema用于指定一个目录中所包含对象的类型,以及每一个类型中的可选属性,我们可以将schema理解为面向对象程序设计中的“类”,通过“类”定义出具体的对象,因此其实LDIF数据条目则都是通过schema数据模型创建出来的具体对象:
== ldapadd命令用于将LDIF文件导入到目录服务数据库中,格式为:“ldapadd [参数] LDIF文件”。==
在这里插入图片描述

添加cosine和nis模块:
在这里插入图片描述

创建/etc/openldap/changes.ldif文件,并将下面的信息复制进去(注意有一处要修改的地方):

[root@linuxprobe ~]# vim /etc/openldap/changes.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=linuxprobe,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=linuxprobe,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: 此处输入之前生成的密码(如{SSHA}v/GJvGG8SbIuCxhfTDVhkmWEuz2afNIR)

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/cert.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/priv.pem

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: -1

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base=“gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth” read by dn.base=“cn=Manager,dc=linuxprobe,dc=com” read by * none

将新的配置文件更新到slapd服务程序:
在这里插入图片描述

创建/etc/openldap/base.ldif文件,并将下面的信息复制进去:
[root@linuxprobe ~]# vim /etc/openldap/base.ldif
dn: dc=linuxprobe,dc=com
dc: linuxprobe
objectClass: top
objectClass: domain

dn: ou=People,dc=linuxprobe,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=linuxprobe,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

创建目录的结构服务:
在这里插入图片描述

创建测试用的用户:
在这里插入图片描述

设置帐户的迁移(修改第71与74行):
在这里插入图片描述

/usr/share/migrationtools 目录下新建用户信息及用户组信息相关的文件
在这里插入图片描述

将当前系统中的用户和用户组分别迁移至目录服务
在这里插入图片描述

将信息导入到openladp服务中
在这里插入图片描述

测试linuxprobe用户的配置文件:
在这里插入图片描述

安装httpd服务程序:
在这里插入图片描述

将密钥文件上传至网站目录:
在这里插入图片描述

将httpd服务程序重启,并添加到开机启动项;清空防火墙的规则并保存状态
在这里插入图片描述

使用NFS实现文件共享:
在这里插入图片描述
23.2.2 配置LDAP客户端
将LDAP服务端主机名与IP地址的解析记录写入:
在这里插入图片描述
在这里插入图片描述

安装相关的软件包:
在这里插入图片描述

运行系统认证工具,填写LDAP服务信息,填写证书地址:
在这里插入图片描述

此时系统便可以查到相应用户(id ldapuser),虽然本地文件中没有(cat /etc/passwd)。
【此时说明已经可以通过LDAP服务端验证了,并且ldapuser用户的帐号信息也不会保存在本地的/etc/passwd文件中~】
在这里插入图片描述

23.2 自动挂载用户目录

虽然在客户端已经能够使用LDAP验证帐户了,但是当切换到ldapuser用户时会提示没有该用户的家目录:
在这里插入图片描述

原因是本机并没有该用户的家目录,我们需要配置NFS服务将用户的家目录自动挂载过来:
在LDAP服务端添加共享信息(NFS服务程序已经默认安装,我们之前学过):
在这里插入图片描述

重启nfs-server服务程序:
在这里插入图片描述

在LDAP客户端查看共享信息:(-e 显示NFS服务器上所有的共享目录)
在这里插入图片描述

将共享目录挂载到本地:(-t 指定挂载类型 nfs格式文件系统)
在这里插入图片描述

再次尝试切换到ldapuser用户,这样非常顺利:
在这里插入图片描述

设置为开机自动挂载:
在这里插入图片描述

二、笔记截图(略)

发布了19 篇原创文章 · 获赞 0 · 访问量 219

猜你喜欢

转载自blog.csdn.net/qq_30358029/article/details/103079748
今日推荐