下午RHCE部分:
第一题:配置SELinux
在server0和desktop0上要求SELinux的状态为enforcing。
要求系统重启后依然生效。
vim /etc/selinux/config
SELINUX=enforcing
setenforce 1
getenforce
第二题:配置防火墙
在server0和desktop0上设置防火墙,对SSH实现访问限制:
允许example.com域的客户对server0和desktop0进行ssh访问。
禁止my133t.org域的客户对server0和desktop0进行ssh访问。
备注:my133t.org是在172.17.10.0/24网络。(根据考试实际提供的网段配置)
systemctl mask iptables
systemctl mask ip6tables
systemctl enable firewalld
systemctl start firewalld
firewall-config #图形化设置
configuration: permanent
zone :public
services :ssh
rich rules
add
family : ipv4
element :service ssh
action : reject
source : 172.17.10.0/24
ok
options reload firewalld
firewall-cmd –list-all #检查是否生效
第三题:配置IPv6地址
在你的考试系统上配置接口eth0使用以下IPv6地址:
system1上的地址应该是2003:ac18::305/64
system2上的地址应该是2003:ac18::30a/64
两个系统必须能与网络2003:ac18/64内的系统通信
地址必须在重启后依旧生效。
两个系统必须保持当前的IPv4地址并能通信
nm-connection-editor
eth0 edit
ipv6 settings manual
2003:ac18::305 64
ok
systemctl restart network
ping6 2003:ac18::305
第四题:配置链路聚合
在system2和system1之间按以下要求设定一个链路:
此链路使用接口eth1和eth2
此链路在一个接口失效时仍然能工作
此链路在system1使用下面的地址172.16.3.40/255.255.255.0
此链路在system2使用下面的地址172.16.3.45/255.255.255.0
此链路在系统重启之后依然保持正常状态
nmcli con add type team con-name team0 ifname team0 config
‘{“runner”:{“name”:”activebackup”}}’
#在man teamd.conf 里面的第316行有此字段
nmcli con mod team0 ipv4.addresses ‘172.16.3.40/24’ ipv4.method manual
connection.autoconnect yes
nmcli con add type team-slave con-name team0-port1 ifname eth1 master team0
nmcli con add type team-slave con-name team0-port2 ifname eth2 master team0
nmcli con up team0-port1
nmcli con up team0-port2
nmcli con up team0
teamdctl team0 state
ping system1.group8.example.com
nmcli dev dis eth1
nmcli con up team0-port1
teamdctl team0 state
ping system1.group8.example.com
第五题:自定义用户环境
在系统system1和system2上创建自定义命令为qstat ,要求:
此自定义命令将执行以下命令:/bin/ps -Ao pid,tt,user,fname,rsz
此命令对系统中的所有用户有效
vim /etc/bashrc
alias qstat=’/bin/ps -Ao pid,tt,user,fname,rsz’
. /etc/bashrc
alias 验证
第六题:配置本地邮件服务
在系统 system2 和system1 上配置邮件服务,要求:
这些系统不接收外部发送来的邮件
在这些系统上本地发送的任何邮件都会自动路由到mail.group8.example.com
从这些系统上发送的邮件显示来自于server.group8.example.com
您可以通过发送邮件到本地用户 dave 来测试您的配置,系统 server.group8.example.com 已经配置把此用户的邮件转到URL http://server.group8.example.com/pub/received_mail/8
systemctl status postfix
firewall-cmd –permanent –add-service=smtp #不确定要不要加
firewall-cmd –reload
postconf -e “inet_interfaces=loopback-only”
postconf -e “myorigin=server.group8.example.com” 重写本地邮件显示来源域
postconf -e “relayhost=[mail.group8.example.com]” 指定中继邮件服务器
systemctl restart postfix
mail -s “hello” dave
curl http://server.group8.example.com/pub/received_mail/8
#或者直接修改配置文件 vim /etc/postfix/main.cf 在最尾行加入
第七题:配置端口转发
在系统 system1 设定端口转发,要求:
在172.24.8.0/24网络中的系统,访问system1的本地端口 5423 将被转发到 80
此设置必须永久有效。
firewall-config
configuration permanent
zone public
rich rules
add
family ipv4
element forward-port 点旁边框框
source protocol tcp #tcp和udp两个协议都要添加
port/port range 5423
destination port/port range 80
source ip 172.24.8.0/24
add
family ipv4
element forward-port 点旁边框框
source protocol udp #这一次是udp协议
port/port range 5423
destination port/port range 80
source ip 172.24.8.0/24
option reload firewalld
firewall-cmd –list-all
第八题:通过SMB共享目录
在 system1 上配置SMB服务 ,要求:
您的SMB服务器必须是STAFF工作组的一个成员
共享/common目录,共享名必须为common
group8.example.com 域内的客户端可以访问common共享
Common必须是可以浏览的
用户 andy 必须能够读取共享中的内容,如果需要的话,验证密码是redhat
system1:
yum install samba samba-client
systemctl enable smb nmb
systemctl start smb nmb
mkdir /common
vim /etc/samba/smb.conf
workgroup = STAFF
security = user #确保项
passdb backend = tdbsam #确保项
[common]
path = /common
hosts allow = 172.24.8. #记得末尾有点
writable = no
browseable = yes
systemctl restart smb nmb
firewall-cmd –permanent –add-service=samba
firewall-cmd –reload
chcon -t samba_share_t /common/
smbpasswd -a andy
password : redhat
在system2上验证
yum install samba-client
smbclient //172.24.8.11/common -U andy #system1 ip
第九题:配置多用户SMB挂载
在 system1 通过 SMB 共享目录 /devops ,并满足下列要求:
共享名为 devops
共享目录 devops 只能 group8.example.com 域中的客户端使用
共享目录 devops 必须可以被浏览
用户 silene 必须能以读的方式访问此共享,访问密码是redhat
用户 akira 必须能以读写的方式访问此共享,访问密码是redhat
此共享永久挂载在 system2.group8.example.com 上的 /mnt/dev 目录,并使用用户 silene 作为认证任何用户,可以通过用户 akira 来临时获取写的权限
system1:
mkdir /devops
vim /etc/samba/smb.conf
[devops]
path = /devops
hosts allow = 172.24.8.
writable = no
browseable = yes
write list = akira
chcon –t samba_share_t /devops
setfacl -m u:akira:rwx /devops
smbpasswd -a silene
password:redhat
smbpasswd -a akira
password:redhat
systemctl restart smb nmb
system2:
验证:smbclient //system1/devops/ -U silene
yum install cifs-utils
mkdir /mnt/dev
vim /etc/fstab
//172.24.8.11/devops /mnt/dev cifs defaults,multiuser,username=silene,password=redhat,sec=ntlmssp 0 0
mount -a
验证:
df
su – silene
cifscreds add 172.24.8.11
cd /mnt/dev
touch a
exit
su – akira
cifscreds add 172.24.8.11
cd /mnt/dev
touch a
ls
a abc.txt
第十题:配置NFS服务
在 system1 配置NFS服务,要求如下:
以只读的方式共享目录 /public ,同时只能被 group8.example.com 域中的系统访问
以读写的方式共享目录 /protected ,同时只能被 group8.example.com 域中的系统访问
访问 /protected 需要通过Kerberos安全加密,您可以使用下面URL提供的密钥
http://server.group8.example.com/pub/keytabs/system1.keytab
目录 /protected 应该包含名为 project 拥有人为 andres 的子目录
用户 andres 能以读写方式访问 /protected/project
systemctl enable nfs-server nfs-secure-server
systemctl start nfs-server #这里直接启动nfs-secure-server会失败
firewall-cmd –permanent –add-service=nfs
firewall-cmd –reload
mkdir /public
mkdir -p /protected/project
chown andres /protected/project
chcon -R -t public_content_t /public
chcon -R -t public_content_t /protected
wget -O /etc/krb5.keytab http://server.group8.example.com/pub/keytabs/system1.keytab
vim /etc/exports
/public *.group8.example.com(ro,sec=sys,sync)
/protected *.group8.example.com(rw,sec=krb5p,sync)
/etc/sysconfig/nfs
RPCNFSDARGS=”-V 4.2″
systemctl restart nfs-server nfs-secure-server #7.2以上nfs-secure-server会自动启动
exportfs -ra
exportfs #检验
第十一题:挂载一个NFS共享
在 system2 上挂载一个来自 system1.group8.example.com 的NFS共享,并符合下列要求:
/public 挂载在下面的目录上 /mnt/nfsmount
/protected挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载URL如下:
http://server.group8.example.com/pub/keytabs/system2.keytab
用户 andres 能够在 /mnt/nfssecure/project 上创建文件
这些文件系统在系统启动时自动挂载。
system2:
mkdir /mnt/nfsmount mkdir /mnt/nfssecure
wget -O /etc/krb5.keytab http://server.group8.example.com/pub/keytabs/system2.keytab
vim /etc/fstab
172.24.8.11:/public /mnt/nfsmount nfs defaults,sec=sys 0 0
172.24.8.11:/protected /mnt/nfssecure nfs defaults,sec=krb5p,v4.2 0 0
systemctl enables nfs-secure
systemctl start nfs-secure
mount -a
验证:
su -andres
klist #查看
kinit #获取证书
cd /mnt/nfssecure/project/
touch hello
ls
#注意时间同步问题,有可能导致失败!
第十二题:实现一个web服务器
在 system1 上配置一个站点 http://system1.group8.example.com/,然后执行下述步骤:
从 http://server.group8.example.com/pub/system1.html 下载文件,并且将文件重名为 index.html 不要修改此文件的内容
将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
来自于 group8.example.com 域的客户端可以访问此web服务
来自于my133t.org域的客户端拒绝访问此web服务
yum install httpd
systemctl enable httpd
systemctl start httpd
firewall-cmd –permanent –add-service=http
firewall-cmd –reload
firewall-cmd –list-all #检测规则
cd /etc/httpd/conf.d/
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf .
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot “/var/www/html”
ServerName system1.group8.example.com
<Directory “/var/www/html”>
<RequireAll>
Require all granted
Require not host .my133t.org
</RequireAll>
</Directory>
</virtualHost>
cd /var/www/html/ #注意一定要进入目录后才下载,否则值会改变
wget -O /var/www/html/index.html http://server.group8.example.com/pub/system1.html
systemctl restart httpd
ss -nutpl | grep -w 80 #检测
测试:system2
curl system1.group8.example.com
第十三题:配置安全web服务
为站点 http://system1.group8.example.com 配置TLS加密:
一个已签名证书从 http://server.group8.example.com/pub/tls/certs/system1.crt 获取
此证书的密钥从 http://server.group8.example.com/pub/tls/private/system1.key 获取
此证书的签名授权信息从 http://server.group8.example.com/pub/tls/certs/ssl-ca.crt 获取
system1:
yum install mod_ssl
vim /etc/httpd/conf.d/httpd-vhosts.conf #继续编辑上题的文件
<VirtualHost *:443>
DocumentRoot “/var/www/html”
ServerName system1.group8.example.com
<Directory “/var/www/html”>
<RequireAll>
Require all granted
Require not host .my133t.org
</RequireAll>
</Directory>
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCACertificateFile /etc/pki/tls/certs/ssl-ca.crt
</virtualHost>
下载证书:
wget -O /etc/pki/tls/certs/system1.crt http://server.group8.example.com/pub/tls/certs/system1.crt
wget -O /etc/pki/tls/private/system1.key http://server.group8.example.com/pub/tls/private/system1.key
wget -O /etc/pki/tls/certs/ssl-ca.crt http://server.group8.example.com/pub/tls/certs/ssl-ca.crt
cd /etc/pki/tls/certs/ #检查
cd ..
cd private/ #继续检查
firewall-cmd –permanent –add-service=https
firewall-cmd –reload
firewall-cmd –list-all
systemctl restart httpd
检测:system2
curl -k https://system1.group8.example.com
第十四题:配置虚拟主机
在 system1 上扩展您的web服务器,为站点 http://www8.group8.example.com 创建一个虚拟主机,然后执行下述步骤:
设置 DocumentRoot 为 /var/www/virtual
从 http://server.group8.example.com/pub/www8.html 下载文件重名为 index.html ,不要对文件 index.html 的内容做任何修改
将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
确保 andy 用户能够在 /var/www/virtual 目录下创建文件
注意:原站点 http://system1.group8.example.com 必须仍然能够访问,名称服务器 server.group8.example.com 已经提供对主机名 www8.group8.example.com 的域名解析
mkdir /var/www/virtual
wget -O /var/www/virtual/index.html http://server.group8.example.com/pub/www8.html
setfacl -m u:andy:rwx /var/www/virtual/
vim /etc/httpd/conf.d/httpd-vhosts.conf #继续添加内容
<VirtualHost *:80>
DocumentRoot “/var/www/virtual”
ServerName www8.group8.example.com
<Directory “/var/www/virtual”>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</virtualHost>
httpd -t 检测语法
systemctl restart httpd
system2 测试效果:
curl -k https://system1.group8.example.com
curl -k http://system1.group8.example.com
curl -k https://www8.group8.example.com
curl -k http://www8.group8.example.com
第十五题:配置 web 内容的访问
在您的 system1 上的 web 服务器的 DocumentRoot 目录下,创建一个名为 private 的目录,要求如下:
从 http://server.group8.example.com/pub/private.html 下载一个文件副本到这个目录,并且重命名为 index.html
不要对这个文件的内容做任何修改
从 system1 上,任何人都可以浏览 private 的内容,但是从其它系统不能访问这个目录的内容。
没说之前搭建的哪个站点设置private文件夹,严谨起见,两个站点都设立private并实现
mkdir /var/www/html/private
mkdir /var/www/virtual/private
wget -O /var/www/html/private/index.html http://server.group8.example.com/pub/private.html
wget -O /var/www/virtual/private/index.html http://server.group8.example.com/pub/private.html
vim /etc/httpd/conf.d/httpd-vhosts.conf
在两个站点段落最后分别加入:
<Directory “/var/www/html/private”>
Require all denied
Require local
</Directory>
<Directory “/var/www/virtual/private”>
Require all denied
Require local
</Directory>
分别在system1和system2上检验:
curl http://system1.group8.example.com/private/ #注意此处private后的/不能省略
curl http://www8.group8.example.com/private/
第十六题:实现动态WEB内容
在 system1 上配置提供动态web内容,要求:
动态内容由名为 wsgi.group8.example.com 的虚拟主机提供
虚拟主机侦听在端口 8909
从 http://server.group8.example.com/pub/webinfo.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要求修改此文件的内容
客户端访问 http://wsgi.group8.example.com:8909/ 时,应该接收到动态生成的web页面
此 http://wsgi.group8.example.com:8909/ 必须能被 group8.example.com 域内的所有系统访问
vim /etc/httpd/conf.d/httpd-vhosts.conf #继续添加内容
Listen 8909
<VirtualHost *:8909>
ServerName wsgi.group8.example.com
WSGIScriptAlias / /var/www/html/webinfo.wsgi
</VirtualHost>
wget -O /var/www/html/webinfo.wsgi http://server.group8.example.com/pub/webinfo.wsgi
yum install mod_wsgi
firewall-cmd –permanent –add-rich-rule ‘rule family=”ipv4″ port port=8909 protocol=tcp accept’
firewall-cmd –reload
firewall-cmd –list-all
semanage port -a -t http_port_t -p tcp 8909
systemctl restart httpd
测试:
curl http://wsgi.group8.example.com:8909/
Apache完成版配置文件全图:
<VirtualHost *:80>
DocumentRoot “/var/www/html”
ServerName system1.group8.example.com
<Directory “/var/www/html”>
<RequireAll>
Require all granted
Require not host .my133t.org
</RequireAll>
</Directory>
<Directory “/var/www/html/private”>
Require all denied
Require local
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot “/var/www/html”
ServerName system1.group8.example.com
<Directory “/var/www/html”>
<RequireAll>
Require all granted
Require not host .my133t.org
</RequireAll>
</Directory>
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCACertificateFile /etc/pki/tls/certs/ssl-ca.crt
</VirtualHost>
<VirtualHost *:80>
DocumentRoot “/var/www/virtual”
ServerName www8.group8.example.com
<Directory “/var/www/virtual”>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
<Directory “/var/www/virtual/private”>
Require all denied
Require local
</Directory>
</VirtualHost>
Listen 8909
<VirtualHost *:8909>
ServerName wsgi.group8.example.com
WSGIScriptAlias / /var/www/html/webinfo.wsgi
</VirtualHost>
第十七题:创建一个脚本
在system1上创建一个名为 /root/foo.sh 的脚本,让其提供下列特性:
当运行 /root/foo.sh redhat ,输出为 fedora
当运行 /root/foo.sh fedora ,输出为 redhat
当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息:
/root/foo.sh redhat | fedora
vim /root/foo.sh
#!/bin/bash
case $1 in
redhat)echo “fedora”
;;
fedora)echo “redhat”
;;
*)echo “/root/foo.sh redhat | fedora” 1>&2
;;
esac
chmod +x /root/foo.sh
第十八题:创建一个添加用户的脚本
在 system1 上创建一个脚本,名为 /root/batchusers ,此脚本能实现为系统 system1 创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:
此脚本要求提供一个参数,此参数就是包含用户名列表的的文件
如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/batchusers userfile 然后退出并返回相应的值
如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值
创建的用户登录shell为 /bin/false
此脚本不需要为用户设置密码
您可以从下面的URL获取用户名列表作为测试用 http://server.group8.example.com/pub/userlist
wget http://server.group8.example.com/pub/userlist
vim /root/batchusers
#!/bin/bash
if [ $# -eq 1 ];then
if [ -f $1 ];then
while read username;do
useradd -s /bin/false $username &> /dev/null
done < $1
else
echo “Input file not found” 1>&2
exit 1
fi
else
echo “Usage: /root/batchusers userfile” 1>&2
exit 2
fi
chmod +x /root/batchusers
第十九题:配置 ISCSI 服务端
配置 system1 提供一个 ISCSI 服务 磁盘名为 iqn.2014-08.com.example.group8:system1 ,并符合下列要求:
服务端口为 3260
使用 iscsi_store 作其后端逻辑卷名称,其大小为 3G
此服务只能被 system2.group8.example.com 访问
yum install targetcli
systemctl enable target
systemctl start target
firewall-cmd –permanent –add-rich-rule ‘rule family=”ipv4″ source address=”172.24.8.12/32″ port port=3260 protocol=tcp accept’
firewall-cmd –reload
firewall-cmd –list-all
fdisk /dev/sda
n
p
\n
\n
+3G
t
3
8e
w
partprobe
pvcreate /dev/sda3
vgcreate iscsi_vg /dev/sda3
lvcreate -n iscsi_store -l 100%FREE iscsi_vg
targetcli
backstores/block create name=iscsi_store dev=/dev/iscsi_vg/iscsi_store
cd iscsi
create iqn.2014-08.com.example.group8:system1
cd iqn.2014-08.com.example.group8:system1/
cd tpg1/
luns/ create /backstores/block/iscsi_store
acls/ create iqn.2014-08.com.example.group8:system2
set attribute authentication=0
set attribute generate_node_acls=0
cd /
saveconfig
exit
第二十题:配置 iSCISI 的客户端
配置 system2 使其能连接在 system1 上提供的 iqn.2014-08.com.example.group8:system1,并符合以下要求:
iSCISI 设备在系统启动的期间自动加载
块设备 iSCISI 上包含一个大小为 2100 MiB 的分区,并格式化为 ext4
此分区挂载在 /mnt/data 上,同时在系统启动的期间自动挂载
system2:
yum search iscsi
yum install iscsi-initiator-utils
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-08.com.example.group8:system2
systemctl enable iscsi iscsid
systemctl start iscsi iscsid
iscsiadm -m discovery -t st -p 172.24.8.11
iscsiadm -m node -l
lsblk
fdisk /dev/sdb
n
+2100M
w
partprobe
mkfs.ext4 /dev/sdb1
mkdir /mnt/data
blkid
vim /etc/fstab
UUID=…… /mnt/data ext4 defaults,_netdev 0 0
mount -a
df
第二十一题:配置一个数据库
在 system1上创建一个 Maria DB 数据库,名为 Contacts,要求:
数据库应该包含来自数据库复制的内容,复制文件的URL为 http://server.group8.example.com/pub/users.mdb ,数据库只能被 localhost 访问
除了 root 用户,此数据库只能被用户 Mary 查询,此用户密码为 redhat
root 用户的数据库密码为 redhat ,同时不允许空密码登录
yum install mariadb*
systemctl enable mariadb
systemctl start maraidb
mysql_secure_installation
\n
y
redhat
y
\n
…
wget -O /root/users.mdb http://server.group8.example.com/pub/users.mdb
mysql -u root -predhat
create database Contacts;
use Contacts;
show tables;
source /root/users.mdb;
grant select on Contacts.* to Mary@localhost identified by ‘redhat’;
quit
第二十二题:数据库查询
在 system1 上使用数据库 Contacts ,并使用相应的 SQL 查询以回答下列问题:
密码是fadora 的人的名字是什么?
有多少人的姓名是 John ,同时居住在 Santa Clara ?
1)
mysql -u root -predhat
use Contacts
show tables;
desc u_name;
desc u_passwd;
select u_name.firstname from u_name,u_passwd where u_name.userid = u_passwd.uid and u_passwd.password = ‘fadora’;
这个题是随机的
语法 select …… from ….. ,…… where …..=….. and …. =……
2)show tables;
desc u_loc;
select count(*) from u_name,u_loc where u_name.userid = u_loc.uid and u_name.firstname = ‘John’ and u_loc.location = ‘Santa Clara’;
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102907