第五周作业
1. 搭建chrony服务完成多个主机的时间同步。
#服务器端配置 yum -y install chrony vim /etc/chrony.conf server ntp.aliyun.com iburst #更改为阿里云时间服务器 #allow 192.168.0.0/16 allow 0.0.0.0/0 #加此行,指定所有地址都可同步 #server time even if not synchronized to a time sourece. local stratum 10 #删除此行注释,当互联网无法连接,仍然可以为客户端提供时间同步服务 systemctl enable --now chronyd
#客户端配置 yum install chrony -y vim /etc/chrony.conf server 192.168.50.101 iburst #更改为本地时间服务器 systemctl enable --now chronyd
2. 自制光盘,PXE, Cobbler完成自动安装系统。
PXE完成自动安装系统centos8
安装前需要关闭防火墙和selinux,dhcp服务器静态ip
yum install dhcp-server tftp-server syslinux-nonlinux httpd systemctl enable --now tftp dhcpd cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf vim /etc/dhcp/dhcpd.conf
systemclt start dhcpd
mkdir /data/cdrom/8
mount /dev/sr0 /data/cdrom/8/
mkdir /data/cdrom/ks vim /data/cdrom/ks/centos8.5.cfg keyboard 'us' rootpw --iscrypted $6$N0sE9rvPCQS7zatC$dWbEunEac4bsVnRl1QT.NgVIr2gLGQkiYMmn74zq4ppGfZp7/j/uFsUSAwDYMZyAvOLV6h5Neihl.FHntx5EJ1 url --url="http://192.168.50.101:8001/8/BaseOS" lang en_usUTF-8 text firstboot --enable selinux --disabled skipx firewall --disabled network --bootproto=dhcp --device=etho reboot timezone Asia/Shanghai bootloader --append="net.ifnames=0" --location=mbr zerombr clearpart --all --initlabel part /boot --fstype="xfs" --size=1024 part / --fstype="xfs" --size=51200 part swap --fstype="swap" --size=2048 part /data --fstype="xfs" --size=40960 %packages @^minimal-environment kexec-tools %end %post mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/* /etc/yum.repos.d/bak cat > /etc/yum.repos.d/yum.repo <<EOF [BaseOs] name=BaseOs #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra baseurl=http://192.168.50.101:8001/8/BaseOS/ gpgcheck=0 #enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [AppStream] name=AppStream #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra baseurl=http://192.168.50.101:8001/8/AppStream/ gpgcheck=0 #enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [epel] name=epel #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra baseurl=http://192.168.50.101:8001/8/epel/ gpgcheck=0 #enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF %end
mkdir /var/lib/tftpboot/centos8 cp /data/cdrom/8/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8 cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/ cp /data/cdrom/8/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg cp /data/cdrom/8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default tree /var/lib/tftpboot
vim /var/lib/tftpboot/pxelinux.cfg/default
3. 搭建配置主从DNS服务器,实现区域传送,并实现智能DNS。
主DNS服务器配置
yum install bind -y vim /etc/named.conf #在文件最前面加下面行 acl beijingnet { 192.168.50.0/24; }; acl shanghainet { 192.168.60.0/24; }; acl othernet { any; }; #注释掉下面两行 // listen-on port 53 { 127.0.0.1 }; // allow-query { localhost; } #创建view view beijingview { match-clients { beijingnet; }; include "/etc/named.rfc1912.zones,bj"; }; view shanghaiview { match-clients { shanghainet; }; include "/etc/named.rfc1912.zones.sh"; }; view otherview { match-clients {othernet;}; include "/etc/named.rfc1912.zones.other"; };
#实现区域配置文件
vim /etc/named.rfc.zones.bj zone "." { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.bj"; }; vim /etc/named.rfc.zones.sh zone "." { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.sh"; }; vim /etc/named.rfc.zones.other zone "." { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.other"; };
#更改属组权限
chgrp named /etc/named.rfc1912.zones.bj chgrp named /etc/named.rfc1912.zones.sh chgrp named /etc/named.rfc1912.zones.other
#创建区域数据库文件
vim /var/named/magedu.org.zone.bj $TTL 1D @ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master NS slave1 master A 192.168.50.200 slav1 A 192.168.50.3 websrv A 192.168.50.4 www CNAME websrv
#更改属组权限
chgrp named /var/named/magedu.org.zone.bj chgrp named /var/named/magedu.org.zone.sh chgrp named /var/named/magedu.org.zone.other
systemctl enable --now named
从DNS服务器配置
yum install bind -y vim /etc/named.conf #注释掉 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; };
vim /etc/named.rfc1912.zones zone "magedu.org" { type slave; masters { 192.168.50.200;}; file "slaves/magedu.org.slave"; }; systemctl enable --now named
4. 配置iptables 打开常用端口加固linux。使用iptables DNAT完成暴露内网端口,使用SNAT,让内网可以上网。并抓包分析过程。 可以尝试firewalld实现iptables的结果。
iptables -A INPUT -s 0.0.0.0/0 -p tcp -m multiport --dports 22,80 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -j drop
#启用路由转发 vim /etc/sysctl.conf net.ipv4.ip_forwadrd=1 sysctl -p iptables -t nat -A PREROUTING -d 192.168.50.171 -p tcp --dport 80 -j DNAT --to-destination 112.23.224.23:8080
#启用路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forwadrd=1
sysctl -p
iptables -t nat -A POSTROUTING -s 112.23.224.23/24 -j SNAT --to-source 192.168.50.1
5. 脚本实现openvpn的一键安装,日常管理:加用户,吊销用户等。
#!/bin/bash
yum install openvpn easy-rsa -y #生成服务器配置文件 cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/ #准备证书签发相关文件 cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server #准备签发证书相关变量的配置文件 cp /usr/share/doc/easy-rsa/vars.example /etc/openvpn/easy-rsaserver/3/vars #初始化PKI生成PKI相关目录和文件 cd /etc/openvpn/easy-rsa-server/3/ ./easyrsa init-pki ./easyrsa build-ca nopass #创建服务器证书申请文件,其中server是文件前缀 cd /etc/openvpn/easy-rsa-server/3 ./easyrsa gen-req server nopass #将上面server.req的申请,颁发server类型的证书 cd /etc/openvpn/easy-rsa-server/3 ./easyrsa sign server server #准备客户端证书环境 cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client cp /usr/share/doc/easy-rsa/vars.example /etc/openvpn/easy-rsa-client/3/vars cd /etc/openvpn//easy-rsa-client/3/ #生成证书申请所需目录pki和文件 ./easyrsa init-pki #修改服务器端配置文件
vim /etc/openvpn/server.conf
#!/bin/bash . /etc/init.d/functions OPENVPN_SERVER=112.234.12.56 remove_cert () { rm -rf /etc/openvpn/client/${NAME} find /etc/openvpn/ -name "$NAME.*" -delete } create_cert () { cd /etc/openvpn/easy-rsa-client/3 ./easyrsa gen-req ${NAME} nopass <<EOF EOF cd /etc/openvpn/easy-rsa-server/3 ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/${NAME}.req ${NAME} ./easyrsa sign client ${NAME} <<EOF yes EOF mkdir /etc/openvpn/client/${NAME} cp /etc/openvpn/easy-rsa-server/3/pki/issued/${NAME}.crt /etc/openvpn/client/${NAME} cp /etc/openvpn/easy-rsa-client/3/pki/private/${NAME}.key /etc/openvpn/client/${NAME} cp /etc/openvpn/certs/{ca.crt,dh.pem,ta.key} /etc/openvpn/client/${NAME} cat > /etc/openvpn/client/${NAME}/client.ovpn <<EOF client dev tun proto tcp remote $OPENVPN_SERVER 1194 resolv-retry infinite nobind #persist-key #persist-tun ca ca.crt cert $NAME.crt key $NAME.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3 compress lz4-v2 EOF echo "证书存放路径:/etc/openvpn/client/${NAME},证书文件如下:" echo -e "\E[1;32m******************************************************************\E[0m" ls -l /etc/openvpn/client/${NAME} echo -e "\E[1;32m******************************************************************\E[0m" cd /etc/openvpn/client/${NAME} zip -qP "$PASS" /root/${NAME}.zip * action "证书的打包文件已生成: /root/${NAME}.zip" } read -p "请输入用户的姓名拼音(如:zhangsan): " NAME remove_cert create_cert
吊销
read -p "请输入用户的姓名拼音(如:zhangsan}): " NAME cd /etc/openvpn/easy-rsa-server/3 ./easyrsa revoke ${NAME} nopass ./easyrsa gen-crl
vim /etc/openvpn/server.conf
crl-verify /etc/openvpn/easy-rsa-server/3/pki/crl.pem
systemctl restart openvpn@server.service
6. 有能力的,可以完成日常阿里云操作,购买ECS, 做快照,重装系统,购买SLB,mysql. 在阿里上基于SLB, mysql,完成部署LAMP。
略
7. 总结数据库原理。
(1)数据的分类
结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据。
非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页。
半结构化数据:比如xml或者html的格式的数据。
(2)DBMS数据库管理系统
Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
DBMS:Datebase Management System,是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
DBA:Database Administrator,负责数据库的规划、设计、协调、维护和管理工作
Application:应用程序,指以数据库为基础的应用程序
(3)数据库系统的架构
单机架构、大型主机/终端架构、主从式架构(C/S)、分布式架构
(4)RDBMS关系型数据库
关系Relational:关系就是二维表,其中:表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录record
列column:表中的每一列,称为属性,字段,域field
主键Primary Key:PK,一个或多个字段的组合,用于惟一确定一个记录的字段,一张表只有一个主键,主键字段不能为空NULL
唯一键Unique Key:一个或多个字段的组合,用于惟一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL
域domain:属性的取值范围,如,性别只能是男和女两个值,人类的年龄只有0-150
(5)数据库的操作
开发工程师CRUD(增加Create、查询Retrieve或Read、更新Update、删除Delete)
数据提取:在数据集合中提取感兴趣的内容。SELECT
数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE、
(6)数据库的正规化分析
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。
设计关系数据库时,遵从不通的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同规范式,称为范式呈递式规范,越高的范式数据库冗余越小。
第一范式:1NF
无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
第二范式:2NF
第二范式必须先满足第一范式,属于完全依赖于主键,要求表中的每个行必须可以被惟一地区分,通常为表加上每行的惟一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部分主键
第三范式:3NF
满足第三范式必须先满足第二范式属性,非主键属性不依赖于其他非主键属性。第三范式要求一个数据表中不包含已在其他表中已包含的非主关键字信息,非PK的字段间不能有从属关系
(7)数据约束
非空not null:此字段不允许填空值
主键primary key:一个或多个字段的组合,填入的数据必须能在本表中惟一标识本行,必须提供数据,即NOT NULL,一个表中只能有一个
惟一键unique:一个或多个字段的组合,填入的数据必须能在本表中惟一标识本行;允许为NULL,一个表中可以存在多个
默认 default :当不填写字段对应的值会使用默认值,如果填写时以填写为准。
外键foreign key:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
检查:字段值在一定范围内,如年龄在0-150质检
(8)关系运算
选择:挑选出符合条件的行
投影:挑选出需要的字段
连接:表间字段的关联