RHCE考试笔记

(2)下午RHCE部分

下午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

(2)
上一篇 2018-07-14 20:41
下一篇 2018-07-14 22:00

相关推荐

  • 网络基础

    1、网络的特征
    2、OSI模型的七层结构
    3、LAN组成

    Linux笔记 2018-06-19
  • 基本正则表达式

    城还是这座城,人已非故人

    2018-04-18
  • 进程和计划任务

      进程概念 内核功能:进程管理 文件系统 网络功能 内存功能 驱动功能 安全功能 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 task struc…

    Linux笔记 2018-05-06
  • Linux运维初步—第三周

    Linux运维初步—第三周总结与练习 标签(空格分隔): linux入门 linux 运维 — 写作:N27_loong 2017-7-27[TOC] 一、本周主要内容回顾: 用户(组)管理: – 增加用户或组,指定用户权限、家目录路径、用户属组属主的变更; – 用户密码和组密码加密和验证的设计和文件存储位置;…

    Linux笔记 2018-07-27