RHCE真题

2017-07-05|Categories: Linux|

第一题:配置SELinux

Question

SELinux 必须在两个系统system1和system2中运行于 Enforcing 模式

Answer

  • setenforce 1
  • getenforce

第二题:配置SSH访问

Question

  • 用户能够从域 domain1.example.com 内的客户端通过SSH远程访问您的两个虚拟机系统
  • 在域 my133t.org 内的客户端不能访问您的两个虚拟机系统

Answer

  • ping domain1.example.com
    • output: ...(172.24.1.0)...
  • vim /etc/hosts.allow
    • sshd : 172.24.1.0/255.255.255.0

      Yang's note:

      When working in the IPv4 address space, the address/prefix-length (prefixlen) pair declarations are not supported. Only IPv6 rules can use this format.

  • ping my133t.org
    • output: ...(172.25.2.0)...
  • vim /etc/hosts.deny
    • sshd : 172.25.2.0/255.255.255.0

第三题:自定义用户环境

Question

  • 在系统 system1 和 system2上创建自定义命令名为 qstat
  • 此自定义命令将执行以下命令: /bin/ps -Ao pid,tt,user,fname,rsz
  • 此命令对系统中所有用户有效

Answer

  • vim /etc/profile
    • alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
  • source /etc/profile
  • qstat

第四题:配置端口转发

Question

  • 在系统system1配置端口转发,要求如下:在 172.24.1.0/24 网络中的系统,访问 system1 的本地端口 5423 将被转发到80
  • 此设置必须永久有效

Answer

  • firewall-config
    firewall-config-port-forwarding

  • firewall-cmd --list-all

第五题:配置链路聚合

Question

  • 在 system1.domain1.example.com 和 system2.domain1.example.com 之间按以下要求配置一个链路:
  • 此链路使用接口 eth1 和 eth2
  • 此链路在一个接口失效时仍然能工作
  • 此链路在 system1 使用下面的地址:172.16.1.25/255.255.255.0
  • 此链路在 system2 使用下面的地址:172.16.1.35/255.255.255.0
  • 此链路在系统重启之后依然保持正常状态

Answer

  • nm-connection-editor
    • 点击Add添加一个Team(链路)
    • 编辑刚添加的链路
      • Team tab(详见下方截图)
        • 点击Add添加Ethernet网卡eth1
          • Ethernet tab
            • Device Mac address: 11:22:33:44:55:66 (eth1)
          • General tab
            • 选中「Automatically connect to this network when it is available」
        • 点击Add添加Ethernet网卡eth2(省略)
        • JSON config
          • 输入:{"runner":{"name":"activebackup"}}
      • IPv4 Settings tab
        • Method: Manual
        • 设置IP地址
      • General tab
        • 选中「Automatically connect to this network when it is available」
  • systemctl restart network
  • ping 172.16.1.25
  • teamdctl team0 state

第六题:配置IPv6地址

Question

  • 在您的考试系统上配置接口 eth0 使用下列IPv6地址:
  • system1 上的地址应该是 2001:ac18::10a/64
  • system2 上的地址应该是 2001:ac18::114/64
  • 两个系统必须能与网络 2001:ac18/64 内的系统通信。
  • 地址必须在重启后依旧生效。
  • 两个系统必须保持当前的IPv4地址并能通信。

Answer

  • nm-connection-editor
  • systemctl restart network
  • ping6 2001:ac18::10a

第七题:配置本地邮件服务

Question

  • 在系统system1 和 system2 上 配置邮件服务,满足以下要求:
  • 这些系统不接收外部发送来的邮件
  • 在这些系统上本地发送的任何邮件都会自动路由到:rhgls.domain1.example.com
  • 从这些系统上发送的邮件显示来自于 domain1.example.com
  • 您可以通过发送邮件到本地用户 'dave' 来测试您的配置, 系统 rhgls.domain1.example.com 已经配置把此用户的邮件转到下列URL:http://rhgls.domain1.example.com/received_mail/1

Answer

  • vim /etc/postfix/main.cf
    relayhost = rhgls.domain1.example.com  
    myorigin = domain1.example.com  
    local_transport = error:local  
    
  • systemctl restart postfix
  • systemctl enable postfix

  • firewall-cmd --permanent --add-service=smtp

  • firewall-cmd --reload

  • mail -s "Testing" dave@domain1.example.com

  • firefox http://rhgls.domain1.example.com/received_mail/1

第八题:通过SMB共享目录

Question

  • 在system1上配置SMB服务
  • 您的 SMB 服务器必须是 STAFF 工作组的一个成员
  • 共享 /common 目录,共享名必须为 common
  • 只有 domain1.example.com 域内的客户端可以访问 common 共享
  • common 必须是可以浏览的
  • 用户 andy 必须能够读取共享中的内容,如果需要的话,验证的密码是 flectrag

Answer

Server side:

  • yum install samba samba-client
  • mkdir /common
  • vim /etc/samba/smb.conf

    workgroup = STAFF  
    [common]  
    path = /common  
    hosts allow = 172.24.1.  
    browseable = yes  
    
  • testparm /etc/samba/smb.conf

  • useradd andy

  • pdbedit -a -u andy

    • password: flectrag
    • retype password: flectrag
  • semanage fcontext -a -t samba_share_t /common

  • restorecon -Rv /common

  • iptables -F && service iptables save

  • firewall-cmd --permanent --add-service=samba

  • firewall-cmd --permanent --add-service=mountd

  • firewall-cmd --reload

  • systemctl restart smb nmb

  • systemctl enable smb nmb

Client side:

  • yum install smb-client cifs-utils
  • smbclient -L //172.24.1.5 -U andy

第九题:配置多用户SMB挂载

Question

  • 在system1 共享通过SMB目录 /miscellaneous 满足以下要求:
  • 共享名为 miscellaneous
  • 共享目录 miscellaneous 只能被 domain1.example.com 域中的客户端使用
  • 共享目录 miscellaneous 必须可以被浏览
  • 用户 silene 必须能以读的方式访问此共享, 访问密码是 flectrag
  • 用户 akira 必须能以读写的方式访问此共享, 访问密码是 flectrag
  • 此共享永久挂载在 system2.domain1.example.com 上的 /mnt/multi 目录, 并使用用户 silene 作为认证
  • 任何用户可以通过用户 akira 来临时获取写的权限

Answer

Server side:

  • 第八题已经安装samba服务,此处省略
  • mkdir /miscellaneous
  • vim /etc/samba/smb.conf

    [miscellaneous]  
    path = /miscellaneous  
    hosts allow = 172.24.1.  
    browseable = yes  
    writable = no  
    write list = akira  
    
  • testparm /etc/samba/smb.conf

  • useradd silene

  • smbpasswd -a silene

    • password: flectrag
  • useradd akira

  • smbpasswd -a akira

    • password: flectrag
  • chmod -R o+w /miscellaneous

  • semanage fcontext -a -t samba_share_t /miscellaneous && restorecon -Rv $_

  • 第八题已经添加防火墙规则,此处省略

  • systemctl restart smb nmb

  • echo "Welcome to here" > /miscellaneous/welcome

Client side:

  • 第八题已经安装samba客户端、工具,此处省略
  • mkdir /mnt/multi
  • smbclient -L //172.24.1.5 -U silene
  • vim /etc/fstab
    • //172.24.1.5/miscellaneous /mnt/multi cifs defaults,multiuser,username=silene,password=flectrag,sec=ntlmssp 0 0
  • mount -a
  • For testing:
    • cat /mnt/multi/welcome
    • umount /mnt/multi
    • mount -t cifs -o defaults,multiuser,username=akira,password=flectrag,sec=ntlmssp /mnt/multi
    • mount | column -t | grep cifs
    • echo "Testing is OK" > /mnt/multi/test

第十题:配置NFS服务

Question

  • 在 system1 配置NFS服务,要求如下:
  • 以只读的方式共享目录 /public,同时只能被 domain1.example.com 域中的系统访问
  • 以读写的方式共享目录 /protected,能被 domain1.example.com 域中的系统访问
  • 访问 /protected 需要通过Kerberos安全加密, 您可以使用下面URL提供的密钥 http://host.domain1.example.com/materials/nfs_server.keytab
  • 目录 /protected 应该包含名为 confidential,拥有人为deepak 的子目录
  • 用户 deepak 能以读写方式访问 /protected/confidential

Answer

  • mkdir /public
  • mkdir -p /protected/confidential
  • useradd deepak
  • chown deepak /protected/confidential
  • id deepak
    • output: uid=1001(deepak) ...
  • vim /etc/exports

    /public 172.24.1.*(ro)  
    /protected 172.24.1.*(rw,sec=krb5p,anonuid=1001)  
    

    Yang's note:

    anonuid=1001是让匿名用户拥有deepak的权限

  • wget -O /etc/krb5.keytab http://host.domain1.example.com/materials/nfs_server.keytab

  • vim /etc/sysconfig/nfs

    • RPCNFSDARGS="-V 4.2"

      Yang's note:

      The release of NFSv4 brought a revolution to NFS security by mandating the implementation of RPCSEC_GSS and the Kerberos version 5 GSS-API mechanism.

  • semanage fcontext -a -t public_content_t /public && restorecon -Rv $_

  • semanage fcontext -a -t public_content_t /protected && restorecon -Rv $_

  • semanage fcontext -a -t public_content_t /protected/confidential && restorecon -Rv $_

  • iptables -F && service iptables save

    Yang's note:

    • 如果不清空iptables,在客户端执行showmount -e命令时,会出现RPC: Unable to receive; errno = No route to host错误
    • 检查是否防火墙导致的报错:
      1. systemctl stop firewalld
      2. 再次执行之前报错的命令
      3. systemctl restart firewalld
  • firewall-cmd --permanent --add-service=nfs

  • firewall-cmd --permanent --add-service=rpc-bind

  • firewall-cmd --reload

  • lab nfskrb5 setup

    Yang's note:

    • 真机考试时不需要执行此命令。
    • 在模拟考试环境中,如果不执行此命令,启动nfs-secure-server会报错。
  • systemctl restart nfs-server nfs-secure-server

  • systemctl enable nfs-server nfs-secure-server

  • exportfs -r

    Yang's note:

    • 如果启动nfs-server之后又编辑了/etc/exports文件,使用此命令就可以重新加载,不需要重新启动服务
    • 实际考试的时候,我没有执行此命令,很可能因此导致了system2挂载失败(showmount -e可以显示nfs资源列表,但mount -a提示「没有此文件夹」),具体原因不确定。

第十一题:挂载一个NFS共享

Question

  • 在 system2 上挂载一个来自 system1.domain1.example.com 的NFS共享, 并符合下列要求:
  • /public 挂载在下面的目录上 /mnt/nfsmount
  • /protected 挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载URL如下: http://host.domain1.example.com/materials/nfs_client.keytab
  • 用户 deepak 能够在 /mnt/nfssecure/confidential 上创建文件
  • 这些文件系统在系统启动时自动挂载

Answer

  • showmount -e 172.24.1.5
  • mkdir /mnt/nfsmount
  • mkdir /mnt/nfssecure
  • vim /etc/fstab
    172.24.1.5:/public     /mnt/nfsmount   nfs defaults 0 0  
    172.24.1.5:/protected  /mnt/nfssecure  nfs defaults,sec=krb5p,v4.2 0 0  
    
  • wget -O /etc/krb5.keytab http://host.domain1.example.com/materials/nfs_client.keytab

  • lab nfskrb5 setup

  • systemctl start nfs-secure

  • systemctl enable nfs-secure

  • mount -a

第十二题:完成实现一个web服务器

Question

  • 在 system1 上配置一个站点 http://system1.domain1.example.com 然后执行下述步骤:
  • 从 http://rhgls.domain1.example.com/materials/station.html 下载文件,将文件重命名为 index.html ,不要修改文件内容
  • 将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
  • 来自于 domain1.example.com 域的客户端可以访问此Web服务
  • 来自于 my133t.org 域的客户端拒绝访问此Web服务

Answer

  • yum install httpd
  • cd /etc/httpd/conf.d
  • vim httpd-vhosts.conf

    <VirtualHost *:80>  
    DocumentRoot /var/www/html  
    ServerName system1.domain1.example.com  
    </VirtualHost>  
    
  • cd /var/www/html

  • wget -O index.html http://rhgls.domain1.example.com/materials/station.html

  • ping my133t.org

    Yang's note:

    get the ip address

  • firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.23.0.0" service name="http" reject'

  • firewall-cmd --permanent --add-service=http

  • firewall-cmd --permanent --add-service=https

  • firewall-cmd --reload

  • Double check:

    • firewall-cmd --list-all
    • firewall-config
  • systemctl restart httpd

  • systemctl enable httpd

  • firefox http://system1.domain1.example.com

第十三题:配置安全web服务

Question

  • 为站点 http://system1.domain1.example.com 配置TLS加密
  • 已签名证书从 http://host.domain1.example.com/materials/system1.crt 获取
  • 此证书的密钥从 http://host.domain1.example.com/materials/system1.key 获取
  • 此证书的签名授权信息从 http://host.domain1.example.com/materials/domain1.crt 获取

Answer

  • yum install mod_ssl
  • cd /var/www/html
  • wget http://host.domain1.example.com/materials/system1.crt
  • wget http://host.domain1.example.com/materials/system1.key
  • wget http://host.domain1.example.com/materials/domain1.crt
  • vim /etc/httpd/conf.d/httpd-vhosts.conf

    <VirtualHost *:443>  
    DocumentRoot /var/www/html  
    ServerName system1.domain1.example.com  
    
    SSLEngine on  
    SSLProtocol all -SSLv2  
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5  
    SSLHonorCipherOrder on  
    
    SSLCertificateFile /var/www/html/system1.crt  
    SSLCertificateKeyFile /var/www/html/system1.key  
    SSLCACertificateFile /var/www/html/domain1.crt  
    </VirtualHost>  
    

    Yang's note:

    配置文件的选项名对大小写不敏感,但是选项值必须区分大小写,例如:

    • sslciphersuite HIGH:MEDIUM:!aNULL:!MD5是正确的。
    • sslciphersuite high:medium:!anull:!md5是错误的!
  • setsebool -P httpd_read_user_content on

  • systemctl restart httpd

第十四题:配置虚拟主机

Question

  • 在 system1 上扩展您的 web 服务器,为站点 http://www.domain1.example.com 创建一个虚拟主机,然后执行下述步骤:
  • 设置 DocumentRoot 为 /var/www/virtual
  • 从 http://rhgls.domain1.example.com/materials/www.html 下载文件并重命名为 index.html,不要修改文件内容
  • 将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
  • 确保 andy 用户能够在 /var/www/virtual 目录下创建文件
  • 注意:
    • 原始站点 http://system1.domain1.example.com 必须仍然能够访问
    • 名称服务器 domain1.example.com 提供对主机名 www.domain1.example.com 的域名解析

Answer

  • cd /var/www
  • mkdir virtual && cd $_
  • wget -O index.html http://rhgls.domain1.example.com/materials/www.html
  • setfacl -m u:andy:rwx .
  • getfacl .
  • vim /etc/hosts
    • 172.24.1.5 www.domain1.example.com
  • systemctl restart httpd

第十五题:配置web内容的访问

Question

  • 在您的 system1 上的 web 服务器的 DocumentRoot 目录下创建一个名为 secret 的目录,要求如下:
  • 下载 http://rhgls.domain1.example.com/materials/private.html 到这个目录,重命名为 index.html,不要修改文件内容
  • 从 system1 上,任何人都可以浏览 secret 的内容, 但是从其它系统不能访问这个目录的内容

Answer

  • cd /var/www/html
  • mkdir secret && cd $_
  • wget -O index.html http://rhgls.domain1.example.com/materials/private.html
  • vim /etc/httpd/conf.d/httpd-vhosts.conf

    <Directory "/var/www/html/secret">  
    AllowOverride none  
    Require all denied  
    Require local  
    </Directory>  
    
  • systemctl restart httpd

  • firefox http://172.24.1.5/secret

    • testing on system1
    • testing on system2

第十六题:实现动态web内容

Question

  • 在 system1 上配置提供动态Web内容,要求如下:
  • 动态内容由名为dynamic.domain1.example.com的虚拟主机提供
  • 虚拟主机侦听在端口 8998
  • 从 http://rhgls.domain1.example.com/materials/webapp.wsgi 下载一个脚本,放在适当的位置,不要修改文件内容
  • 客户端访问 http://dynamic.domain1.example.com:8998/ 时应该接收到动态生成的web页面
  • 此 http://dynamic.domain1.example.com:8998/ 必须能被 domain1.example.com 域内的所有系统访问

Answer

  • yum install mod_wsgi
  • cd /var/www/html
  • mkdir wsgi-scripts && cd $_
  • wget http://rhgls.domain1.example.com/materials/webapp.wsgi
  • vim /etc/httpd/conf.d/httpd-vhosts.conf
    listen 8998  
    
    <VirtualHost *:8998>  
    WSGIScriptAlias / /var/www/html/wsgi-scripts/webapp.wsgi  
    ServerName dynamic.domain1.example.com  
    </VirtualHost>  
    
  • semanage port -a -t http_port_t -p tcp 8998

  • semanage port --list | grep http

  • firewall-cmd --permanent --add-port 8998/tcp

  • firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.24.1.0/24" port port="8998" protocol="tcp" accept'

    Yang's note:

    配置为 只能172.24.1.0/24 访问:

    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source NOT address="172.24.1.0/24" port port="8998" protocol="tcp" reject'

  • firewall-cmd --reload

  • firewall-cmd --list-all

  • systemctl restart httpd

  • firefox http://dynamic.domain1.example.com:8998

    • testing on system1
    • testing on system2

第十七题:创建一个脚本

Question

  • 在system1上创建一个名为 /root/script 的脚本, 让其提供下列特性:
  • 当运行 /root/script foo,输出为 bar
  • 当运行 /root/script bar,输出为 foo
  • 当没有任何参数或者参数不是 foo 或者 bar 时, 其错误输出产生以下的信息:/root/script foo|bar

Answer

  • vim /root/script
    #!/bin/bash  
    
    case $1 in  
        foo)    echo "bar";;  
        bar)    echo "foo";;  
        *)      echo "/root/script foo|bar";;  
    esac  
    
  • chmod +x /root/script

  • For testing:

    • /root/script foo
    • /root/script bar
    • /root/script --help

第十八题:创建一个添加用户的脚本

Question

  • 在 system1 上创建一个脚本,名为 /root/mkusers , 此脚本能实现为系统 system1 创建本地用户, 并且这些用户的用户名来自一个包含用户名列表的文件。同时满足下列要求:
  • 此脚本要求提供一个参数,此参数就是包含用户名列表的文件
  • 如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/mkusers userfile 然后退出并返回相应的值
  • 如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值
  • 创建的用户登录shell为 /bin/false
  • 此脚本不需要为用户设置密码
  • 您可以从下面的URL获取用户名列表作为测试用 http://rhgls.domain1.example.com/materials/userlist

Answer

  • vim /root/mkusers
    #!/bin/bash  
    
    if [[ $# -eq 0 ]]; then  
        echo "Usage: /root/mkusers userfile" >&2  
        exit 1  
    fi    
    
    if [[ ! -f "$1" ]]; then  
        echo "Input file not found" >&2  
        exit 1  
    else  
        while read user; do  
            useradd -s "/bin/false" "$user"  
        done < "$1"  
    fi  
    
    
  • chmod +x /root/mkusers

  • wget -O /root/userlist http://rhgls.domain1.example.com/materials/userlist

  • /root/mkusers /root/userlist

第十九题:配置iSCSI服务端

Question

  • 配置 system1 提供一个 iSCSI 服务,磁盘名为 iqn.2014-12.com.example.domain1:system1 ,并符合下列要求:
  • 服务端口为 3260
  • 使用 iscsi_vol 作其后端卷,其大小为 3G
  • 此服务只能被 system2.domain1.example.com 访问

Answer

  • yum install target*
  • lsblk
  • fdisk /dev/sdb
  • pvcreate /dev/sdb6
  • vgcreate rhce /dev/sdb6
  • lvcreate -L 3G -n iscsi_vol rhce
  • targetcli
    • ls
    • cd /backstores/block create block1 /dev/rhce/iscsi_vol
    • cd /iscsi create iqn.2014-12.com.example.domain1:system1
    • cd iqn.2014.../tpg1/acls create iqn.2014-12.com.example.domain1:system2
    • cd ../luns create /backstores/block/block1
    • cd ../portals create 172.24.1.5
    • exit
  • firewall-cmd --permanent --add-port=3260/tcp
  • firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source NOT address="172.24.1.6" port port="3260" protocol="tcp" reject'
  • firewall-cmd --reload
  • firewall-cmd --list-all
  • systemctl restart target
    • 注意:服务名是target,不要写成targetd
  • systemctl enable target

第二十题:配置iSCSI的客户端

Question

  • 配置 system2 使其能连接在 system1 上提供的 iqn.2014-12.com.example.domain1:system1 并符合以下要求:
  • iSCSI 设备在系统启动的期间自动加载
  • 块设备 iSCSI 上包含一个大小为 1700 MiB 的分区,并格式化为 xfs
  • 此分区挂载在 /mnt/data 上,同时在系统启动的期间自动挂载

Answer

  • yum install -y iscsi-*
  • vim /etc/iscsi/initiatorname.iscsi
    • InitiatorName=iqn.2014-12.com.example.domain1:system2
  • systemctl restart iscsi
  • systemctl enable iscsi
  • iscsiadm -m discovery -t st -p 172.24.1.5
  • iscsiadm -m node -T iqn.2014-12.com.example.domain1:system1 -l
  • lsblk
  • fdisk /dev/sdc
  • mkfs.xfs /dev/sdc1
  • mkdir /mnt/data
  • vim /etc/fstab
    • /dev/sdc1 /mnt/data xfs defaults,_netdev 0 0

第二十一题:配置一个数据库

Question

  • 在 system1 上创建一个 MariaDB 数据库, 名为 Contacts ,并符合以下条件:
  • 数据库应该包含来自数据库复制的内容,复制文件的URL为 http://rhgls.domain1.example.com/materials/users.mdb 。
  • 数据库只能被 localhost 访问。
  • 除了root用户, 此数据库只能被用户 Luigi 查询,此用户密码为 flectrag 。
  • root 用户的密码为 flectrag , 同时不允许空密码登录。

Answer

  • yum groupinstall -y mariadb mariadb-client
  • vim /etc/my.cnf
    • skip-networking=1
  • systemctl restart mariadb
  • systemctl enable mariadb
  • wget http://rhgls.domain1.example.com/materials/users.mdb
  • mysql
    • show databases;
    • create database Contacts;
    • use Contacts;
    • source /root/users.mdb;
    • show tables;
    • grant select on Contacts.* to Luigi@'localhost' identified by 'flectrag';
  • mysql_secure_installation
  • mysql -u root -p

第二十二题:数据库查询

Question

  • 在系统 system1上使用数据库 Contacts, 并使用相应的SQL查询以回答下列问题:
  • 密码是 tangerine 的人的名字?
  • 用户ID号码为4654的用户名是?

Yang's note:

现场考试的时候,题目是「从数据库中找出姓名包含 John、住在 Sunnyville 的人数」,我只能通过笨方法人工比对,而不会使用 SQL 语句查出结果,后续必须加强!

Answer

  • use Contacts;
  • show tables;
  • select * from User_Logins where User_Pass='tangerine';
    • bplante
  • select * from User_Names where user_id='4654';
    • Brian

其他资源

Leave A Comment