题目与题解

写在前面的小建议

拿到服务器首先记得修改主机名与 IP!

vim 使用不习惯不用强求,没人拦着你用 nano

如果你是 vim 用户,记得在新系统里安装好 vim 软件包:vim vim-common vim-scrtpts ctags,会加快写配置文件的时间,事半功倍

防火墙放在最后配置,限制 SSH 访问策略也放在最后配置,但免密登录什么时候配都可以

可以把所有机器的 SSH 全部打开,在 Client 上 SSH 上去配置会快一点

登录

  • Username:root

  • Password:ChinaSkill20!

  • Username:Chinaskill20

  • Password:Chinaskill20!

除特别指定外,所有账号密码均为 Chinaskill20!

系统配置

  • Region:China

  • Locale:en_US.UTF-8

  • KeyMap:English US

当任务为配置 SSL 或 TLS,如要求隐藏所有警告,请小心执行。

竞赛环境

物理机:

文件夹路径:

虚拟机:[datastore1] ( VMware ESXi )

ISO 镜像:[DATA]ISO/ ( VMware ESXi )

软件:D:\软件 ( Host )

项目任务描述

拓扑见样题

基本配置:

Device

Hostname

System

FQDN

IP Address

Service

Server01

Server01

预装 Linux

Server01.sdskills.com

172.16.100.201/25

DNS Web SSH LDAP DBMS

Server02

Server02

待安装 Linux

Server02.sdskills.com

172.16.100.202/25

RAID5 NFS FTP Mail SSH

Server03

Server03

预装 Linux

Server03.skills.com

192.168.10.3/28

NTP OpenVPN

Server04

Server04

待安装 Linux

Server04.skills.com

192.168.10.4/28

DNS Web

Rserver

Rserver

预装 Linux

Rserver.sdskills.com

172.16.100.254/25 192.168.10.2/28 10.10.10.254/24

firewall DHCP SSH CA

Client

Client

Linux Desktop

10.10.100.x

none

网络:

Network

CIDR

office

10.10.100.0/24

service

172.16.100.128/25

internet

192.168.10.0/28

Client Task

Client 已预装简易 Debian,要求如下:

  • 要求能访问所有服务器,用于测试应用服务

  • 为主机安装 GNOME 桌面环境

  • 调整分辨率至 1280x768

  • 测试 DHCP,IPv4 地址为自动获取

  • 测试 DNS,安装 dnsutils 与 dig 命令行程序

  • 测试 Web,安装 Firefox 浏览器,cUrl 命令行工具,在任何时候进行访问测试不允许弹出安全警告信息

  • 测试 SSH,安装 SSH 命令行工具

  • 测试 VPN 安装 VPN 客户端

  • 测试 FTP,安装 FTP 客户端

  • 测试文件共享,安装 Samba 命令行工具

  • 测试 Mail,安装 Thunderbird,并能正常进行邮件收发

  • 其他测试采用默认设定

题解

先配置主机名

并且不要忘记修改 hosts 文件

默认的 vi 运行在 vi 兼容模式下,如果使用很别扭的话可安装 vim 软件包,或直接在 vi 中输入 :set nocp 关闭 vi 兼容模式。

将原来的主机名 debian 修改为新的主机名 client

此题目仅安装一堆软件包即可

但一部分题目需要后续做完其他服务器配置后返回来进行,所以这一阶段如果 Client 作为首题只能做一部分。

可以先安装所需软件包:

安装完后 reboot 重启后进入桌面环境

桌面环境默认无法使用 root 账户登录,使用 chinaskill20 可登录进入桌面环境。

右键选择 Display Settings,打开显示器设置,将分辨率改为 1280x768

在配置后续机型时,会回来此机配置后续项目。

Client Task

  • 要求能访问所有服务器,用于测试应用服务

  • 为主机安装 GNOME 桌面环境

  • 调整显示分辨率为 1280x768

  • 测试 DHCP,网卡 IPv4 地址为自动获取

  • 测试 DNS,安装 dnsutils 与 dig 命令行工具

  • 测试 Web,安装 Firefox 浏览器,curl 命令行测试工具,在任何时候进行访问测试时不允许弹出安全警告信息

  • 测试 SSH,安装 SSH 命令行工具

  • 测试 VPN,安装 OPENVPN 客户端工具软件

  • 测试 FTP,安装 lftp 客户端工具

  • 测试文件共享,安装 smbclient 客户端工具

  • 测试 Mail,安装 Thunderbird,并能正常进行邮件收发

  • 其他设定均采用默认设定

题解

安装桌面环境

重启即可

Rserver Task

  • Network

    • 请根据基本配置信息配置服务器主机名,网卡 IP 地址配置,域名等

    • 开启路由转发功能

  • iptables

    • 默认阻挡所有流量

    • 添加必要的 NAT 规则,使 Office 和 Service 网络能够访问 Internet

    • 添加必要的规则以满足其他服务所需,禁止创建放行所有流量的规则

  • DHCP

    • 为客户端分配 IP 范围为 10.10.100.1 - 10.10.100.50

    • 按照实际配置 DNS 与 GATEWAY

    • 配置 Client 固定获取 IP 地址为 10.10.100.51

  • SSH

    • 安装 SSH 正常监听

    • 限制除 Client 以外的客户端登录,其他主机都应拒绝

    • 配置 Client 只能在 Chinaskills20 用户可以免密登录,端口为 2222,且具有 root 控制权限

  • CA

    • CA 根证书路径 /CA/cacert.pem

    • 签发数字证书,签发者信息

      • 国家 = CN

      • 单位 = Inc

      • 组织机构 = www.skills.com

      • 公用名 = Skill Global Root CA

题解

Network

首先查看网卡名称,使用 ip link

共三块网卡,分别按照对应网络设定。

编辑 /etc/network/interfaces

接下来启用网卡

配置主机名

修改 /etc/hosts,将 FQDN 写入 hosts 文件

修改 127.0.1.1 debian 这一行,修改为

打开内核的 IPv4 转发,编辑 /etc/sysctl.conf,28 行处的 net.ipv4.ip_forward=1 去掉前面的注释,保存文件。

使配置文件生效

这台电脑实际上要作为拓扑中的接入路由器来使用,因此后续的网关设备全部指定此计算机

FQDN 在 Linux 上是通过 DNS 解析实现的,验证配置使用 hostname -f

iptables

这道题做出来的不多,我怀疑应该是没看懂题目。

这个实验环境是将 192.168.10.0/28 网段看作公有 Internet,将 service 以及 office 接入互联网,因此应在 Rserver 配置 NAT 使其通过 Rserver 的 IP 地址接入互联网,能理解到这个程度那么做起来也就不难了。

iptables 配置最烦人的点就是必须按顺序将防火墙规则写进 iptables 配置中,一旦写错就要清除配置重来,不像现在的 firewalld 是并行处理的,所以实际使用的时候先全部放行,等待全部配置完成之后再来思考防火墙规则可能更好。

比较方便的方法是写一个配置规则的 Shell 脚本,这样后续修改起来会相对方便。

DHCP

安装软件包 isc-dhcp-server

没有做配置的情况下,安装时会提示服务无法启动,这是正常的。

要修改的文件有 /etc/default/isc-dhcp-server/etc/dhcp/dhcpd.conf

首先修改 /etc/default/isc-dhcp-server 指定监听网卡

接下来编辑 /etc/dhcp/dhcpd.conf

在文件 50 行处有一个写的较完整的示例配置,可以直接复制使用

其中,client 的 MAC 地址可通过在 Client 上使用 ip link 查看

启动服务,并确保开机启动

SSH

每次修改配置文件时,使用 systemctl reload ssh 使配置生效

编辑 /etc/ssh/sshd_config

修改 Port 为 2222

临时修改 PermitRootLogin 为 yes

拷贝 SSH key

编辑 /etc/hosts.deny 来限制登录

确保服务开机启动

CA

在配置 CA 之前,确保当前时间正确,时区正确,最好先配置 NTP 服务器再回来配置 CA

修改 /usr/lib/ssl/openssl.cnf

第 28 行处,修改根目录为 /CA

创建子目录:

并创建两个文件:

生成根证书私钥

使用上一步生成的私钥签发证书:

Server01

Network

配置 IP 与主机名跟上面方法相同,不多赘述

DNS

Debian 将 Bind 的配置文件分成了很多份

对于 DNS 转发器,修改 /etc/bind/named.conf.options,文件中有一段被注释掉的 forwarders,取消注释后修改即可

将正向与反向解析配置放进 /etc/bind/named.conf.local,如下:

不要忘记末尾的分号!

接下来创建区域文件,从已有的区域文件复制修改即可

将 SOA 修改为自己的域名 ( 注意域名后的点! )

添加自己需要的记录即可

使用 named-checkconf 和 named-checkzone 来检查语法格式是否正确

当前的 Bind 版本默认只允许本地与已知的本地局域网访问服务器进行查询,因此需要修改配置文件,改回以前的放行模式:

修改 /etc/bind/named.conf.options,在后面增加三行:

放行所有主机。

apache

题目中需要使用 LDAP 做认证,配置完 LDAP 后再来

新建 webuser 用户,指定为系统用户并禁止登录

修改 /etc/apache2/envvars

将指定运行用户与组的变量修改

网站目录放在 NFS 共享中,先做 Server02 再回来

挂载 /data/share

写入 /etc/fstab

写 index.sh

修复目录权限,并使脚本可执行

配置 Apahce,使 CGI 脚本可执行,并允许处理 Shell 脚本

配置虚拟主机们,加上 SSL。

签发证书

将证书传回 Server01 后,修复权限并放在对应目录

Apache 提供了 SSL 的虚拟主机模板,在 `/etc/apache2/sites-available/default-ssl.conf

将这个文件复制一份,然后修改

原文件内容很多,只截取需要注意的部分

启用 SSL 模块,启用刚才修改的网站配置文件

修改原始默认网站文件,将 80 端口访问重定向到 HTTPS

配置 LDAP 验证

修改刚才写好的 /etc/apache2/conf-enabled/security.conf

MariaDB

增加一个超级用户用于网页端管理,新版的 MariaDB 与 MySQL 已不允许用户使用 root 在命令行以外的场合登录

接下来托管 phpMyAdmin 即可使用新创建的用户登录

PHP

托管 phpMyAdmin 需要安装 php-xml 模块

将网站文件复制后确认权限正确

SSH

几乎同理,参照 Rserver 配置

LDAP

安装配置 LDAP 前,先创建好需求的 100 个用户

这个肯定不能手敲,所以上 Shell 脚本:

红帽系可以使用 passwd --stdin ,但 Debian 的 passwd 不支持这个参数,所以需要使用另一个工具 chpasswd

脚本写完,保存为 useradd.sh,赋予执行权限直接运行,或者:

安装 slapd 与 migrationtools

并配置 slapd

修改 /etc/migrationtools/migrate_common.ph,将原有域名改成需求的 dc=sdskills,dc=com

migrationtools 脚本有一个 bug,由于 Debian 没有将文件放在该放的位置导致脚本找不到 migrate_common.ph 文件而报错。

进入脚本的存放目录

修复发行版的一个 Bug,链接 migrate_common.ph/etc/perl

运行 migrate_all_online.sh 将本地信息合并进 LDAP

其中,手动指定 ldapadd 命令的 -c 参数使其忽略错误,根据 Debian 文档指定 ETC_ALIASES 变量来避免一个错误

Question

Answer

X.500 naming context

dc=sdskill,dc=com

LDAP server hostname

localhost

Manager DN

cn=admin,dc=sdskill,dc=com

Bind credentials

输入密码

Create DUAConfigProfile

no

生成证书私钥与证书签发请求

在 Rserver 上给证书签名

将证书传回 Server01

给证书文件赋予权限:

本例中所有证书存放在 /root

将 CA 根证书,Server01 的私钥,以及 LDAP 证书存放至 /etc/ssl/certs/

配置 LDAP config,加入证书位置

在 cn=config

保存退出,按 y 确认修改

修改 /etc/default/slapd 打开 ldaps:// 监听

Server02

Network

大同小异,不再赘述

Disk ( Raid5 )

添加硬盘

参数

说明

-C

创建软件 RAID

-v

显示详细信息

-l

指定阵列类型,此处为 RAID 5

-n

指定使用几块硬盘,不算备份盘

-x

指定使用几块硬盘作为备份

创建 LVM

写入 /etc/fstab 实现自动挂载

写入

NFS

修改 /etc/exports

重启服务

Server04

关于 DNS 解析的第三问

DNS 根这么写

图 1

DNS 默认配置文件 /etc/bind/named.conf.default-zones 修改根域名部分

即一个点

图 2

最后更新于

这有帮助吗?