注意:您有一个不能用的DNS域ilt.example.com,这个域中所有172.25.254.0/255.255.255.0的子网都在这个域中。XX for locahost number
desktop - 10 server - 11
- 1、配置SELinux。必须在两个系统desktopX和serverX中运行Enforcing模式,并且重启后依旧生效。
setenforce 1
- 2、设置SSH访问控制
- 用户能够在example.com这个域通过ssh远程访问您的两个虚拟机系统。
- 客户端在ilt.example.com这个域名中的是不能登录你的两个虚拟机系统的。
vim /etc/hosts.deny #拒绝名单
sshd:172.25.254. ip段
vim /etc/hosts.allow #允许名单(级别大于拒绝名单)
sshd:172.25.19.
systemctl restart sshd #重启下服务e
- 3、自定义用户环境
- 在系统desktopX和serverX上创建自定义命令名为qstat。此自定义命令将执行以下命令
- /bin/ps -Ao pid,tt,user.fname,rsz
- 此命令队系统中的所有用户生效
export qstat="/bin/ps -Ao pid,tt,user,fname,rsz" >> /etc/bashrc
. /etc/bashrc
- 4、配置端口转发
- 在系统desktopX配置端口转发,要求如下
- 在172.25.xx.0/24网络中的系统,访问desktopX的本地端口5423将被转发到80端口,此设置永久性生效。(xx for localhost number)
firewall-config
systemctl enable firewall
- 5、配置聚合链路(xx for localhost number)
- 在desktopX.example.com和serverX.example.com之间按以下要求配置
- 此链路使用接口eth1和eth2
- 此链路在desktopX使用下面的地址172.16.xx.25/255.255.255.0
- 此链路在serverX使用下面的地址172.16.xx.35/255.255.255.0
- 此链路在系统重启之后依然保持正常状态
/etc/sysconfig/network-scripts
cp /usr/share/doc/teamd-1.9/example_ifcfgs/3/* ./
修改 ifcfg-team_test0
-----------------------------------
DEVICE="team_test0"
DEVICETYPE="Team"
ONBOOT="yes"
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=172.16.12.25
TEAM_CONFIG='{"runner": {"name": "activebackup"}}'
----------------------------------
systemctl restart network #需要重启两次
teamdctl team_test0 sta #查看状态
- 6、配置IPv6地址。在您的考试系统上配置接口eth0使用下列IPv6地址:
- desktopX上的地址应该是200e:ac18::e0a/64
- serverX上的地址应该是200e:ac18::e14/64
- 两个系统必须能与网络200e:ac18/64内的系统通信
- 地址必须在重启后依旧生效
- 两个系统必须保持当前的IPv4地址并能通信
vim ifcfg-eth0
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=200e:ac18::e0a/64
- 7、配置本地邮件服务
- 在系统desktopX和serverX上配置邮件服务器,满足以下要求
- 这些系统不接受外部发来的邮件
- 在这些系统上本地发送的任何邮件都会自动路由到classroom.example.com
- 从这些系统上发送的邮件显示来自于example.com
- 你可以通过发送邮件到本地用户‘root’来测试你的配置,系统classroom.example.com已经配置把此用户的邮件转到下列URL http://classroom/received_mail/11/
vim /etc/postfix/main.cf
inet_interfaces = all
myorigin = example.com
local_transport = error:xx
relayhost = classroom.example.com
systenctk restart postfix
systemctl enable postfix
- 8、desktopX用SMB服务器共享/common目录
- 你的SMB服务器上的所有成员必须在SMBGROUP这个工作组中。
- 共享名必须是common。
- 这个common共享目录仅仅只能让example.com域中的客户端访问。
- 这个共享名必须是可浏览的
- natasha必须对这个共享文件有读的权限,如果有必要,可以设置用户访问密码为redhat
yum install samba* -y #服务端
/etc/samba/smb.conf
workgroup = SMBGROUP #设置工作组
[common] #与文件路径同名
comment = linhut #描述
path = /common #共享资源名
#read list= natasha #读权限用户,添加这个名单就只有里面的可以读
browseable = yes #共享资源是否允许用户浏览
hosts allow = 172.25.12. #允许访问的(这里题目DNS域解析为这个段)
------------/common 所有人可读权限
cat /etc/samba/smb.conf | grep chcon
chcon -t samba_share_t /common -R #修改selinux权限
useradd natasha
smbpasswd -a natasha
yum install samba-client -y #客户端
smbclient //d19.example.com/common -U natasha
systemctl enable smb
firewall-cmd --add-service=samba --permanent
firewall-cmd --reload
- 9、配置多用户SMB挂载。在desktopX共享通过SMB目录/miscellaneous满足一下要求
- 共享名为miscellaneous
- 共享目录只能被example.com域中的客户端使用
- 共享目录miscellaneous必须可以被浏览
- 用户silene必须能以读的方式访问此共享,密码是redhat
- 用户akira必须能以读写的方式访问此共享,密码是redhat
- 此共享目录永久挂载在serverX.example.com上的/mnt/multi目录下,并使用用户selene作为认证,任何用户可以通过用过akira来临时获取写的权限
yum install samba-client -y
/etc/samba/smb.conf
添加
[miscellaneous] #与文件路径同名
comment = linhut #描述
path = /miscellaneous #共享资源名
#read list= silene #有读权限用户
write list = akira #读写权限用户
browseable = yes #共享资源是否允许用户浏览
hosts allow = 172.25.12. #允许访问的(这里题目DNS域解析为这个段)
chcon -t samba_share_t /miscellaneous -R #修改selinux权限
useradd akira
useradd sliene
smbpasswd -a akira
smbpasswd -a silene
yum install cifs-utils -y
vim /etc/fstab
//d12/miscellaneous /mnt/multi cifs defaults,user=silene,password=redhat,sec=ntlmssp,multiuser 0 0
yum install cifs-utils -y
su - student(需要在普通用vim 户下)
cifsiostat add d12.example.com -u akira #到普通用户目录下授权
- 10、配置nfs服务,在desktopX上配置nfs服务,要求如下
- 以只读的方式共享目录/public,同时只能被example.com域中的系统访问。
- 以读写的方式共享/protected需要通过Kerberos安全加密,您可以使用下面URL提供的密钥http://classroom.example.com/pub/keytabs/desktopXX.keytab(xx for localhost number)
- 目录/protected应该包含名为confidential拥有人为deepak的子目录
- 用户deepak能以读写方式访问/protected/confidential
systemctl enable nfs-server #设置开机自启
netstat -tpln #查看111端口是否打开
mkdir /public
vim /etc/exports
/public 172.25.12.0/255.255.255.0(ro,sync)
systemcl restart nfs-server
exportfs -v
cat /var/lib/nfs/etab
打开程序:
mountd ntp rpc-bind
- 11、挂载一个NFS共享。在serverX上挂载一个来自desktopX.example.com的NFS共享,并符合下列要求
- /public挂载在下面的目录上/mnt/nfsmount
- /protected挂载在下面的目录上/mnt/nfssecure并使用安全的方式,密钥下载URL如下:http://classroom.example.com/pub/keytabs/serverXX.keytab
- 用户deepak能够在/mnt/nfssecure/confidential上创建文件
- 这些文件系统在系统启动时自动挂载
vim /etc/fstab
172.25.12.10:/public /mnt/nfsmount nfs default 0 0
mount -a
- 12、架设一个web服务器。在serverX上配置一个站点:http://serverX.example.com,然后执行下面步骤
- 从服务器上下载://classroom.example.com/pub/web/server.html
- 将下载的文件更名为index.html
- 拷贝这个index.html的去你的web服务器的DocumentRoot
- 不能修改index.html中的任何内容
- 要求来自example.com这个域的成员可以访问stationX.example.com站点。
- 来自于ilt.example.com域的客户端拒绝访问此web
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName server19.example.com
<Directory /var/www/html>
<RequireAll>
Require all granted
Require not ip 172.25.254.
</RequireAll>
</Directory>
<Directory /var/www/html/secret>
require local
require all denied
</Directory>
</VirtualHost>
- 13、配置安全web服务
- 为站点http://serverX.example.com配置TLS加密,一个已经签名证书从http://classroom.example.com/pub/tls/certs/serverX.crt获取,此证书的密钥从http://classroom.example.com/pub/tls/private/serverX.key获取,此证书的签名授权信息从http://classroom/pub/example-ca.crt获取
<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName server12.example.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/serevr12.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server12.key
SSLCertificateChainFile /etc/pki/tls/certs/example-ca.crt
</VirtualHost>
cd /etc/pki/tls/certs
wget -c http://classroom/pub/example-ca.crt
- 14、配置虚拟主机。在serverX上扩展您的web服务器,为站点http://wwwX.example.com创建一个虚拟主机,然后执行下述步骤
- 设置 DocumentRoot为/var/www/virtual
- 从http://classroom.example.com/pub/web/www.html
- 将下载的文件更名为index.html
- 这个index.html文件是在你的DocumentRoot中
- 确保用户natasha可以在/var/www/virtual的文件中创建内容
- 注意:原始站点http://serverX.example.com必须仍然能够访问,名称服务器example.com提供对主机名wwwX.example.com的域名解析。
useradd natasha
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www12.example.com
</VirtualHost>
setfacl -m u:natasha:rwx virtual
setfacl -m d:natasha:rwx virtual
- 15、配置web内容的访问。在您的serverX上的web服务器的DocumentRoot目录下创建一个名为secret的目录,要求如下
- 从http://classroom/pub/web/private.html下载此网页
- 不要对这个文件的内容做任何修改
- 从serverX上,任何人都可以浏览secret的内容,但是从其他系统不能访问这个目录内容
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www12.example.com
<Directory /var/www/virtual/secret>
require local
require all denied
</Directory>
</VirtualHost>
- 16、实现动态web内容,在serverX上配置提供动态web内容,要求如下:
- 动态内容由名为webappX.example.com的虚拟主机提供
- 虚拟主机侦听端口8899
- 从http://classroom.example.com/pub/web/webapp.wsgi下载一个脚本,然后放在适当的位置,无论如何不要修改此文件内容
- 客户点访问http://webappX.example.com:8899时,应该接收到动态生成的web页面
- 此http://webaapX.example.com:8899必须能被example.com域内的所有系统访问
Listen 8899
<VirtualHost *:8899>
DocumentRoot "/var/www/webapp"
ServerName webapp12.example.com
WSGIscriptalias / /var/www/webapp/webapp.wsgi
<Directory /var/www/webapp>
require ip 172.25.12.
require all denied
</Directory>
</VirtualHost>
semanage port -l | grep http
semanage port -at http_port_t 8899 -p tcp
firewall-cmd --add-port=8899/tcp --permanent
- 17、写一个脚本/root/program,要求当个脚本输入参数kernel时,脚本返回user,当给脚本输入参数user时,脚本返回kernel。当脚本没有参数或者参数错误时,从标准错误输出中输出“usage:/root/program kernel|user”
#/bin/bash
if [ "$1" == "kernel" ];then
echo "user"
elif [ "$1" == "user" ];then
echo "kernel"
else
echo "usage:/root/program kernel|user"
fi
- 18、创建一个添加用户脚本。在desktopX上创建一个脚本,名为/root/mkusers,此脚本能实现为系统desktopX创建本地用户,并且这些用户的用户名来自一个包含用户列表的文件。同时满足以下要求:
- 此脚本要求提供一个参数,此参数就是包含用户列表的文件
- 如果没有提供参数,此脚本应该给出下面的提示信息Usage:/root/mkusers,然后退出并返回相应的值
- 如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found,然后退出并返回相应的值
- 创建用户登录shell为/bin/false
- 此脚本不需要为用户设置密码
- 你可以从下面的URL获取用户名列表作为测试用http://classroom.example.com/pub/web/userlist
#/bin/bash
if [ $# -eq 0 ];then
echo "Usage:/root/mkusers"
exit 1
fi
if [ ! -f $1 ];then
echo "input file not found"
exit 1
fi
while read line
do
useradd -s /sbin/nologin $line
echo "成功创建user:"$line
done < $1
下面没符合题意不过代码更加流畅
#/bin/bash
if [ $# -eq 0 ];then
echo "Usage:/root/mkusers"
elif [ ! -f $1 ];then
echo "input file not found"
else
while read line #读行
do
useradd -s /sbin/nologin $line
echo "成功创建user:"$line
done < $1
fi
- 19、配置iscsi服务。配置desktopX提供一个iscsi服务,磁盘名为iqn.2014-11.com.example:desktopX,并符合下列要求:
- 服务端口为3260
- 使用iscsi_vol作其后端卷,大小为3G
- 此服务职能被serverX.example.com访问
fdisk /dev/sdb
yum install targetcli* -y
systemctl enable target
targetcli
/backstores> block/ create iscsi_vol /dev/sdb3
/iscsi>create iqn.2014-11.com.example:desktop12
/iscsi> cd iqn.2014-11.com.example:172.25.12.10
cd tpg1/
/iscsi/iqn.20...25.11.10/tpg1> acls/ create iqn.2014-11.com.example:server12
/iscsi/iqn.20...25.11.10/tpg1> luns/ create /backstores/block/iscsi_vol
/iscsi/iqn.20...25.11.10/tpg1> portals/ create 172.25.12.10
/iscsi/iqn.20...25.11.10/tpg1> set attribute demo_mode_write_protect=0
/iscsi/iqn.20...25.11.10/tpg1> set attribute authentication=0
/iscsi/iqn.20...25.11.10/tpg1> set attribute generate_node_acls=1
/iscsi/iqn.20...25.11.10/tpg1> exit
firewall-cmd --add-port=3260/tcp --permanent
firewall-config
- 20、配置iscsi的客户端。配置serverX使其能建立连接在system1上提供的iqn.2014-11.com.example:desktopX并符合以下要求:
- iscsi设备在系统启动期间自动加载
- 块设备iscsi上包含一个大小为1700M的分区,并且格式化为xfs.
- 分区挂载在/mnt/data上,同时开机重启后依旧生效。
man iscsi
/exampie
yum install iscsi-initiator-utils -y
iscsiadm -m discovery -t st -p 172.25.12.10 -l
ldkid
fdisk /dev/sda --分一个1700M分区
mkfs.xfs /dev/sda1
vim /etc/fstab
UUID="adaSDASDdsdjasdmalDSDSAFSDF" /mnt/data xfs defaults,_netdev 0 0
- 21、配置一个数据库。在desktopX上创建MariaDB数据库,名为Contacts,并符合以下条件:
- 数据库应该包含来自数据库复制的内容,复制文件的URL为http://classroom.example.com/pub/web/users.mdb
- 数据库只能本地主机访问
- 除了root用户,此数据库只能被用户Luigi查询。此用户密码为redhat。
- root用户密码为redhat,同时不允许空密码登陆
yum install mariadb* -y
cd /root && wget -c http://classroom.example.com/pub/web/users.mdb
mysql_secure_installation #设置root密码
>mysql -uroot -predhat
create database Contacts;
use Contacts;
show tables;
source /root/users.mdb;
grant select on Contacts.* to Luigi@'localhost' identified by'redhat';
select Host,User,Password,Select_priv from mysql.user;
- 22、数据库查询。在系统desktopX上使用Contacts,并使用相应的SQL查询以下回答以下问题:
- 密码是tangerine的人的名字?
- 有多少人的姓名是John同时居住在Santa Clara?
use Contacts;
select firstname,lastname from name where aid in (select bid from pass where password="tangerine");
select count(firstname) from name where firestname="John" and aid in (select cid from loc where loction="Santa Clara");
评论