第五周作业

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




vim /var/named/magedu.org.zone.sh
$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
slave1  A    192.168.50.3
websrv     A    192.168.60.3                          
www       CNAME websrv
 
 
 
 
vim /var/named/magedu.org.zone.other
$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
slave1     A   192.168.50.3
websrv     A    127.0.0.1                          
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

port 1194
proto tcp
dev tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key  # This file should be kept secret
dh /etc/openvpn/certs/dh.pem
server 112.234.12.56 255.255.255.0
push "route 192.168.50.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 2048
user openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
 
#centos8 缺失unit文件,从centos7复制文件
 
#启动openvpn服务
systemctl daemon-reload
systemctl enable --now openvpn@server                                                                                                        

 

#!/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)关系运算

选择:挑选出符合条件的行

投影:挑选出需要的字段

连接:表间字段的关联

 

posted @ 2022-07-26 15:45  帅气的工藤新一  阅读(50)  评论(0)    收藏  举报