Chapter15 - 总结练习
您负责配置公司的新系统:serverX 。应根据以下要求配置该系统:
- 您的serverX 系统有两个接口,分别名为 slave1 和slave2 .这两个接口应该从属于名为 team1 的新合作设备。
合作设备应使用 activebackup 运行程序,并且使用以下 IP 地址来配置。
192.168.0.100/24
fd00:ba5e:ba11:X::1/64
成功配置后,192.168.0.254 和 fd00:ba5e:ba11:X::fe 应该可以 Ping 通。
view config
nmcli con add type team con-name team1 ifname team1 config '{"runner":{"name":"activebackup"}}' \
ip4 192.168.0.100/24 \
ip6 fd00:ba5e:ba11:0::1/64 #创建team1 网卡
nmcli con add type team-slave con-name team1-slave1 ifname slave1 master team1 #添加网卡到 team1
nmcli con add type team-slave con-name team1-slave2 ifname slave2 master team1 #添加网上到 team1
nmcli con mod team1 connection.autoconnect yes #设备开机启动
nmlci con mod team1-slave1 connection.autoconnect yes #设备开机启动
nmcli con mod team1-slave2 connection.autoconnect yes #设备开机启动
nmcli con up team1-slave1 #启动网卡
nmcli con up team1-slave2 #启动网卡
nmcli con up team1 #启动网卡
teamdctl team1 state # 查看 team1 的状态
###测试
ping -c3 192.168.0.254
ping6 -c3 fd00:ba5e:ba11:0::fe
- 您的serverX 系统应在 172.25.X.0/24 子网上为系统提供缓存 DNS 服务,并使用 172.25.254.254 作为转发器。
应绕过对example.com 域的 DNSSEC 验证。
view config
#安装软件
yum -y install unbound
vim /etc/unbound/unbound.conf
{
# 监听所有网卡
interface: 0.0.0.0
interface: ::0
#应用网段 172.25.x.0/24 的本地
access-control: 172.25.x.0/24 allow
#对 example.com 绕过 DNSSEC 验证
domain-insecure: "example.com"
#设置172.25.254.254为转发器
forward-zone:
name: "."
forward-addr: 172.25.254.254
}
#设置开机开启并启动
systemctl enable unboud
systemctl start unbound
#开通防火墙
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
- 您的serverX 系统应通过 SMTP 接受来自 172.25.X.0/24 子网的新电子邮件消息。未寻址到 @serverX.example.com 或 @localhost[.localdomain] 的所有消息都应转发到 desktopX.example.com 上运行的 SMTP 智能主机。
view config
#安装postfix软件
yum -y install postfix
#监听所有网卡
postconf -e "inet_interfaces = all"
#接受来自 172.25.X.0/24 子网
postconf -e "mynetworks = 172.25.0.0/24, 127.0.0.0/8"
#配置 仅对 serverX.example.com、localhost、localhost.localdomain 域执行本地发送
postconf -e "mydestination = serverX.example.com, localhost, localhost.localdomain"
#配置 mydestination 中未包含的所有邮件发送到 desktopX.example.com
postconf -e "relayhost = [desktopX.example.com]"
#设置开机开启并启动
systemctl enable postfix
systemctl start postfix
#设置防火墙
firewall-cmd --permanent --add-service=smtp
firewall-cmd --reload
:::
- 您的 serverX 应导出名为 iqn.2014-06.com.example:server0.zoidberg 的 iSCSI 磁盘。应在辅助硬盘上使用 512MB 分区来支持此iSCSI 设备。仅应允许访问 IQN 为 iqn.2014-06.com.example:desktopX 的客户端。
view config
#创建分区
[student@server0 Desktop]$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa53bb816.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +512M
Partition 1 of type Linux and of size 512 MiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[student@server0 Desktop]$ partprobe
#安装 target targetcli
yum install targetd targetcli -y
#配置IQN
[student@server0 Desktop]$ sudo targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> backstores/block create server0.zoidberg /dev/sdb1 #创建black
Created block storage object server0.zoidberg using /dev/sdb1.
/> iscsi/ create iqn.2014-06.com.example:server0.zoidberg #创建 iqn
Created target iqn.2014-06.com.example:server0.zoidberg.
Created TPG 1.
/> iscsi/iqn.2014-06.com.example:server0.zoidberg/tpg1/luns create /backstores/block/server0.zoidberg #创建lun
Created LUN 0.
/> iscsi/iqn.2014-06.com.example:server0.zoidberg/tpg1/portals create 172.25.0.11 3260 #创建 portals
Using default IP port 3260
Created network portal 172.25.0.11:3260.
/> iscsi/iqn.2014-06.com.example:server0.zoidberg/tpg1/acls create iqn.2014-06.com.example:desktop0 #创建acls
Created Node ACL for iqn.2014-06.com.example:desktop0
Created mapped LUN 0.
/> saveconfig #保存
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
#设置开机开启并启动
systemctl enable targetd
systemctl start targetd
#设置防火墙
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
:::
- 您的serverX 系统上应使用 NFSv4 导出(新的) /exports/hypnotoad 目录。这一导出需要 Kerberos 验证和和完全加密。172.25.X.0/24 子网上的所有客户端应对该导出具有读写权限。
底层 /exports/hypnotoad 目录上的文件系统权限应为 1777 。
您的 desktopX 和 serverX 系统均已针对用户信息和验证配置了 LDAP 和Kerberos。还使用Kerberos 的客户端keytab 配置了 desktopX.
可以从 http://classroom.example.com/pub/keytabs/serverX.keytab 获取 serverX 系统的 keytab 。
view config
#安装软件包
yum install nfs-utils authconfig sssd krb5-workstation
#创建共享目录,并有权限 1777
mkdir -m 1777 -p /exports/hypnotoad
#创建共享内容
vim /etc/exports
/exports/hypnotoad 172.25.x.0/24(sec=krb5p,rw)
#下载并保存 keytab
wget -O '/etc/krb5.keytab' #启动并启用 nfs-server , nfs-secure-server
systemctl enable nfs-server nfs-secure-server
systemctl start nfs-server nfs-secure-server
#设置防火墙
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
- 您的 serverX 系统应使用 smb 导出(新的)目录 /exports/bigbang 。该目录应该由 bigbang 组拥有,并且在该目录中创建的任何新文件也都应自动由 bigbang 组拥有。
共享名称应为 bigbang ,并且仅限 Samba 的用户 penny 应能够使用密码 I<3Sheldon 连接读写。penny 应该是 bigbang 组成员。
view config
#安装samba
yum install samba samba-client
#创建samba 用户和组
groupaddd bigbang
useradd -G bigbang -s /sbin/nologin penny
#创建目录并授权
mkdir -m 2770 -p /exports/bigbang
chgrp -R bigbang /exports/bigbang
#设置 selinux
semanage fcontext -a -t samba_share_t "/exports/bigbang(/.*)?"
restorecon -RFv /exports/bigbang
#创建共享目录配置
vim /etc/samba/smb.conf
[bigbang]
comment = bigbang share
path = /exports/bigbang
valid user = @bigbang
write list = @bigbang
#设置共享用户penny 及密码 I<3Sheldon
pdbedit -a -u penny
#或
smbpasswd -a penny
#启动并启用 smb.service
systemctl enable smb
systemctl start smb
#设置防火墙
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
- 您的serverX 系统应在端口 444/tcp 上提供两个受 TLS 保护的域 wwwX.example.com 和 webappX.example.com 。这些域应分别提供来自 /srv/wwwX/www 和 /srv/webappX/www 的内容。
https://wwwX.example.com:444:444 上面支持 TLS 的网站应该以下列文本作出响应:
This is wwwX
网站 https://webappX.example.com:444 应通过执行在 /home/student/myapp.php 中找到的 PHP 应程序来作出响应。
您将需要以下证书和密钥才能完成这一要求:
http://classroom.example.com/pub/example-ca.crt
http://classroom.example.com/tls/certs/wwwX.crt
http://classroom.example.com//tls/private/wwwX.key
http://classroom.example.com/tls/certs/webappX.crt
http://classroom.example.com//tls/private/webappX.key
PHP 应用程序需要一个数据库才能运行。工作数据库的完成备份(mysqldump) 位于 /home/student/mydb.mysqldump 中。
view config
#安装相关软件
yum install -y httpd mod_ssl mariadb-server php php-mysql
#启动并启用 mariadb,导入数据
systemctl enable mariadb
systemctl start mariadb
mysql < /home/student/mydb.mysqldump
#创建站点目录,并添加相关内容
mkdir -p /srv/{wwwX,webappX}/www
cp /home/student/myapp.hph /srv/webappX/www/index.php
echo "This is wwwX" | tee /srv/wwwX/www/index.html
#设置 selinux
semanage port -a -t http_port_t -p tcp 444
semanage fcontext -a -t httpd_sys_content_t "/srv/(/.*)?"
sudo restorecon -RFv /srv
#下载相关密钥和证书
cd /etc/pki/tls/certs
wget wget
wget
cd /etc/pki/tls/private
wget
wget
chmod 0400 *.key
#配置httpd.conf 监听 444 端口
vim /etc/httpd/conf/httpd.conf
Listen 444 https
#虚拟主机配置
#www0.conf
======================www0
<Virtualhost *:444>
ServerName www0.example.com
DocumentRoot /srv/www0/www
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLHonorCipherOrder on
SSLCertificateFile /etc/pki/tls/certs/www0.crt
SSLCertificateKeyFile /etc/pki/tls/private/www0.key
SSLCertificateChainFile /etc/pki/tls/certs/example-ca.crt
</Virtualhost>
<Directory /srv/www0/www>
Require all granted
</Directory>
======================
#webapp0.conf
======================webapp0
<Virtualhost *:444>
ServerName webapp0.example.com
DocumentRoot /srv/webapp0/www
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLHonorCipherOrder on
SSLCertificateFile /etc/pki/tls/certs/webapp0.crt
SSLCertificateKeyFile /etc/pki/tls/private/webapp0.key
SSLCertificateChainFile /etc/pki/tls/certs/example-ca.crt
</Virtualhost>
<Directory /srv/webapp0/www>
Require all granted
</Directory>
======================
- 在您的 desktopX 计算机上,创建一个名为 /home/student/bin/myusers 的新脚本(可执行文件)。
使用 userlist 参数调用脚本时,该脚本应通过 /sbin/nolgin 之外的 shell 返回 /etc/passwd 中定义的所有用户的列表。输出应该是用户名的列表,每行一个,按字母顺序排序。
使用 userinfo 参数调用脚本时,该脚本应返回第二个参数的首选 shell ,或者返回 “invalid user”(如果该用户不存在)。如果第二个参数为空或者未定义,则必须显示错误消息 “Please specify a username”,并且必须返回退出代码 132 。
如果不使用任何参数来调用脚本,则必须显示以下文本:
myusers userlist
myusers userinfo <USERNAME>
示例
[student@desktopX ~]$ myusers
myusers userlist
myusers userinfo <USERNAME>
[student@desktopX ~]$ myuser userlist
halt
root
shutdown
student
sync
[student@desktopX ~]$ myuser userinfi student
/bin/bash
先前未指定的任何错误条件不应返回任何输出,且退出代码为0。
view config
#!/bin/bash
if [ $# -eq 0 ];then
echo "$(basename $0) userlist"
echo "$(basename $0) userinfo <USERNAME>"
fi
case $1 in
userlist)
grep -v ':/sbin/nologin$' /etc/passwd | cut -d : -f1 | sort
;;
userinfo)
if [ -z "$2" ];then
echo "Please specify a username"
exit 132
fi
if ! getent passwd $2 &> /dev/null;then
echo "invalid user"
exit
fi
getent passwd $2 | cut -d: -f7
;;
*)
exit
;;
esac
所有更改必须重新启动后继续生效。完成配置 serverX 系统,请将其重新启动,然后在 desktopX 上运行以下命令以验证您的工作。
[student@desktopX ~] lab sa3-review grade