基础环境搭建

VMware Wrokstation Pro 17.6.1 虚拟机

现如今的 VMware Workstation Pro(17.6.1) 已经免费开放了,现如今的 VMware 被博通收购了,官网的下载方式有所改变,需要先注册一个博通的账号,然后去博通网站上下载。

下载地址:https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware+Workstation+Pro

百度网盘链接:https://pan.baidu.com/s/1SMJBschWGoBZVoEcZok19w?pwd=t6vm

Centos8

官网:https://www.centos.org/download/

百度网盘链接:https://pan.baidu.com/s/1ZYr1CNntXg5dmz-iQ53JKQ?pwd=8zw6

题目

项目背景

你是一位刚入职A公司的安全运维实习生,入职公司后,你发现公司目前的系统配置存在很大的优化空间,作为一名在校期间门门课程都轻松拿A的学霸来讲,公司老板非常器重你,允许你对公司的系统配置进行一场酣畅淋漓的安全改造。

网络拓扑如下:

注意:以下实现过程,需要有详细的实现过程说明和过程描述,并且配上操作截图(记住,不要截全屏!!)。

项目得分点

你将从以下几个方面进行系统配置优化:

一、 服务部署(30分)

a、 边界服务器部署Nginx服务,主要实现反向代理的功能(10分)

b、 两台内网服务器分别部署LNMP,部署完成后,分别在/var/www/html目录下创建一个index.php文件,在使用网页访问时,分别输出的内容为:

门户网站:姓名全拼-this is portal website,

OA网站:姓名全拼-this is OA website(15分)

c、 在边界服务器上部署FTP服务,设置FTP的访问用户为:姓名全拼,将访问用户限制在自己的家目录,在家目录下创建一个FTP目录,将其属主和属组都修改为所创建的用户名,最后在FTP目录下,创建一个test.txt文件。(5分)

二、 传输安全(20分)

a、在边界服务器上配置https服务,并且配置反向代理,分别实现对内网两台web服务器的访问。(10分)

www.shdz.com  访问的是公司的门户网站

oa.shdz.com  访问的是公司的OA

b、实现HTTP到HTTPS的重定向,当使用HTTP访问这些域名时,自动跳转到HTTPS。(10分)

三、 边界安全(25分)

a、 在边界服务器上部署Snort入侵检测设备,并监测外侧vmnet8网卡,当发现有用户ping此网卡时,记录下访问日志。(10分)

b、 在边界服务器上开启主机防火墙,并将防护模式设置为白名单模式。允许外界用户主动访问本地的HTTP、HTTPS服务。并实现仅本主机可以ping通其它主机,而其它主机无法主动ping通本主机。(5分)

c、 在边界服务器上部署堡垒机服务,并创建一个运维帐号,帐号名称为:姓名全拼,授予此帐号对内网两台主机的管理权限。(10分)

四、 计算环境安全(20分)

a、 使用运维帐号登录堡垒机后,配置内网的两台web服务器,在web1服务器创建一个/share目录,设置此目录下的文件仅创建者和root能删除,其它用户无法进行删除。在web2服务器上配置sudo,实现对如下用户的最小权限管理:(15分)

网络路由管理: 张三(zhangsan)

磁盘管理: 王五(wangwu)

软件包管理: 田七(tianqi)

b、 在物理主机访问边界器上的FTP服务,并下载test.txt文件(5分)

五、 报告得分(10分)

5

报告非常完整

报告比较完整

完整程度一般

报告不完整

5

逻辑结构清晰

逻辑组织较好

逻辑组织一般

逻辑不清

基础配置

配置 VMware 网络环境

打开 VMware Workstation Pro 17.6.1,打开虚拟网络编辑器

先点击VMnet1,然后点击更改设置

会黑屏然后问你是否允许此应用对你的修改,直接允许就行,然后就可以编辑VMnet1的子网了。

修改VMnet1的子网IP地址范围为 192.168.10.0,子网掩码为 255.255.255.0,然后点击应用即可。

创建虚拟机

这一步可以直接参考:VMware Workstation Pro 17 创建 Centos8 虚拟机 - 祀梦的个人博客,先创建三个虚拟机,分别是边界服务器、Web1-公司门户网站、Web2-公司OA

创建完三个对应的虚拟机之后,选择边界服务器,点击“编辑虚拟机设置”,点击“网络适配器”,配置为“仅主机模式”,然后点击添加。

添加一个新的网络适配器,点击完成

修改我们刚刚创建的网络适配器2为 NAT 模式

另外两个Web服务器的网卡配置为仅主机模式

虚拟机基础配置

在进行下面的配置之前请先确保已经配置好 yum 源,可以参考 Centos8 配置本地 Yum 源 - 祀梦的个人博客 这篇文章。

打开虚拟机的网络配置

启动网卡,点击设置

配置 IPv4 最好是静态的IP地址,确认之后可以重启一下网卡

通过 ifconfig 检查一下 ip 地址

我的静态IP地址配置如下:

边界服务器:192.168.10.50

Web1-公司门户网站:192.168.10.100

Web2-公司OA:192.168.10.200

边界服务器有两张网卡,请设置仅主机模式的那张网卡,可以先点击虚拟机->右键设置->硬件->网络适配器,点击高级,里面可以查看到这张网卡的MAC地址,然后根据MAC地址来修改网卡的IP地址。

边界服务器的 NAT 网卡,需要添加配置

点击IPv4,然后点击Add即可

如果第一个网卡是NAT网卡,第二个网卡是仅主机的网卡的话,两个网卡的配置反过来,也就是第一个网卡通过DHCP,第二个网卡配置IP地址为192.168.10.50。

配置完成之后,边界服务器既可以 ping 通百度,也可以 ping 通两个 Web 服务器。

这里的IP地址一定要配置清楚!!!

一、服务部署( 30分 )

a、边界服务器部署Nginx服务,主要实现反向代理的功能(10分)

打开边界服务器,下载 nginx 服务。

命令:yum install nginx -y

反向代理的具体要求这里没给出,所以说到具体的需求了再具体配置。

b、 两台内网服务器分别部署LNMP

LNMP 中,L 指的是 Linux,N指的是Nginx服务器,M指的是MySQL服务器,P指的是PHP,组合起来运行一个动态网站。接下来来安装这些服务。

接下来的这些操作,均执行在“Web1-公司门户网站”虚拟机上,“Web2-公司OA”可以参考 Web1 来写

安装 MySQL 服务

先切换到 root 用户,然后安装 mariadb 服务

命令:yum install @mariadb -y 下载 mariadb 数据库

显示如下内容代表安装完成

启动 mariadb 服务,并查看服务状态

命令:systemctl enable --now mariadb 设置mariadb服务开机自启动,在命令结束后启动mariadb服务

命令:systemctl status mariadb 查看mariadb服务的运行状态,CTRL+C 退出查看

进行数据库初始化,第一个问题直接回车,然后确认设置 root 用户密码,剩下的问题全部选择 y 即可。

命令:mysql_secure_installation 初始化数据库配置

确认可以连接到 MySQL 数据库即可

命令:mysql -u root -proot,-u后面是用户名,-p后面是用户的密码,注意-p后面不需要加空格

安装 PHP 服务

这里他给的LNMP服务管理.pdf中写的太麻烦了,根本没必要,我选择自己的做法,但是一样可以实现PHP服务。

命令:yum install php -y 安装PHP

启动 PHP 服务

命令:systemctl enable php-fpm.service 开机自启动 php-fpm

命令:systemctl start php-fpm.service 启动 php-fpm 服务

命令:systemctl status php-fpm.service 查看 php-fpm 服务状态

安装 Nginx 服务

命令:yum install nginx -y 安装nginx 服务

编辑 nginx 配置文件

命令:vim /etc/nginx/nginx.conf 编辑配置文件

修改 server_name 为 www.shdz.com(如果是 Web2 的修改为 oa.shdz.com )

在图中位置添加如下内容:

location ~ \.php$ {
  root /usr/share/nginx/html;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/run/php-fpm/www.sock;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
}

在 Web 服务的家目录创建 index.php,先添加 phpinfo 查看 php 是否生效

命令:cd /usr/share/nginx/html/ 切换到Web的家目录

命令:touch index.php 创建文件

命令:echo "<?php phpinfo(); ?>" > index.php 将代码写入到index.php中

命令:cat index.php 查看代码是否写入

添加本机的hosts文件,将 www.shdz.com 解析到 192.168.10.100,也就是Web1 本机上(这里的 Web2的话,将 www.shdz.com 修改为 os.shdz.com,将 192.168.10.100 修改为192.168.10.200 即可)

命令:echo "192.168.10.100 www.shdz.com" >> /etc/hosts 将解析追加到 hosts 文件中

启动 nginx 服务

命令:systemctl start nginx 启动 nginx 服务

命令:systemctl enable nginx 开机自启动 nginx 服务

命令:systemctl status nginx 查看 nginx 服务状态

选择 Activities,选择 firefox

输入 www.shdz.com ,可以查看到如下页面,代表 php 生效了。( 如果没显示的话可以尝试访问一下 www.shdz.com/index.php 看看有没有 )。

修改 index.php 为题目要求的内容(这里看服务器,Web1 和 Web2 不一样)

命令:vim /usr/share/nginx/html/index.php 编辑网站首页的 index.php

这里的 simeng 用自己的姓名拼音!Web2 中填写的是 simeng-this is OA website

simeng-this is portal website.

Nginx 服务配置 HTTPS 连接

这里由于没有 CA 服务器,使用自签名证书。

先创建证书存放目录,然后创建自签名证书

命令:mkdir -p /etc/ssl/private/ 创建证书存放目录

命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt 创建证书

这里的信息都可以乱填,除了倒数第二条那个域名要写 www.shdz.com ( Web2 服务器写 os.shdz.com)

创建配置文件目录/etc/nginx/snippets/并编辑 /etc/nginx/snippets/self-signed.conf/etc/nginx/snippets/ssl-params.conf

命令:mkdir -p /etc/nginx/snippets/ 创建配置文件目录

命令:vim /etc/nginx/snippets/self-signed.conf 编辑配置文件

命令:vim /etc/nginx/snippets/ssl-params.conf 编辑配置文件

配置文件中写入如下内容:

self-signed.conf

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

ssl-params.conf

# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

编辑 nginx.conf 配置文件,然后重启服务

命令:vim /etc/nginx/nginx.conf 编辑配置文件

命令:systemctl restart nginx 重启nginx服务

nginx.conf 中如图所示位置添加如下内容

listen       443 ssl default_server;
listen       [::]:443 ssl default_server;
include      snippets/self-signed.conf;
include      snippets/ssl-params.conf;

在 firefox 中通过 https 协议访问,由于是自签名证书,firefox 会提示有风险,点击 Go Back 即可。

证明可以通过 https 协议访问到网站内容

最后记得在防火墙放行 https 和 http 流量,方便别人访问

命令:firewall-cmd --permanent --add-service=https

命令:firewall-cmd --permanent --add-service=http

命令:firewall-cmd --reload

同样的操作在 Web2 上也做一遍,记得 Web2 的网址和网页内容和 Web1 不一样!

c、部署 FTP 服务

原题题目要求为:在边界服务器上部署FTP服务,设置FTP的访问用户为:姓名全拼,将访问用户限制在自己的家目录,在家目录下创建一个FTP目录,将其属主和属组都修改为所创建的用户名,最后在FTP目录下,创建一个test.txt文件。

接下来的操作在边界服务器上部署!

命令:yum install vsftpd -y 安装 FTP 服务

命令:systemctl start vsftpd 启动 FTP 服务

命令:systemctl enable vsftpd 设置开机自启动 FTP 服务

创建用于进行 FTP 连接的用户,这里记得改成自己的名字的拼音,后续的 ailixiya 都要改

命令:useradd ailixiya 创建爱莉希雅用户

命令:passwd ailixiya 给爱莉希雅账号设置密码

这里需要输入两次密码

在 FTP 用户家目录下创建一个 ftp 目录

命令:mkdir -p /home/ailixiya/ftp 在用户家目录下创建一个 ftp 目录

编辑 vsftpd 配置文件

命令:vim /etc/vsftpd/vsftpd.conf 编辑配置文件

找到如下内容,修改为如下形式,如果没有找到就在末尾添加如下内容

chroot_local_user=YES
allow_writeable_chroot=YES

修改用户家目录下的 ftp 文件夹的拥有者和拥有组,创建 test.txt , 注意将 test.txt 的拥有者和拥有组也改为 ailixiya

命令:chown ailixiya:ailixiya /home/ailixiya/ftp 将 ftp 的拥有者和拥有组设置为ailixiya用户和用户组

命令:touch /home/ailixiya/test.txt 创建 test 文件

命令:echo "this is ailixiya home" > /home/ailixiya/test.txt 写入欢迎词到 test.txt

命令:chown ailixiya:ailixiya /home/ailixiya/test.txt 设置 test 文件的拥有者和拥有组

关闭安全模式,防火墙放行 ftp 服务,重启 vsftpd服务

命令:setenforce 0 关闭安全模式

命令:firewall-cmd --permanent --add-service=ftp 防火墙放行 ftp 服务

命令:firewall-cmd --reload 防火墙策略重新加载

命令:systemctl restart vsftpd 重启 vsftpd 服务

在 Web1 服务器上安装 ftp,进行测试

命令:yum install ftp -y 安装 ftp 服务

在本地创建一个 test.txt,写入内容

命令:touch /tmp/test.txt 创建 test.txt

命令:echo "this is Web1" >> /tmp/test.txt 写入欢迎词到 test.txt

命令:chmod 777 /tmp/test.txt 给 test.txt 全部权限

Web1上尝试通过 ailixiya 连接到边界服务器,并执行测试

命令:ftp 192.168.10.50 尝试连接到 192.168.10.50,输入用户名和密码之后即可

命令:ls 查看当前目录下的内容

命令:pwd 查看绝对路径,发现是 /,但是当前实际上处于/home/ailixiya下,满足题目中的:“将访问用户限制在自己的家目录”这一条。

命令:get test.txt 尝试获取 test.txt,成功

命令:cd ftp,切换到 ftp 目录下,成功,拥有相应权限

命令:put /tmp/test.txt Web1.txt 将之前准备的 test.txt 以 Web1.txt 的名字上传到 ftp 服务器,证明有上传权限

命令:ls 查看是否上传成功

命令:exit退出 ftp 命令行

命令:cat test.txt 查看从 ftp 服务器上下载的 test.txt ,内容正确

在边界服务器上能够查看到上传的Web1.txt,内容正确

二、传输安全(20分)

a 和 b 边界服务器配置反向代理 - 实现 HTTP 到 HTTPS 的重定向

原题:a、在边界服务器上配置https服务,并且配置反向代理,分别实现对内网两台web服务器的访问。www.shdz.com  访问的是公司的门户网站,oa.shdz.com  访问的是公司的OA 。

边界服务器在之前已经安装了 nginx,这里就不重复安装了。

命令:vim /etc/nginx/conf.d/shdz.conf

/etc/nginx/conf.d/ 下创建 shdz.conf ,编写内容如下:

server {
    listen 80;
    server_name www.shdz.com;
    return 301 https://192.168.10.100;
}
server {
    listen 80;
    server_name oa.shdz.com;
    return 301 https://192.168.10.200;
}
server {
    listen 443 ssl;
    server_name www.shdz.com;

    ssl_certificate /etc/ssl/certs/www.crt;
    ssl_certificate_key /etc/ssl/private/www.key;

    location / {
        proxy_pass https://192.168.10.100;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
server {
    listen 443 ssl;
    server_name oa.shdz.com;

    ssl_certificate /etc/ssl/certs/oa.crt;
    ssl_certificate_key /etc/ssl/private/oa.key;

    location / {
        proxy_pass https://192.168.10.200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

在边界服务器上创建证书文件夹

命令:mkdir -p /etc/ssl/private/

将 Web1 的证书传递到 Nginx 服务器上

命令:scp -P 22 /etc/ssl/certs/nginx-selfsigned.crt root@192.168.10.50:/etc/ssl/certs/www.crt

命令:scp -P 22 /etc/ssl/private/nginx-selfsigned.key root@192.168.10.50:/etc/ssl/private/www.key

将 Web2 的证书传递到 Nginx 服务器上

命令:scp -P 22 /etc/ssl/certs/nginx-selfsigned.crt root@192.168.10.50:/etc/ssl/certs/oa.crt

命令:scp -P 22 /etc/ssl/private/nginx-selfsigned.key root@192.168.10.50:/etc/ssl/private/oa.key

重启 nginx 服务,防火墙放行 http 和 https 流量

命令:systemctl restart nginx.service 重启 nginx 服务

命令:firewall-cmd --permanent --add-service=http 放行 http 流量

命令:firewall-cmd --permanent --add-service=https 放行 https 流量

命令:firewall-cmd --reload 防火墙重新加载规则

命令:setenforce 0

边界服务器修改 hosts 文件,将 www.shdz.com 和 oa.shdz.com 都解析到边界服务器上( 如果 Web1 和 Web2 要测试代理的话也需要执行这两条命令,记得在执行前要先删除之前添加到 /etc/hosts 文件之中的内容 )、

命令:echo "192.168.10.50 www.shdz.com" >> /etc/hosts 将 www.shdz.com 解析到 192.168.10.50

命令:echo "192.168.10.50 oa.shdz.com" >> /etc/hosts 将 oa.shdz.com 解析到 192.168.10.50

由下图可得,www.shdz.com 和 oa.shdz.com 都解析到了 192.168.10.50,通过 http 协议访问之后显示 301 跳转,通过 https 协议可以访问到网站的内容

三、边界安全

a、部署 Snort 入侵检测设备

原题:在边界服务器上部署Snort入侵检测设备,并监测外侧vmnet8网卡,当发现有用户ping此网卡时,记录下访问日志。(10分)

提前下载 Snort 的 rpm 包上传到边界服务器,或者直接 wget 下载,需要配置 epel 仓库

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
wget https://www.snort.org/downloads/snort/snort-2.9.20-1.centos.x86_64.rpm 
dnf install -y snort-2.9.20-1.centos.x86_64.rpm
wget https://www.snort.org/downloads/community/community-rules.tar.gz
tar -zxvf community-rules.tar.gz -C /etc/snort/rules

先通过 ifconfig 确定一下外网的网卡名称和网段,我这里是 ens224 和 192.168.178.0 网段,根据自己的虚拟机情况来定。

编辑 snort 主配置文件

命令:vim /etc/snort/snort.conf

ipvar HOME_NET 192.168.10.0/24
ipvar EXTERNAL_NET !$HOME_NET
...
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
...
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

编辑服务启动配置文件

命令:vim /etc/rc.d/init.d/snortd

修改:INTERFACE="-i eth224"

命令:vim /etc/sysconfig/snort

修改:INTERFACE=eth224

注释默认规则文件,启用社区规则文件

sed -i 's/include \$RULE_PATH/#include \$RULE_PATH/' /etc/snort/snort.conf
echo '' >> /etc/snort/snort.conf
echo '# enable community rule' >> /etc/snort/snort.conf
echo 'include $RULE_PATH/community-rules/community.rules' >> /etc/snort/snort.conf
echo 'include $RULE_PATH/local.rules' >> /etc/snort/snort.conf

安装 Libdnet

执行 make 安装过程中会有几个选项,直接输入 y 就行

yum install gcc-c++ -y
wget https://nchc.dl.sourceforge.net/project/libdnet/libdnet/libdnet-1.11/libdnet-1.11.tar.gz
tar -zxvf libdnet-1.11.tar.gz 
cd libdnet-1.11/
./configure && make && make install

创建对应的配置文件夹并给予权限,这里还需要创建黑白名单

mkdir -p /usr/local/lib/snort_dynamicrules
chown -R snort:snort /usr/local/lib/snort_dynamicrules
chmod -R 700 /usr/local/lib/snort_dynamicrules
touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/black_list.rules
touch /etc/snort/rules/local.rules

运行 snort 自我检查 ,可以看到检查完成

命令:snort -T -i ens224 -u snort -g snort -c /etc/snort/snort.conf

启动 snort 服务,要先 systemctl daemon-reload 不然会报错

systemctl daemon-reload
systemctl start snortd

编写规则

命令:vim /etc/snort/rules/local.rules

写入如下内容:

alert icmp any any -> 192.168.178.180 any (msg:"ICMP Testing Rule";sid:1000001;)

针对所有来源的ICMP协议,目标为192.168.178.180的任意端口进行警告

通过下述命令运行 snort

命令:snort -A console -i ens224 -u snort -g snort -c /etc/snort/snort.conf

运行之后,在主机(自己电脑)上打开 cmd 窗口 ping 一下虚拟机的网卡

然后就可以看到对应的记录了

b、防火墙单向 ping 通

原题目:在边界服务器上开启主机防火墙,并将防护模式设置为白名单模式。允许外界用户主动访问本地的HTTP、HTTPS服务。并实现仅本主机可以ping通其它主机,而其它主机无法主动ping通本主机。(5分)

防火墙默认就是白名单,关于 http 和 https 的策略前面做过了,这里做一下 ICMP 的回包拦截即可

firewall-cmd --zone=public --add-icmp-block=echo-reply --permanent
firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
firewall-cmd --reload

在边界服务器上进行测试

结论:边界服务器可以 ping 通 Web1 和 Web2

在 Web1 上进行测试

结论:无法 ping 通边界服务器,可以正常访问边界服务器的网页服务,且确实是由边界服务器进行反向代理的服务。

c、在边界服务器上部署堡垒机服务

边界服务器上安装堡垒机服务

这里 wget 可能会出现问题,可以先将压缩包下载到本地然后上传到边界服务器上

链接:https://pan.baidu.com/s/1fxDQC2bCqg1FwJ3IuONKNQ?pwd=cq1v

cd /usr/local/src
wget https://tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz
tar -zxzf teleport-server-linux-x64-3.6.4-b3.tar.gz
cd teleport-server-linux-x64-3.6.4-b3
./setup.sh 

我这里是直接上传的

确认 Web 服务开启

命令:netstat -tnlp | grep 7190

这里边界服务器参考前面的内容安装MySQL服务

命令:mysql -u root -proot

数据库操作语句:

create database teleport;
grant all on teleport.* to 'teleport'@'localhost' identified by 'admin123';
flush privileges;

编辑 Teleport 数据库配置文件

使用 Firefox 连接 Web 界面

刷新后可以登录 Teleport

这里建议在边界服务器中放行端口

firewall-cmd --zone=public --add-port=7190/tcp --permanent
firewall-cmd --reload

然后在主机中访问网页,因为需要下载 Teleport 助手,不然一直会跳弹窗

Teleport 助手下载链接:https://tp4a.com/static/download/teleport-assist-windows-3.6.3.exe

创建一个运维账号,这里请使用自己的姓名全拼

点击用户最右边的操作->重置密码,给爱莉希雅设置密码

将两个主机添加到资产列表中

点击账号数

添加账号

输入远程账号,点击确定

192.168.10.200 同样操作

运维授权,创建爱莉希雅的运维授权

点击授权策略

点击添加用户

全选,添加为授权操作者

点击添加主机

点击添加为被授权资产

点击连接设置,确认允许所有,保存设置

四、 计算环境安全(20分)

a、运维账号配置Web服务器

原题目: 使用运维帐号登录堡垒机后,配置内网的两台web服务器,在web1服务器创建一个/share目录,设置此目录下的文件仅创建者和root能删除,其它用户无法进行删除。在web2服务器上配置sudo,实现对如下用户的最小权限管理:(15分)网络路由管理: 张三(zhangsan),磁盘管理: 王五(wangwu),软件包管理: 田七(tianqi)

这里需要注意,建议使用内网的地址登录,也就是192.168.10.50的IP地址登录运维账号,需要提前修改本机的VMnet1网卡,给自己一个IP地址。

登录之后可以看到运维主机

接下来一定一定要关闭边界服务器的防火墙,这里哪怕是设置了直接连接依旧会映射到边界服务器的端口上,防火墙不关的话 Putty 根本无法连接。

( 我一直以为是 Putty 的错 ,排错排了一个小时... )

点击 ssh 之后会弹出这样的页面,点击是,第一次连接可能会黑屏,关掉重开就好了

使用 sticky bit 来进行设置,仅拥有者和拥有组可以删除,都是 root

mkdir /share
chmod +t /share
chmod 1777 /share/
ls -ld /share

验证,由图可得,root 用户可以删除其他用户创建的文件,其他用户只能删除自己创建的文件

cd /share/
touch root.txt
echo "this is root" > root.txt
su simeng
cat root.txt
rm -rf root.txt
touch 1.txt
touch 2.txt
rm -rf 1.txt
exit
rm -rf root.txt
rm -rf 2.txt

连接到Web2服务器上,执行如下命令

打开 sudoers 文件进行编辑

命令:visudo

在文档末尾添加如下内容

zhangsan ALL=(ALL) NOPASSWD: /usr/sbin/ip, /sbin/ifconfig, /sbin/route
wangwu ALL=(ALL) NOPASSWD: /sbin/fdisk, /sbin/mkfs, /bin/mount, /bin/umount
tianqi ALL=(ALL) NOPASSWD: /usr/bin/yum, /usr/bin/dnf

创建这些用户进行测试

useradd zhangsan
useradd wangwu
useradd tianqi

验证,有图可得,zhangsan只能使用 ifconfig,无法使用 ls 命令,其他用户同理。

b、在物理机上访问边界服务器上的FTP服务

win + r 打开命令行界面,直接执行 ftp 连接即可

打开家目录的 test.txt( test.txt 的位置默认位于当前cmd窗口的执行位置 ),可以看到确实是边界服务器上的 test.txt

泥嚎~