网络运维与网络安全 学习笔记 第三十五天
今日目标
su用户切换、sudo命令提权、部署动态Web应用
数据库安全加固、Web安全加固
网络监控基础、配置zabbix主控机、配置zabbix被控机
管理监控项、监控结果分析
su用户切换
su机制介绍及用法
Linux安全基线
指的是使Linux各项配置都符合安全要求的基本标准
账号/密码:口令复杂度/wheel组
SSH登录控制:禁root/改端口/密码/密钥验证··
[root@svr203~]# vim /etc/ssh/sshd_configPermitRootLogin no
//此行中的yes改no,可以禁止root远程登录
[root@svr203~]# systemctl restart sshd
//重启远程服务
su机制介绍
Substitute User,切换/替换用户
root切换为任何可登录的用户,无需密码
普通用户切换至其他用户时,需要验证目标用户的登录密码
不指定目标用户时,默认切换为root
su基本用法
切换到新用户的登录环境
执行su -用户名进入新的用户环境
执行exit返回原来的用户
[root@svr203~]# su - student
//切换为student,其中–表示登录
… …
[student@svr203 ~]$ pwd
//以student身份执行任务
/home/student
[student@svr203 ~]$ exit
//退出切换环境
注销
[root@svr203~]#
//已返回到原来的环境
su控制及跟踪
禁止滥用su切换权限
通常情况下,任何用户都被允许使用su切换
openEuler中已启用wheel组限制
除了root以外,只有加入wheel组的用户才被允许使用su切换
其他人使用su切换时,会提示拒绝权限
[root@svr203~]# vim /etc/pam.d/su… .-
auth requiredpam_wheel.so use_uid
//删除此行开头的#注释符号
[student@svr203~]$ su -
密码:
su:拒绝权限
su操作日志
安全日志/var/log/secure 文件
记录了用户登录、切换相关的事件消息
查找su-l关键词,可以找到与使用su切换用户相关的消息
[root@svr203~]# less /var/log/secure
Apr 2510:34:15svr203 su: pam_unix(su-l:session): session opened for user studentby root(uid=0)
Apr 25 i0:34:26svr203 su: pam_succeed_if(su-l:auth): requirement "uid>= 1000"not met by user “root”
Apr2510:38:07svr203 su: pam_unix(su-l:session): session closed for user student
sudo命令提权
sudo授权及使用
sudo机制介绍
Super doing,执行管理员授权的命令
允许授权用户代替管理员(或其他用户)来完成预先授权的命令
授权用户、授权命令需要提前配置
通过sudo执行命令时,只验证自己的密码(5分钟内不重复验证)
配置sudo授权
使用visudo专用工具
用户名本机可用主机名列表=(用户身份)授权命令列表
不指定用户身份时,缺省为root
[root@svr203~]# visudo
…
%wheelALL =(ALL) ALL
//允许wheel组用户使用任何命令(行首加#号可取消)
zx ALL= /usr/bin/nmcli,/usr/ bin/nmtui
//允许用户zx使用nmcli、nmtui管理网络
zy ALL=ALL//允许用户zy使用所有命令
sudo基本用法
查看自己的sudo授权
sudo -l
[zy@svr203~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点:
#1)尊重别人的隐私。
#2)输入前要先考虑(后果和风险)。
#3)权力越大,责任越大。
[sudo] zy的密码://初次使用时,验证用户zy的密码(5分钟内不再验证)用户zy可以在svr203上运行以下命令:
(root)ALL
执行管理员已允许提权的命令
sudo命令行
[zy@svr203~]$ mkdir /zydir//正常使用,无权在/下创建子目录
mkdir:无法创建目录"/zydir":权限不够
[zy@svr203 ~]$ sudo mkdir /zydir //sudo方式使用,成功在/下创建子目录
[zy @svr203~]$ ls -ld /zydir
drwxr-Xr-x. 2 root root 64月25 11:20/zydir
sudo日志跟踪
sudo操作日志
日志审计功能默认不开启
如果需要,可以手动打开sudo操作日志
[root@svr203~]# visudo
…
Defaults logfile=/var/log/sudo
//添加此行,要求记录sudo操作
[root@svr203~]# cat /var/log/sudo//使用过sudo后,会记录在这个文件中
Apr2511:34:52:zy:TTY=pts/1; PWD=/home/zy; USER=root ; COMMAND=list
Apr 25 11:34:59:zy: TTY=pts/1; PWD=/home/zy; USER=root ;
COMMAND=/bin/touch/zyfile
部署动态Web应用
部署DZ论坛代码
论坛系统概述
Forum,网络论坛
指的是Internet上的一种电子信息服务系统
提供一块公共电子白板,每个用户都可以在上面发布信息、提出看法
也称为BBS,Bulletin Board System
关于Discuz!论坛/社区系统
腾讯旗下北京康盛公司Comsenz出品
使用PHP语言编写,支持MySQL等多种数据库
免费提供源代码,用于学习、测试;商业站点需购买授权许可
确认LAMP环境
LAMP平台要确保已正常运行
主要是httpd、mariadb服务,必要时可以重启一下
[root@svr203 ~]# systemctl restart httpd mariadb
//重启web和数据库
若无特别需要,建议停用防火墙、停用SELinux保护
[root@svr203~]# systemctl disable firewalld --now
//停用防火墙
[root@svr203 ~]# setenforce 0
//停用SELinux
部署Discuz!论坛代码
下载 Discuz!论坛程序包,部署为网站目录
将upload目录上传到Web服务器(比如,作为bbs 网页子目录)
[root@svr203~]# ls /var/www/html/bbs/
//确认结果
admin.php configfavicon.ico index.php misc.php search.php
api connect.php forum.php install plugin.php source
… …
访问Discuz!安装页面
从浏览器访问http://服务器地址/bbs/,可看到安装页面
安装DZ论坛系统
搞定目录权限
1.使用chown将相关目录的所有者改为apache
2.特别提示:还需要关闭SELinux保护机制
正确设置数据库连接、管理员密码
MariaDB数据库的默认管理员为root,密码为空
成功安装后,页面底部会出现相应提示
数据库安全加固
数据库服务配置
LAMP+Discuz!环境部署
网站+数据库“速成版”环境
1.安装httpd、mariadb-server、php、php-mysql
2.启用httpd 服务、mariadb服务
3.基于上述LAMP默认环境部署Discuz_X3.4_SC_UTF8.zip 论坛系统
――其实,互联网中相当一部分网站就是类似这种的“默认”环境
mysql_secure_installation
默认设置很方便,也很不安全
需要为MariaDB/MySQL的test库、空密码等默认设置填坑
注意:生产环境建议运行此脚本,并仔细完成所有安全优化操作
[root@svr203 ~]# mysql_secure_installation
Web前台连数据库
指定前端系统如何连接数据库
服务器地址、数据库用户名、连接密码、数据库名
最好改用非root用户(需提前授权)
[root@svr203~]# vim /var/www/html/bbs/config/config_global.php
… …
$_config[‘db’][‘1’][‘dbhost’]=‘localhost’;
//数据库服务器地址
$_config[db’]1][dbuser’] =‘root’;
//数据库用户名
$_config[‘db’]1][dbpw’]='pwd@1234";
//数据库密码
$_config['db]1][‘dbname’]=‘ultrax’;
//数据库名称
Web后台连数据库
指定后端系统如何连接数据库
可以与前端使用同一套数据库用户名/密码
也可以另外准备一套账号
[root@svr203~]# vim /var/www/html/bbs/config/config_ucenter.php
… …
define(‘UC_DBHOST’, ’ localhost’);
//数据库服务器地址
define(‘UC_DBUSER’,’ root’);
//数据库用户名
define('UC_DBPW", ‘pwd@1234’);
//数据库密码
define(‘UC_DBNAME, ’ ultrax’);
//数据库名称
控制配置文件的权限
默认所有人有r读权限,非必要、应去除[
[root@svr203 bbs]# chmod o-r config/config_global.php
[root@svr203 bbs]# chmod o-r config/config_ucenter.php
[root@svr203 bbs]# ls -lh config/config_global.php
-rw-r-----. 1 apache apache 4.8K 6月15 14:49 config/config_global.php
-rw-r-----. 1 apache apache 540 6月1515:24 config/config_ucenter.php
Web安全加固
Web配置调整
httpd.conf常规优化
理解常规配置
DocumentRoot:设置本网站的网页根目录
Listen:设置在本机监听Web服务的IP地址及端口
DirectoryIndex:设置访问网站目录时的默认网页文件名
ServerName:设置本网站注册的DNS名称(即完整域名)
[root@svr203~]# vim /etc/httpd/conf/httpd.conf
… …
DocumentRoot “/var/www/html”
Listen 80
Directorylndex index.html…
//上述内容是默认配置
隐藏版本信息
通过浏览器/扫描工具很容易获取Web服务端的软件版本信息
通过隐藏版本细节,可以提高侦察难度
[root@svr203~]# vim /etc/httpd/conf.d/sec1.conf
//新建一个配置文件
ServerTokens Prod
//HTTP响应只显示产品名(默认为Full,显示全部)
ServerSignature off
//服务器信息不显示签名
…
[root@svr203~]# systemctl restart httpd
//重启服务
[root@svr203~]# nmap -sV -p 80 localhost
//使用nmap扫描本机,只显示Apache httpd
保护网页目录
默认配置的httpd允许自动列出目录下所有资源
针对目录启用“Options -Indexes”可以关闭目录浏览功能
[root@svr203~]# vim /etc/httpd/conf.d/sec2.conf
<Directory “/var/www/html/vod”>
//针对特定目录
Options -Indexes
//添加-号表示禁用此项功能
[root@svr203~]# systemctl restart httpd
//重启服务
网络监控基础
开源监控方案
拥有集成化、自动化、Web管理等优势
监控结果直观、支持报警插件
… …
zabbix体系架构
采集数据
展示结果
触发告警
准备网站、数据库支持
一台openEuler 20.03主机
主机名: svr203.tedu.cn,IP地址:192.168.10.203/24
安装并启用LAMP网站平台
[root@svr203~]# vim /etc/hosts
//添加本地域名记录
192.168.10.203 svr203.tedu.cn
[root@svr203 ~]# yum -y install /root/lamp_oe1_pkgs/*.rpm
//安装预备好的离线包
//安装LAMP组件
[root@svr203~]# systemctl restart httpd mariadb php-fpm //开启服务
[root@svr203~j# systemctl enable httpd mariadb php-fpm //设置开机自运行
安全策略调整
禁用防火墙
[root@svr203~]# systemctl stop firewalld
//立即停止防火墙
[root@svr203~]# systemctl disable firewalld
//禁止开机自动运行
禁用SELinux机制
[root@svr203~]# setenforce 0
//使SELinux失效
[root@svr203~]# vim /etc/selinux/config
//开机时禁用
SELINUX=disabled
//修改原有的SELINUX=enforcing行
配置zabbix主控机
安装zabbix主控端软件
安装主控端组件
在线安装可参考官方文档
https://www.zabbix.com/documentation/5.0/zh/manual
国外源,可能会比较慢
离线安装可从教学资源中获取
比如zabbix5o_pkgs目录,将其上传至主控机的/root/目录下
[root@svr203~]# yum -y install /root/zabbix50_pkgs/.rpm //安装包
[root@svr203~]# yum list "zabbix"
//检查安装结果
…
已安装的软件包
zabbix-agent.x86_64 5.0.11-1.el8
//被控端
zabbix-apache-conf.noarch 5.0.11-1.el8
//网站配置文件
zabbix-get.x86_64 5.0.11-1.el8
//检测工具(可选)
zabbix-server-mysql.x86_64 5.0.11-1.el8
//主控端
zabbix-web.noarch 5.0.11-1.el8
//web控制界面
zabbix-web-deps.x86_64 5.0.11-1.el8
//PHP协作配置文件
zabbix-web-mysql.noarch 5.0.11-1.el8
//数据库支持
安装zabbix网页控制台
配置Web界面
安装好zabbix包以后,先重启一次httpd服务
[root@svr203~]# systemctl restart httpd//更新zabbix的网页配置
访问http://192.168.10.203/zabbix,单击“Next step”
若提示时区未设置,要先正确设置时区,再刷新网页
修改/etc/httpd/conf.d/zabbix.conf配置
启用时区配置(删除行首;号),并正确设置时区值
[ root@svr203 ~]# vim /etc/php-fpm.d/zabbix.conf
… …
php_value[date.timezone]=Asia/Shanghai
//时区设为亚洲/上海
[root@svr203~]# systemctl restart php-fpm
//重启Web以更新服务配置
若提示拒绝连接数据库,要先准备库及账号,再刷新网页
为zabbix建立专用库及授权用户,根据提示填写网页
[root@svr203~]# mysql -u root
create database zabbix character set utf8 collate utf8_bin;
//建库
grant all on zabbix.* to zabbix@localhost identified by 'zbx@1234";
//建用户、设置密码
quit;
若提示table … … not found,则要先导入初始库,再刷新网页ZABBIX
导入zabbix-server-mysql提供的初始数据
通过管道|操作交给mysql命令,导入到zabbix库中
[root@svr203~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz| mysql -uzabbix -pzbx@1234 zabbix
完成初始化以后,可以看到登录界面
启用zabbix主控服务
要告知zabbix-server如何访问数据库
[root@svr203~]# vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
//数据库名
DBUser=zabbix
//数据库用户
DBPassword=zbx@1234
//连接密码,注意删除行首#号
然后,再启动zabbix-server服务
[root@svr203~]# systemctl restart zabbix-server
//启动主控端服务
[root@svr203 ~]# systemctl enable zabbix-server
//设置开机自运行
部署zabbix被控机
安装被控端组件
被监控的Linux主机需要部署zabbix-agent代理程序
zabbix主控机,也可以作为被控机
前一节实际上已经安装好了
[ root@svr204~]# yum -y install /root/zabbix50_pkgs/zabbix-agent*.rpm
//安装agent代理包
[ root@svr204~]# yum list “zabbix*”
//检查安装结果
已安装的软件包
zabbix-agent.x86_64 5.0.11-1.el8 @@commandline
启用zabbix-agent被控服务
调整监听设置,允许主控机来采集数据
[root@svr204~]# vim /etc/zabbix/zabbix_agentd.conf
…
Server=127.0.0.1,192.168.10.203
//添加主控机的地址
ServerActive=127.0.0.1,192.168.10.203
//添加主控机的地址
Hostname=svr204.edu.cn
//本机的主机名
启用zabbix-agent服务
[root@svr204~]# systemctl restart zabbix-agent
//启动服务
[root@svr204~]# systemctl enable zabbix-agent
//设置开机自运行
管理监控项
管理被控机
用户登录及账号控制
登入zabbix控制台http://192.168.10.203/zabbix/
默认管理员账号Admin,密码是zabbix
单击左侧栏User settings,将界面语言修改为Chinese(zh_CN)
管理被控机
Zabbix导航边栏→配置→主机
可添加新的被控机:指定主机名、可见名、agent接口地址
可管理现有被控机:停用/启用、修改、选监控模板、…….
管理被控机的监控项
设置监控项
单击被控主机右侧的“监控项”,可以管理监控项
关联了OS Linux模板时,会自动添加大量监控项
比如针对CPU、内存、登录用户数、运行任务数等指标的监控
zabbix自动发现,或管理员手动添加新监控项
网卡入站流量net.if.in[ens33]
网卡出站流量net.if.out[ens33]
监控结果分析
使用仪表板
监测→仪表板,用于集中展现监控指标、报告问题
仪表板展示的数据块可以编辑
查看监控图形
监测→主机→xx→图形,查看主机的监控结果
修复中文显示
[root@svr203 ~ ]# yum -y install wqy-zenhei-fonts//安装中文字体(文泉驿-正黑)
[root@svr203 ~ ]# cp /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc
/usr/share/zabbix/assets/fonts/graphfont.ttf//替换掉默认字体cp:是否覆盖"/usr/share/zabbix/assets/fonts/graphfont.ttf"? y
创建监控图形
选中被监控主机→图形→创建图形
比如“网卡流量分析”图,整合入站/出站流量监控项