yum list | grep chinese 中文输入法
yum search chinese ;ukai uming 中文字体,如果只是显示,可以不装输入法只安装此两个包
密码和yum源在考试说明中,yum源配置隐含题目
练习环境准备,考试不需要执行步骤:
重置虚拟机:Rht-vmctl fullreset server; Rht-vmctl fullreset desktop
绑定外部认证:lab nfskrb5 setup 操作主机:server0,desktop0
增加两快网卡:操作主机,server0,desktop0
virt-manager 增加网卡,可以在线添加
验证: id ldapuser0 ssh ldapuser0@localhost 密码:kerberos
两个终端,ssh -X root@server0; ssh -X root@desktop0 考试需要密码
配置yum,两台都要
yum-comfig-manager --add-repo="http://content.example.com/rhel7.0/x86_64/dvd"
rpm --import /etc/pki/rpm-gpg/* 导入公钥key
检查:yum clean all ;yum repolist
1,
配置server0和desktop0上的SElinux环境为enforcing
vim /etc/sysconfig/selinux,如果是disable时候设置完必须重启生肖
2,配置server0和desktop0上的访问控制,拒绝cracker.com(172.24.0.0/16,这部分需要看考题说明)
域中的主机访问ssh
访问控制提,在server0上:
首先停掉旧的防火墙,判断下不做,在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认
使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。
因为这几个daemon是冲突的建议禁用其他的几种服务
systemctl mask iptables.servers; systemctl mask ip6tables.service
systemctl stop iptables; systemctl stop ip6tables; systemctl disable iptables;
systemctl disable ip6tables
查看控制服务:Systemctl enable firewalld --- 开启动态防火墙服务;Systemctl start firewalld
Systemctl status firewalld --- 查看状态
然后配置, 因为ssh默认好像都已经配置了,不用添加可访问的service
1,图形配置:firewall-config; firewall-cmd --reload; firewall-cmd --permanent --list-all
2,命令行;允许某个服务的基本规则 firewall-cmd --permanent --add-service=mysql
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --permanent --add-rich-rule “rule family=ipv4 source address=172.24.0.0/24 service name=ssh reject”
firewall-cmd --reload ; Firewall-cmd --permanent --list-all
3,配置server0和desktop0配置自定义命令psnew,执行该命令是将执行ps -Ao user,pid,ppid,command
vim /etc/bashrc ; alias psnew='ps -Ao user,pid,ppid,command'; exit ;在进入ssh -X root@desktop0
4,配置server0服务器的samba,工作组为STAFF,共享目录/smb1,共享名smb1,仅允许example.com域中主机访问
samba用户ldapuser1可以读取,密码tianyun
两台机器都需要,
A,yum -y install samba samba-client : mkdir /smb1
B, vim /etc/samba/smb.conf
修改 Workgroup = STAFF
最后追加
[smb1] ---共享的名字
path =/smb1
hosts allow = 172.25.0.0/24 不知道什么时候用hosts allow = 172.25.0.
保存退出
C,服务和防火墙
systemctl enable nmb smb;systemctl start nmb smb
firewall-cmd --permanent --add-service=samba
firewall-cmd --permanent --reload
firewall-cmd --permanent --list-all
D,新建用户,useradd ldapuser1(已经存在);smbpasswd -a ldapuser1-- 添加用户并设置smb密码
第二次改变之后的题是smbpass -a ldapuser1 ; tianyun
如果找不到smbpasswd 可以查询哪个包提供的; yum provides *bin/smbpasswd
E,修改上下文
直接修改文件上下文,chcon -R -t samba_share_t /smb1
或者:semanage;yum provides semanage -- 使用yum查看是那个包提供
查询出来之后 安装包:yum install -y policycoreutils-python*
ls -dZ /smb1;之后再次查看
semanage fcontext -a -t samba_share_t '/smb1(/.*)?'
man semanage ; man 8 semanage-fcontext
restorecon -RFvv /smb1 -- 依据规则重置
touch /smb1/file1
客户端测试:yum -y install cifs-utils samba_client
mkdir /mnt/smb1;mkdir /mnt/smb2
mount (-t cifs) -o username=harry(ldapuser1) //server0/smb1 /mnt/smb1
df ; ls /mnt
自动挂载操作:
mkdir /mnt/smb1 ; vim /root/smb1.passwd --这里随便命名
添加:
username=harry
password=tianyun
vim /etc/fstab
//server0/smb1 /mnt/smb1 cifs defaults,credentials=/root/smb1.passwd 0 0
5,配置server0服务器samba,共享目录/smb2,仅允许用户ldapuser1读取,ldapuser2读写,密码都为tianyun
desktop0以multiuser方式自动挂载到/mnt/smb2
多用户挂载,默认以一个较低权限的用户挂载,之后不同权限的用户通过cifscreds更新或删除自己的凭据
mkdir /smb2 ;vim /etc/samba/smb.conf
[smb2]
path = /smb2
valid users = ldapuser1 ldapuser2 @HR 这里HR是组
browseable = yes 目录可以浏览,默认是可以浏览的,可以不加
write list = ldapuser2 默认可以read,所以不用添加,这里只添加写权限
systemctl restart nmb smb
semanage fcontext -a -t samba_share_t '/smb2(/.*)?'
restorecon -RFvv /smb2
或者只执行一条:chcon -R -t samba_share_t /smb2
useradd user1; useradd user2; smbpasswd -a user1 ; smbpasswd -a user2;修改后添加ldapuser账户
但是ldapuser1和ldapuser2都已经有了,只需要添加smbpasswd -a ldapuser1即可
修改后:ll -dZ /smb2 ; setfacl -m u:ldapuser2 :rwx /smb2 : getfacl /smb2
客户端desktop0
vi /etc/fstab
//server0/smb2 /mnt/smb2 cifs defaults,credentials=/root/smb2.passwd,multiuser,sec=ntlmssp 0 0
vim /root/smb2.passwd
username=user2 修改后ldapuser1
password=tianyun
mount -a; df
测试: su - ldapuser2 ; ls /mnt/smb2 没权限;cifscreds add server0 添加凭据
6,配置server0基本nfs 共享目录/nfs1;仅允许example.com域中的主机访问 desktop0自动挂载到/mnt/nfs1
yum -y install nfs-utils 服务器客户端包;yum list | grep ^nfs -- 查看可以安装的包
mkdir /nfs1 ; touch /nfs1/111
vim /etc/exports
/nfs1 172.25.0.0/24(ro,sync)
systemctl enable nfs-server.service
systemctl restart nfs-server.service
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload ; firewall-cmd --permanent --list-all
客户端: yum -y install nfs-utils
vim /etc/fstab
server0:/nfs1 /mnt/nfs1 nfs defaults 0 0
mkdir /mnt/nfs1
mount -a
7,配置server0安全的nfs,共享目录/nfs2;仅允许example.com域中的主机访问
/nfs2/private目录所有者为ldapuser5 desktop0自动挂载到/mnt/nfs2
用户ldapuser5能够写入文件到/mnt/nfs2/private
http://classroom.example.com/pub/keytabs/server0.keytab
http://classroom.example.com/pub/keytabs/desktop0.keytab
练习环境准备: server0: lab nfskrb5 setup ; desktop0 : lab nfskrb5 setup
练习环境的脚本执行考试环境不需要, 用于加入ldap域(账号信息)和并且已经可以使用kerberos验证(认证)
执行后验证:id ldapuser0
下载key文件: wget http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab
也可以下载完cp到指定目录,同样下载另一个
mkdir /nfs2/private
chown ldapuser5 /nfs2/private; ll -d /nfs2/private
vim /etc/sysconfig/nfs
找到Optional arguments 后的参数修改
RPCNFSDARGS="-V 4.2" -- 使用4.2版本共享,必须做
vim /etc/exports
/nfs2 172.25.0.0/24(rw,sync,sec=krb5p)
systemctl enable nfs-secure-server.service
systemctl restart nfs-secure-server.service
systemctl restart nfs-server.service
客户端: systemctl enable nfs-secure ;systemctl restart nfs-secure
下载key文件: wget http://classroom.example.com/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
mkdir /mnt/nfs2;vim /etc/fstab
server0:/nfs2 /mnt/nfs2 nfs defaults,v4.2,sec=krb5p 0 0
mount -a; df
可选测试:su - ldapuser5;df 没有获取kerberos票据;ssh ldapuser5@localhost;df
8,配置server0和desktop0上的链路聚合,使用接口eno1和eno2 当一个接口失效时仍然能够工作
server0 192.168.10.1 ; desktop0 192.168.10.2 注:MAC有风险,另外没说明这里使用HA-主备
IP为192.168.0.100/24(team名为team0)
ping -I team0 192.168.0.254应该是成功的,
注:考试环境为在system1和system2上均配置team,且能互相ping通。
考试时两边都要做,练习环境可以做一个,
考试链路聚合环境搭建,lab teambridge setup 产生eno1 eno2
命令行操作,创建一个逻辑的team
nmctl connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
添加地址:nmcli connection modify team0 ipv4.addresses "192.168.0.100/24"
nmcli conn modify team0 ipv4.method m
nmcli connection add type team-slave con-name team0-eno1 ifname eno1 master team0
nmcli connection add type team-slave con-name team0-eno2 ifname eno2 master team0
查看:teamdctl team0 state; ip a
ping -I team0 192.168.0.254
图形方式:nm-connection-editor; 注意修改/etc/sysconfig/network-scripts/中的team名字
DEVICE=eth1 ; ping 192.168.10.1
9,配置server0端口转发,将访问端口6666/tcp转发到本地的22/tcp----使用port forwarding
从172.25.0.0/24网段访问server0端口6666/tcp时转到本地22/tcp----使用rich rule
图形方式: firewall-config 配置port forwarding
firewall-cmd --permanent --list-all
命令行:注意,注意,这里要看清使用rich rule功能强大,还是port forwarding,
firewll-cmd --permanent --add-forwrd-port=port=6666:proto=tcp:toport=22:toaddr=
如果是空地址,就说明是转发给本地,否则转发给其他
firewll-cmd --permanent --add-forwrd-port=port=7777:proto=tcp:toport=22:toaddr=172.25.0.10
desktop0测试:ssh root@server0 -p 7777 or 6666 :密码是redhat
本题不需要开启本地端口:nc -l 6666 查看本地端口:netstat -tnlp | grep :6666
10,配置server0 eno1上的ipv6地址fddb:fe2a:ab1e::c0a8:1/64及网关fddb:fe2a:ab1e:c0a8:fe
改变了,配置server0和desktop0上的IPv6,使用接口eth0,互相可以ping通,原IPv4仍然有效
server0:2012:ac18::1205/64 desktop0:2012:ac18::120a/64
练习环境准备:
server0: rht-vmctl reset server <小心,重置服务器>
server0: lab ipv6 setup
注:考试环境为在system1和system2的eth0 上均配置ipv6,且能够互相ping通
ip a ;cat /etc/resolv.conf DNS;ip route 网关
nm-connection-editor 然后使用nmcli connection up;ping6 2012:ac18::120a
11,配置server0和desktop0的邮件系统,配置postfix为null client
本地发送的邮件转发到 smtp0.example.com
本地发送的邮件显示来自 example.com
rpm -q postfix
vim /usr/share/doc/postfix-2.10.1/README_FILES/STANDARD_CONFIGURATION_README
搜索null client,这个配置文件考试时候不一定有
配置如下:文件/etc/postfix/main.cf
myhostname = server0.example.com
myorigin = example.com
relayhost = [smtp.example.com]
inet_interfaces = loopback-only
mydestination =
local_transport = error:local mail delivery
desktop0也同样配置 systemctl reload postfix.service 重新加载服务,两台机器
考试:给了两个网页,自己跟自己发
mail -s "test" root
hello local
ctrl+d
12, server0配置iscsi target;卷大小1G iscsi target名为iqn.2014-11.com.tianyun:server0
仅允许iqn.2014-11.com.tianyun:desktop0访问 desktop0配置iscsi initiator,创建大小为500M的分区
格式化为xfs(之后ext4)文件系统,自动挂载到/mnt/iscsidisk 视频8
server0 准备一个分区: fdisk /dev/vdb n,p, , ,+1G,w
partprobe;ll /dev/vdb*
yum -y install targetcli -- 文本的target的配置工具
客户端: 装包, yum install -y iscsi*
systemctl start target ; systemctl enable target.service
配置:tergetcli ;说明,如果考试不清楚时候使用man targetcli ;然后/EXAMPLE N下一个
ls; /backstores/block create san1 /dev/vdb1 创建设备
/iscsi create iqn.2014-11.com.tianyun:server0 创建一个iscsi的iqn默认任何人都能访问
cd /iscsi/iqn.2014-11.com.tianyun:server0/tpg1/
acls/ create iqn.2014-11.com.tianyun:desktop0 允许谁访问
luns/ create /backstores/block/san1 关联设备
protals/ create 172.25.0.11 3260 缺省监听端口
cd / ; ls : saveconfig
help, 下边是上边配置的文件
/etc/target/saveconfig.json : ll /etc/target/
防火墙:firewall-cmd --permanent --add-port=3260/tcp; firewall-cmd --reload
firewall-cmd --permanent --list-all
客户端:安装包iscsi* : vim /etc/iscsi/initiatorname.iscsi编辑
InitiatorName=iqn.2014-11.com.tianyun:desktop0 前面的名字一定注意大写,然后重启服务
systemctl restart iscsid.servie ; systemctl enable iscsid.service 连接server的
systemctl enable iscsi 启动iscsi读取配置的
iscsiadm -m discovery -t st -p server0:3260 (rm -rf /var/lib/iscsi/*)
(systemctl restart iscsi)
yum install tree
tree /var/lib/iscis ; fdisk -l
systemctl restart iscsi : fdisk -l 多了一个盘1G的/dev/sda
fdisk /dev/sda ; n,p, , ,+500M,w
partprobe; ll /dev/sda* : mkfs.xfs /dev/sda1 (mkfs.ext4 /dev/sda1)
mkdir /iscsidisk (/mnt/iscsidisk) ; blkid ;vim /etc/fstab
上部的UUID /iscsidisk(变了/mnt/iscsidisk) xfs (变了ext4) _netdev
mount -a
13,配置server0 web服务,网站www0.example.com,拒绝cracker.com域访问
网页文件,http://classroom.example.com/pub/webs/www.html
14, 配置server0 Web服务,网站www0.example.com启用TLS加密
TLS certificate http://classroom/pub/tls/certs/www0.crt
TLS private key http://classroom/pub/tls/private/www0.key
TLS CA certificate http://classroom/pub/example-ca.crt
15, 配置server0 Web服务,网站serer0.example.com,网站目录为
/var/www/virtual(如果没说明,默认即可),网页文件是:http://classroom.example.com/pub/webs/server.html
16,配置server0 Web服务,网站webapp0.example.com,端口为8888/tcp
python application http://classroom.example.com/pub/webs/webapp.wsgi
三个网站(传东西rsync -va webs root@server0)
安装包: yum -y install httpd mod_ssl(安全相关的包) mod_wsgi(python相关包)
准备网页,考试时候已经给出 但是记住,配置之后需要重置目录
修改目录结构,需要重新设置下:restorecon -RFvv /var/www/
创建配置文件:
cd /etc/httpd/conf.d 网站1配置文件编辑:vim www.conf 名字任意 不过最好起个匹配的
其中第二个需要下载3个文件:
下载证书: wget http://classroom/pub/tls/private/www0.key
wget http://classroom/pub/tls/certs/www0.crt
wget http://classroom/pub/example-ca.crt
修改之后的配置为,
#http://www0.example.com:80 /etc/httpd/conf/httpd.conf 主参考配置文件
DocumentRoot /var/www/html 根目录
Servername www0.example.com (网站访问地址)
#https://www0.example.com:443 /etc/httpd/conf.d/ssl.conf 安全参考配置文件
DocumentRoot /var/www/html
Servername www0.example.com
SSLEngine on 加密引擎
SSLProtocol all -SSLv2 -SSLv3 支持ssl的访问方式
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 加密的算法
SSLHonorCipherOrder on 加密顺序是否开启默认注释掉的
SSLCertificateFile /etc/httpd/conf.d/www0.crt 自己的证书,目录可以改
SSLCertificateKeyFile /etc/httpd/conf.d/www0.key 私钥
SSLCACertificateFile /etc/httpd/conf.d/example-ca.crt 根的CA证书
#这里是授权操作
Require all granted
Require not ip 172.24.0.0/16 拒绝域
查看一个配置文件指定文字: grep gran /etc/httpd/conf/httpd.conf
手动配置第一个页面:echo www0 > /var/www/html/index.html
启动服务:systemctl enable httpd.service;systemctl restart httpd.service
防火墙配置:firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8888/tcp
firewall-cmd --permanent --add-port=443/tcp 全部都添加上
firewall-cmd --reload
restorecon -RFvv /var/www 修改了www目录结构之后需要重置下操作
在desktop0上测试: firefox & ;输入;www0.example.com 将看到www0.example.com
firefox import ca.crt; test
wget http://classroom/pub/example-ca.crt ; 浏览器导入证书
访问: https://www0.example.com
访问控制这块,
基于主机访问控制,当然一定有directory,然后,
A,允许所有主机访问:Require all granted
B,允许指定主机访问,Require ip 192.168.122.10;Require ip 192.168.3.0/24;Require host www
C,只允许本机访问,Require local
D,仅拒绝某个主机访问,除了directory之外,还需要有
Require all granted;require not ip 192.25.0.11
E,仅拒绝某些网段访问,在D基础上执行,Require all granted;Require not ip 172.24.0.0/24
第二个页面:cd /etc/httpd/conf.d
配置文件cp www0.conf server0.conf
vim server0.conf
#http://server0.example.com
DocumentRoot /var/www/virtual
Servername server0.example.com
Require all granted
mkdir /var/www/virtual ;echo server0 > /var/www/virtual/index.html
restorecon -RFvv /var/www
客户端测试:server0.example.com
第三题:
cp server.conf webapp.conf
vim webapp.conf
#http://webapp0.example.com:8888 #listen 8888 https
Listen 8888
Servername webapp0.example.com
WSGIscriptAlias / /var/www/webapp/webapp.wsgi
Require all granted
lab webapp setup ; mkdir /var/www/webapp
cp -rf /home/student/webapp.wsgi /var/www/webapp 动态网站python程序
systemctl restart httpd.service
man semanage-port 例子
semanage port -a -t http_port_t -p tcp 8888 修改selinux的策略
semanage port -l | grep http
systemctl restart httpd.service
查看netstat -ntlp | grep :8888
netstat -tnlp | grep :8888;查看各个端口
ll /var/www/webapp0/webapp.wsgi
17,配置server0 Web服务,http://server0.example.com/private,仅允许从server0
访问,网页文件:http://classroom.example.com/pub/webs/private.html
看清楚,这里是server0网站下的,创建一个目录,如果是www0.example.com下面,就需要在相应目录创建了
开始: mkdir /var/www/virtual/private
echo private... >/var/www/virtual/private/index.html
restorecon -RFvv /var/www
vim server0.conf
#http://server0.example.com
DocumentRoot /var/www/virtual
Servername server0.example.com
Require all granted
Require local 仅允许本地访问
测试:server0.example.com/private
18,配置server0 Shell script,输入bar显示foo,输入foo显示bar,输入其他显示Usage xxx
vim /root/script1.sh
#!/bin/bash
if [ $1 = "bar" ];then
echo "foo"
elif [ $1 = "foo" ];then
echo "bar"
else
echo "USE ..."
fi
然后 chmod a+x /root/script1.sh
或者脚本:
case "$1" in
bar)
echo "foo"
;;
foo)
echo "bar"
;;
*)
echo " USE ..."
esac
19, 配置server0 Shell script,批量添加用户,根据指定文件作为参数添加用户,需要判断
是否存在参数和用户文件是否存在,需要错误退出和退出返回值,设置/bin/false为添加用户默认shell
vim user.txt ;考试时候给出了
user1
user2
user3
tianyun
vim /root/useradd1.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo "没有输入任何文件,程序退出"
exit 1
fi
if [ ! -f "$1" ];then
echo "你输入的是不是文件,程序退出"
exit 2
fi
for user in `cat $1`
do
useradd $user -s /bin/false
echo "tianyun" | passwd $user --stdin &>/dev/null 这步根据考试要求
if [ $? -eq 0 ];then
echo "用户$user创建成功。"
fi
done
查看结果: echo $? ;查看参数个数: echo $#
vim中查找15行命令 :15 回车 还有:set list
20,配置server0 Mariadb数据库
1)安装Mariadb
2) 配置root只能从本地登录,密码为tianyun
3)禁用匿名用户访问
4)创建数据库Concats
5) 倒入数据到Concats
http://content.example.com/courses/rhce/rhce7.0/materials/mariadb/mariadb.dump
6) 授权Luigi用户可以select访问数据库Concats
yum groupinstall mariadb mariadb-client
yum grouplist | grep maria
systemctl enable mariadb ; systemctl start mariadb
firewall-cmd --permanent --add-service=mysql ; firewall-cmd --reload
firewall-cmd --permanent --list-all
msql_secure_installation ; mysql -uroot -ptianyun
ctrl+l ; show database; create database Concats
导入: use Concats ;source /路径 ;\q \c
另一种导入:mysql -uroot -ptianyun Concats < /home/student/mariadb.dump
授权:帮助,help grant
grant select on Concats.* to Luigi@'172.25.0.%' identified by 'tianyun';
flush privileges;
登录:mysql -uLuigi -ptianyun 拒绝
远程试试:mysql -h 172.25.0.11 -uLuigi -ptianyun ; show tables
另外考试时候可能根据条件创建一些表
7) 按要求实现单表查询,提交结果
8) 按要求实现多表查询,提交结果
练习环境准备: Server0: lab.mariadb setup
desc table(\G)查看表结构
select * from product where id_category="2"; 查询出的结果,提交结果条数