运维
2025-03-26 23:24:50 0 举报
AI智能生成
核心内容:IT基础设施的维护和管理系统,确保企业信息系统运行的稳定性和安全性。 文件类型:日常运维日志记录,故障响应报告,变更管理文档,性能监控报告。 修饰语:持续改进、实时监控、高度可定制化。
作者其他创作
大纲/内容
左侧技能体系
Linux基础
**FHS文件系统规范**
**基础操作命令**
文件管理
进程管理
权限管理
**内置编辑器**
vi/vim
nano
**主流发行版**
CentOS
Debian
Ubuntu
运维命令
**系统诊断**
strace(系统调用追踪)
netstat(网络状态分析)
vmstat(虚拟内存统计)
**硬件监控**
lspci(PCI设备查看)
dmidecode(硬件信息解码)
**性能工具**
mpstat(多核CPU统计)
pidstat(进程资源监控)
脚本开发
Shell脚本
Python自动化
Perl脚本
基础服务
**Web服务套件**
LAMP(Linux+Apache+MySQL+PHP)
LNMP(Nginx替代Apache)
**网络服务**
DNS域名解析
FTP文件传输
SAMBA文件共享
EMAIL邮件服务
NTP时间同步
DHCP动态主机配置
运维平台工具
**配置管理**
Puppet
SaltStack
**监控告警**
Nagios
Zabbix
Cacti
**批量运维**
pssh/ssh
Fabric
右侧技能体系
软技能
**安全意识**
加密存储策略
SSH密钥加密
**责任意识**
报警响应机制
Owner责任制
**沟通机制**
跨部门协作
故障通报流程
**优化能力**
推动代码优化
技术债务治理
**成长体系**
技术文档沉淀
知识分享机制
KVM虚拟化
**虚拟化架构**
半虚拟化(Para-virtualization)
全虚拟化(Full-virtualization)
**核心功能**
CPU虚拟化
内存气球技术
存储池管理
虚拟网络配置
**高级特性**
热插拔设备
动态迁移(Live Migration)
virsh命令行工具
**管理平台**
OpenStack
CloudStack
OpenNebula
ZStack
硬件管理
**服务器类型**
塔式服务器
机架式服务器
刀片服务器
**接口规范**
PCI-E
SATA/SAS
USB3.0/Type-C
**诊断工具**
lshw硬件列表
smartctl磁盘检测
安全防护
**防火墙配置**
iptables规则管理
ipset批量管理
**入侵检测**
fail2ban防护
安全漏洞扫描
网络管理
**协议栈分析**
TCP/IP协议簇
VLAN划分原理
**抓包工具**
tcpdump流量捕获
Wireshark协议解析
底层开发
**系统编程**
Linux C开发
内核模块编译
**性能调优**
内核参数调整
中断平衡配置
业务运维管理系统架构解析
一、核心功能模块
1. 业务运维门户
**服务交互层**:
服务台
SLA报告系统
物理位置可视化
**监控预警层**:
业务服务雷达
告警平台
**定制化模块**:
自定义界面(模块1/2)
2. IT资产管理平台
**运维流程**:
事件管理
变更管理
发布管理
**服务保障**:
值班管理
服务水平协议(SLA)
**扩展模块**:
资产生命周期管理
供应商/合同管理
3. 环境监控体系
**物理环境监控**:
机房环境监控
机房视频管理
机房巡检系统
**虚拟化管理**:
虚拟服务器管理
虚拟网络管理
虚拟存储管理
4. 云管理平台
**资源管理**:
多云资源统一纳管
云操作系统优化
**生命周期管理**:
云资源元生命周期管理
二、基础支撑层
1. 配置管理中心(CMDB)
**数据模型**:
Application
OS
数据库
存储
虚拟资源
2. 环境架构
**物理IT环境**:
网络设备
主机系统
**虚拟化环境**:
虚拟机集群
软件定义网络
**云环境**:
公有云/私有云资源池
三、技术特性
**统一门户**:集成服务目录与运行管理
**智能分析**:业务服务雷达实现拓扑可视化
**扩展能力**:支持自定义模块二次开发
**全栈监控**:覆盖物理-虚拟-云三层架构
运维安全风险全景图
一、基础服务安全
1.1 文件传输服务
**FTP**
匿名访问漏洞
弱口令爆破风险
**SSH**
弱口令爆破风险
**Telnet**
无认证访问漏洞
1.2 网络协议服务
**SNMP**
无认证访问导致消息泄露
**NTP**
反弹放大攻击风险
**DNS**
区域传送泄露敏感域名
Query劫持风险
二、应用层安全
2.1 Web中间件
**Tomcat**
status页面暴露
JMX控制台未授权访问
**Apache**
Server-info信息泄露
解析漏洞(<8.03版本)
空字节代码执行漏洞
**IIS**
HTTP.sys远程代码执行(CVE-2015-1635)
2.2 数据库服务
**Oracle**
弱口令爆破风险
**MySQL**
认证绕过漏洞(CVE-2012-2122)
**Redis**
未授权访问导致任意文件写入
**InfluxDB**
默认凭证漏洞(root/root)
2.3 Web应用
**目录遍历**
敏感文件读取(web.xml等)
**文件上传**
Webshell上传漏洞
**身份认证**
后台暴力破解风险
XSS窃取凭证
三、网络安全
3.1 协议安全
**DNS**
放大攻击风险
**NTP**
反射DDoS攻击
3.2 服务安全
**LDAP**
匿名访问漏洞
**VNC**
弱口令风险
四、服务器&设备安全
4.1 系统安全
**配置泄露**
phpinfo信息暴露
备份文件残留
日志文件泄露(nohup.out)
**权限漏洞**
可写目录配置不当
4.2 设备管理
**ActiveMQ**
控制台未授权访问
**Zabbix**
默认凭证漏洞
**压缩软件**
临时文件泄露风险
五、通用风险
**弱口令问题**
系统/服务默认口令
简单数字字母组合
**信息泄露**
源码泄露(WEB-INF)
配置信息明文存储
**未授权访问**
JMX/JMXinvokerServlet暴露
REST API无鉴权
运维路线图框架
一、保障服务稳定
1.1 资源管理
节点管理(开新节点/服务管理)
机圈管理(上架流程/机器下单)
硬件管理(角色变更/硬件报修)
容量管理(服务拥堵申请/下载区域调整)
1.2 变更管理
服务变更流程(配置文件修改/参数密误)
配套变更(内部文档同步)
变更记录(用户修改记录/访问变更)
1.3 故障管理
应急处理(故障期间操作/全员通知)
故障分析(场景复现/环境溯源)
根治方案(故障文档沉淀/系统改造)
二、提升服务质量
2.1 服务流程优化
服务响应能力(工单处理流程)
运维文档管理(有效文件存档)
软件升级体系(版本兼容性验证)
2.2 监控体系
基础层监控(CPU/内存/IO/Raid)
应用层监控(服务健康状态)
报警机制(分级收敛策略/负责人调整权)
2.3 网络优化
内外网架构(出口流量分析)
域名管理(危机处理预案)
链路管理(粘跟流量调度)
三、降低单位用户服务成本
3.1 预算控制
服务费用审计(超额预警)
硬件采购优化(成本效益分析)
资源调度算法(单位成本核算)
3.2 人员管理
值班制度(轮换机制)
奖惩体系(恶意行为处罚)
能力建设(月度培训/技术预研)
3.3 平台治理
服务审核流程(内外合规)
合同监护(服务协议管理)
人口分析(用户行为画像)
四、支撑体系
4.1 制度保障
报查制度(问题追踪)
维修制度(标准化流程)
文档体系(知识库沉淀)
4.2 技术保障
紧急数据处理(灾难恢复)
攻击防护(网络安全加固)
服务容灾(多活架构设计)
一、基础服务安全
1.1 文件传输服务
**FTP**
匿名访问漏洞
弱口令爆破风险
**SSH**
弱口令爆破风险
**Telnet**
无认证访问漏洞
1.2 网络协议服务
**SNMP**
无认证访问导致消息泄露
**NTP**
反弹放大攻击风险
**DNS**
区域传送泄露敏感域名
Query劫持风险
二、应用层安全
2.1 Web中间件
**Tomcat**
status页面暴露
JMX控制台未授权访问
**Apache**
Server-info信息泄露
解析漏洞(<8.03版本)
空字节代码执行漏洞
**IIS**
HTTP.sys远程代码执行(CVE-2015-1635)
2.2 数据库服务
**Oracle**
弱口令爆破风险
**MySQL**
认证绕过漏洞(CVE-2012-2122)
**Redis**
未授权访问导致任意文件写入
**InfluxDB**
默认凭证漏洞(root/root)
2.3 Web应用
**目录遍历**
敏感文件读取(web.xml等)
**文件上传**
Webshell上传漏洞
**身份认证**
后台暴力破解风险
XSS窃取凭证
三、网络安全
3.1 协议安全
**DNS**
放大攻击风险
**NTP**
反射DDoS攻击
3.2 服务安全
**LDAP**
匿名访问漏洞
**VNC**
弱口令风险
四、服务器&设备安全
4.1 系统安全
**配置泄露**
phpinfo信息暴露
备份文件残留
日志文件泄露(nohup.out)
**权限漏洞**
可写目录配置不当
4.2 设备管理
**ActiveMQ**
控制台未授权访问
**Zabbix**
默认凭证漏洞
**压缩软件**
临时文件泄露风险
五、通用风险
**弱口令问题**
系统/服务默认口令
简单数字字母组合
**信息泄露**
源码泄露(WEB-INF)
配置信息明文存储
**未授权访问**
JMX/JMXinvokerServlet暴露
REST API无鉴权
Linux系统安全检查脚本框架
一、基本信息核查
1.1 系统基础信息
`date`:检查起始/结束时间
`who am i`:当前用户ID
`pwd`:当前工作目录
`runlevel`:当前运行级别
`uname -a`:主机名与内核信息
1.2 系统环境信息
`cat /etc/motd`:登录提示信息
`cat /etc/issue`:系统发行版本
`cat /proc/version`:内核详细信息
1.3 硬件配置检查
`ifconfig -a`:网卡配置信息
`cat /proc/cpuinfo`:CPU信息
`cat /proc/meminfo`:内存信息
`cat /proc/paritions`:硬盘分区
`cat /etc/fstab`:挂载配置
二、服务状态及配置
2.1 服务管理
`chkconfig --list`:服务运行级别
`grep :initdefault /etc/inittab`:默认运行级别
2.2 网络配置
`netstat -natp`:当前网络连接状态
`cat /etc/sysctl.conf`:网络参数设置
检查TCP Wrapper:``` bash
cat /etc/hosts.deny
cat /etc/hosts.allow
```
2.3 安全配置
`ls -ls /etc/cron.*`:计划任务检查
`cat /etc/ssh/sshd_config`:SSH服务配置
三、帐户管理与ACL
3.1 用户权限
`ls -l /etc/passwd /etc/shadow /etc/group`:关键文件权限
`last`:用户登录历史
`cat /etc/security/console.perms`:控制台权限
3.2 认证配置
PAM配置检查:``` bash
cat /etc/pam.d/su
cat /etc/pam.d/sshd
```
四、日志审计
4.1 日志文件检查
`ls -ls /var/log`:所有日志文件检查
特殊日志检查:``` bash
grep 'authpriv' /etc/syslog.conf # Red Hat系列
grep 'authpriv' /etc/rsyslog.conf # Debian系列
```
五、附加检查项
`/proc`系统调试信息:``` bash
cat /proc/interrupts # 中断信息
cat /proc/ioports # IO端口信息
```
1. 使用`date`命令记录检查开始时间
2. 按模块顺序执行核查命令
3. 重点关注:
异常网络连接(ESTABLISHED状态)
/etc/passwd文件权限(应为644)
SSH协议版本配置
/var/log/secure日志异常登录
4. 使用`date`记录检查结束时间
Linux学习笔记
一.服务器注意事项
1.远程服务器不允许关机,只能重启
2.重启前应该关闭服务(例如生产服务,次之网络服务)
3.不要在服务器访问高峰运和地高负载命令(例解,压缩大文件,大量IO操作,如整盘扫描,复制大文件)
4.远程配置防火墙时不要把自已踢出服务器
5.指定合理的密码规范并定期更新
6.合理分配权限
购买xmind pro13;https://item.jd.com/17816155687.html
购买xmind pro
二.Linux注意事项
1.大小写敏感,命令长小写
2.所有内容都是以文件形式保存
3.不靠扩展名(后缀名)区分文件类型
4.所有存储设备都必须挂载后才能使用,包括硬盘,U盘,光盘
三.文件系统结构
相同:linux与window表现出来的文件结构都是树状结构
不同:实际存储的时候,linux可以将树下的某个分支单独出来,并在分区的时候指定一个分区,单独存储这一“分支”
四.分区建议及推荐分区方案
1.分须分区
/:根分区
Swap:交换分区,建议设为内存的2位,但最好不要超过2G
2.推荐分区方案
/:10G
/boot:200M
Swap:2G
/var:
1G以上,可变数据放在其中,例如日志文件,分配大小视用途而定,一般现在的大硬盘,建议分配5G
/home:最大的剩余空间的一半,用户的家目录所在
/usr:最大的剩余空间的一半,最耗用空间的部份。存放软件的地方
五.常用命令
1.文件处理命令
1.命令格式与目录处理命令ls
1.命令格式:命令 -[选项] [参数]
2.ls
别名ll= ls -i
-a 显示隐藏文件,隐藏文件是以“.”开头的文件
-i 显示详细信息
2.目录处理命令
mkdir:创建目录
-p 递归创建
cd:切换目录
cd ..表示返回上一级。..表示上级目录,.表示当前目录
cd:返回家目录
pwd:显示当前目录的绝对路径
rmdir:删除空目录,使用比较少
cp:复制文件或目录(复制同时可实现改名的作用)
-r:复制目录
-p:保留文件属性
mv:剪切文件,改名
rm:删除文件或目上录
-r:删除目录
-f:强制执行
3.文件处理命令
touch:创建文件
文件名不能带'/'符号,不建议带空格的文件名
cat:顺序显示文件内容
-n:带行号
tac:反向显示文件内容
more:分页显示文件内容,但不能向上翻页
f或空格:向下翻页,Enter:向下换行,q或Q:退出
less:分页显示文件内容,可向上翻页,带查找功能
同more,另Page Down,Page Up为向上向下翻页,上下箭头为向上向下换行。13;输入/XXX和?XXX为向下上查找字符,下一个按n
head:显示文件前几行,默认10行
-n+“空格”+行数
tail:显示文件末尾几行,默认10行
同head
-f:动态显示,常用于动态显示日志文件
4.链接命令
ln:生成链接文件
-s:创建软链接,默认生成硬链接
软链接:类似Window快捷方式,文件类型为l,日常使用比较多
硬链接:一个或多个具有相同索引节点的文件,具有防止“误删”的功能
不能给目录创建
不能跨区创建
2.权限管理命令
1.权限管理命令chmod
-R 递归修改
r=读权限(查看文件/列表目录中内容),w=写权限(修改文件,不能删/目录中创建,删除文件),x=执行权限(执行文件/进入目录)
权限位:r=4,w=2,x=1
u=所有者,g=所属组,o=其它人,a=所有人
2.其他权限管理命令
chown:修改所有者和所属组。chown user:group 文件或目录
chgrp:修改所属组。chgrp group 文件或目录
umask:显示,设置文件和目录的缺省权限掩码
-S:rwx的形式显示
实际权限=777-掩码
3.文件搜索命令
1.文件搜索命令find
-name:按文件名字查找
-iname:不区分大小写
-size:按文件大小查询,以数据块为单位,1数据块=0.5KB
-user:按所有者查找
-group:按所属组查找
-amin:查找(超过多长时间或多长时间内)访问过的文件
-cmin:查找(超过多长时间或多长时间内)修改过属性的文件
-mmin:查找(超过多长时间或多长时间内)修改过内容的文件
-type:按类型查找。f:文件,d:目录,l:软链接
-inum:按i节点查找
-a:两个条件同时满足
-o:两个条件满足任意一个即可
-exec/-ok:对搜索结果执行操作。例:find / -name init* -exec ls {} ;
可用通配符:*,?,+,—符号
2.其它搜索命令
1.locate:在文件资料库中查找
updatedb:手动更新资料库,tmp临时目录等不在更新范围之内
-i:不区分大小写
2.which:搜索命令位置及别名
3.whereis:搜索命令及帮助文档位置
例:13;passwd: /usr/bin/passwd(命令) 13;passwd: /etc/passwd(配置文件) /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz。1是命令的帮助,5是配置文件的帮助
4.grep:在文件内容中搜索关键字
-i:不区分大小写
-v:排除指定字串
4.帮助命令
1.man:查看命令或配置文件的帮助信息
man 1 XXX查看命令的帮助信息,man 5 XXX查看配置文件的帮助信息,前提是有的话
2.whatis:查看命令简短的帮助信息
3.apropos:查看配置文件简短的帮助信息
4.--help
显示常见的选项的帮助信息
5.info:跟man差不多
6.help:获得内置命令的帮助
内置命令:找不到命令所在路径的命令,linux有不少
5.用户管理命令
1.useradd:添加新用户
2.passwd:设置或更改用户密码
3.who:查看登录用户信息
4.w:查看登录用户详细信息
6.压缩解压命令
1.gzip与gunzip或gzip -d
只能压缩文件
压缩后不保留原文件
2.zip与unzip
-r:压缩目录
压缩后保留原文件
3.bzip2与bunzip2或bzip2 -d
只能压缩文件
-k:压缩后保留原文件
4.tar:打包
-c:打包
-x:解包
-v:显示详细信息
-f:指定文件名
-z:打包:打包后通过gzip压缩。2.解包:解压gz格式的打包文档
-j:打包:打包后通过bzip2压缩。2.解包:解压bz2格式的打包文档
7.网络命令
1.write:给在线用户发信息
2.wall:发送广播信息,ctrl+d保存发送
3.ping:测试网络连通性
4.ifconfig:查看/设备网卡信息
5.mail:发送/查看邮件
进入mail后按h显示邮件列表
按d加编号删除邮件
6.last:查看目前与过去登录系统的用户信息
7.lastlog:检查全部/特定用户上次登录的时间
-u:查看特定用户
8.traceroute:显示数据包到主机间的路径
9.netstat:显示网络相关信息
-n:显示IP和端口
-t:显示tcp协议的连接
-u:显示udp协议的连接
-l:显示监听状态的连接
-a:显示所有网络连接,包含-t,-u,-l
-r:查路由表可显示网关,单独使用
10.setup:配置网络,redhat系列独有
11.mount,umount:挂载/卸载
8.关机命启查看当前运行级别退出登录命令
1.关机命令
1.shutdown
可以指定执行时间和警告信息
-h:关机
-r:重启
-c:取消前一个关机命令
2.halt
3.poweroff
4.init 0
2.重启命令
1.reboot
2.init 6
3.runlevel:当看当前级别
4.logout:退出登录,使用完一定要退出
六.文本编辑器Vim
1.Vim工作模式
1.命令模式:插入模式按ESC
2.插入模式:命令模式输入i,a,o
3.编辑模式:命令模式输入:
2.Vim常用操作
:set nu:设置行号
:set nonu:取消行号
:n:到第n行
x:删除光标所在处字符
dd:删除光标所在行
u:取消上一步的操作
:x,yd:删除由x行到y行
yy:复制当前行,nyy复制当前行以下n行
dd:剪切当前行,ndd剪切当前以下n行
R:从光标所在处开始替换字符,按ESC结束
/string:搜索字符串,n下一下
:w:保存
:q:退出
3.Vim常用技巧
跳过不看
七.软件包管理简介
1.软件包分类,二者概念上的区别
1.源码包:原代码安装,脚本安装包
优点
1.开源,可以自行修改源代码
2.可以自由选择所需功能
3.源码包需要编译,更加适合安装的系统,稳定性和效率更高
4.卸载方便,可直接删除安装的位置, 没垃圾
缺点
1.安装步骤较多,尤其安装大型的软件集合时,容易出现拼写等人为错误
2.编译时间较长,比二进制包安装慢
3.安装过程报错新手很难解决
2.二进制包:RPM包,DEB包,编译后的二进制文件
优点
1.包管理系统简单。安装,升级,查询,卸载几个命令就可以实现
2.安装速度比源码包快得多
缺点
1.因为是编译后的,不能再看到源代码
2.功能选译不如源码包灵活
3.存在依赖性的问题
2.RPM包管理
1.rpm命令管理
1.RPM包命令原则
例:httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd:软件包名,而httpd-2.2.15-15.el6.centos.1.i686.rpm是包全名
2.2.15:软件版本
15:发布的次数
el6.centos:适合的Linux平台
i686:适合的硬件平台,noarch:适合任何硬件平台
rpm:rpm包扩展名
2.RPM包依赖性
1.树形依赖:a->b->c
2.环形依赖:a->b->c->a
3.模块依赖:模块依赖查询网站:www.rpmfind.net
3.RPM安装
-i:安装,后跟包全名。例:rpm -ivh 包全名
-U:升级,后跟包全名,大写U
-e:后跟包名
-v:显示详细信息
-h:显示进度
--nodeps:不检测依赖性
4.用rpm安装软件很痛苦
5.查询
-q:查询指定的包是否安装
rpm -q httpd
-qa:查询所有已安装的包
rpm -qa |grep httpd:列出所有已安装的包的包名带“httpd”的清单
-i:查询已安装包中的包信息
rpm -qi 包名
-p:查询没安装包的信息
rpm -qip 包全名
-l:查询包的安装位置
rpm -qlp 包名(装没装都可以查)
-f:查询文件属于哪个包
rpm -qf 文件名
-R:查询包的依赖性
rpm -qRp 包名
6.RPM包校验
-V:校验已安装的RPM包
验证内容
S:文件大小是否改变
M:文件的类型或权限是否被改变
5:文件的MD5校验是否改变
D:设备的中,从代码是否改变
L:文件路径是否改变
U:文件的所有者是否改变
G:文件的所属组是否改变
T:文件的修改时间是否改变
文件类型
c:配置文件
d:普通文档
g:ghost文件,很少见,就是该文件不应该被这个RPM包包含
l:授权文件
r:描述文件
RPM包中文件提取,用于修复文件
rpm2cpio 包全名 | cpio -idv.文件绝对路径
2.yum在线管理
1.IP地址配置和网络yum源
redhat系统可以用setup命令来配置网络参数
2.yum命令
yum list:查询所有可用软件列表
yum search 关键字:搜索服务器上所有和关键字相关的包
yum -y install 包名:自动应答安装包
update:升级,格式跟install一样
remove:删除,同上
安装软件的原则是用什么装什么,升级软件也要有针对性的升级不要“yum -y update”。因为这样会连linux的内核在内,所有包一并更新,更新内核后需要配置才能使用,不配置是进入不了系统的。remove也一样,因为依赖性的问题,删除软件有可以使其它软件崩溃,尽量不要卸载。
软件组
yum grouplist
yum groupinstall 软件组名
yum groupremove 软件组名
3.光盘yum源搭建
1.mount:挂载光盘
2.修改原始的3个网络yum源文件失效
3.让光盘yum源生效,CentOS-Media.repo就是系统准备给用户的光盘yum源文件,使用时修改内容即可
3.源码包管理
源码包和RPM包的区别,安装位置不同
RPM包安装位置:一般情况下是默认的
/etc/:配置文件
/usr/bin/:可执行命令
/usr/lib/:程序所使用的库
/usr/share/doc/:使用手册
/usr/share/man/:帮助文件
源码包安装位置:可以指定位置
建议:/usr/local/软件名/
两者安装位置不同的影响
RPM安装的服务管理
1.绝对路径中运行
例:/etc/rc.d.init.d/httpd start
2.,因为安装位置一般是默认的,所以可以用简化命令运行
例:service httpd start,service是redhat系统专有的
实际上service命令会去/etc/rc.d.init.d/目录查找你所需要运行的服务13;类似于window中设定了系统变量
源码代安装的服务
因为安装路径不同,没有了”系统变量“,只能使用绝对路径
源码包安装过程
注意事项
1.源代码保存位置:/usr/local/src/
2.软件安装位置:/usr/local/
3.如何确定安装过程报错
1.安装过程停止
2.并出现error,warning或no的提示
1.安装C语方编译器:gcc
2.下载源码包
3.解压源码包并进入解压的目录,看到INSTALL(安装说明)和README(使用说明)两个文件,最好可以查看一下
4.运行./confure
1.定义需要的功能选项。一定要使用--prefix=/usr/local/软件名
2.检测系统环境是否符号安装要求,例如依赖包是否安装
3.将定义好的功能选择和环境信息写入Makefile用于后续编译
5.运行make,占用时间最长
调用gcc把源码包编译成机器码
6.运行make install
现在才安装到服务器上
7.运行make clean
清空编译产生的临时文件,如果在运行make install之前报错,也可以用这个。清空临时文件
源码包的卸载
make uninstall或不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件
4.脚本安装包
类似于window的安装方式
八.用户和用户组管理
1.用户配置文件
1.用户信息文件:/etc/passwd
1.用户名
2.密码标志
3.UID
UID为1~499是伪用户,不能登录
系统用户默认是500~65535之间
4.GID
5.用户说明
6.家目录
7.登录之后的Shell
2.影子文件:/etc/shadow
1.用户名
2.加密密码
如何为*或!!代表没密码,不能登录
3.密码最后一次修改日期
4.两次密码的修改间隔
5.密码有效期
6.密码有效期到期的警告天数
7.密码过期后的宽限天数
留空或0:到期后马上失效
-1:密码永不失效
8.帐号失效时间,使用时间戳表示
9.保留字段
3.组信息文件/etc/group和组密码文件/etc/gshadow
2.用户管理相关文件
1.用户家目录
root:/root/,权限550
普通用户:/home/用户名/,权限为700
2.用户邮箱
/var/spool/mail/用户名/
3.用户模板
/etc/skel/
3.用户管理命令
1.useradd:用户添加命令
添加用户时有很多默认值,那这些默认值由什么控制?
/etc/default/useradd
/etc/login.defs
2.passwd:修改用户密码
3.usermod:修改用户信息
4.chage:修改密码状态
chage -d 0 登录名:强迫用户第一次登录的时候就需要修改密码
5.userdel:删除用户
-r:删除用户同时删除用户家目录,建议使用
6:id:查看用户ID和组ID的信息
7.su:切换用户
-:连带用户的环境一起切换,切换用户时,一定要带“-”选项
例:su - 用户名
-c:不切换用户,但用这个“用户”的身份来执行某个命令
例:su - root -c 'useradd user3'
7.系统添加和删除用户时系统所操作的文件
1./etc/passwd:用户信息文件
2./etc/shadow:2.影子文件
3./etc/group:组信息文件
4./etc/gshadow:组密码文件
5./var/spool/mail/用户名/:邮箱
6./etc/skel/:模板
7./home/用户名:家目录
4.用户组管理命令
1.groupadd:添加用户组
-g:指定组ID
2.groupmod:修改用户组
-g:修改组ID
-n:修改组名
不建议使用,因为还要很多东西要改,如家目录、邮箱。返而还不如直接删除再重建
3.groupdel:删除用户组
如果有用户的”初始组“是这个要删除的组,则不能删除
如果有用户的”附加组“是这个要删除的组,则不影响,可以删除
4.gpasswd:添加,删除附加组中的用户
-a:添加用户进组
-d:从组中删除用户
九.权限管理
1.ACL权限
1.ACL权限简介与开启
1.解决(所有者,所属组,其它人)身份不够用的问题
2.类似Window的权限,抛开(所有者,所属组,其它人)身份,直接给某个用户配权限
3.查看分区ACL权限是否开启13;现在的linux默认支持acl
1.df -h:查看系统有那些分区
2.dumpe2fs -h 分区:查看分区详细信息
Default mount options: user_xattr acl默认支持acl
如不支持可手动开启
1.临时开启:mount -o remount,acl /,重新挂载根分区,并挂载加入acl权限
2.永久生效
1.修改/etc/fstab,在defaults后加',acl',一般情况下这个”defaults“就已经包含acl
2.mount -o -remount /:重新挂载文件系统或重启,使配置生效
2.查看与设定ACL权限
1.查看acl权限:getfacl 文件名
2.setfacl 选项 文件名
-m:设acl
例:setfacl -m u:test(用户名):rx(权限) /project(文件或目录)
例:setfacl -m g:test(组名名):rx(权限) /project(文件或目录)
设置完成后,权限位后会多个“+”位,表示除了普通权限外,还有acl权限
3.最大有效权限与删除ACL权限
输入getfacl 文件名
显示出来的“mask”是用来指定最大有效权限的。如果赋予acl权限后,是需要和mask的权限“相与”才能得到用户的真正权限,但不影响“所有者“的权限
修改最大有效权限mask:setfacl -m m:rx(权限) /project(文件或目录)
删除ACL权限
1.setfacl -x u:text(用户名) project(文件或目录)
2.setfacl -x g:text(组名名) project(文件或目录)
3.setfacl -b project(文件或目录)
4.默认ACL权限和递归ACL权限
Linux部分知识梳理
什么是Linux
操作系统
发行版
什么是发行版
有那些常用的发行版
Ubuntu, centOS,redhat
linux 和Windows 区别
总结
Linux命令--熟练命令
初级
pwd
cd
ifconfig, ping
ls -- ll
who whoami
history
中级
vi --常用
touch
mkdir
rmdir
rm
mv
cp
find
grep
管道符 |
head
tail
tail -f
cat
more less
高级
chmod
ps -ef
kill -9 xxx
netstat -apn
tar -x -c
zip unzip
面试的时候 问你常用的命令
不要背出来, 结合业务场景去说,真实
搭建测试环境,收集日志 --- tar zip,unzip
jdk --- 配置环境变量:vi profile
进程起来 -- ps -ef / netstat | grep
项目环境部署--实践
1、确认服务器 -- 云服务器 硬件服务器 虚拟机
IP ,账号信息
xshell, secureCRT
搭建测试环境 确保程度 (进度)
2、确保你们项目-- 软件(介绍项目)
容器--tomcat
jdk--运行环境
数据库 --mysql 、 oracle sql-server
3、部署项目包
开发提测 --war
sql脚本 初始化
数据库配置文件--jdbc
日志--- 配置文档
海量运维与运营规划体系
一、管理体系
1.1 核心管理
配置管理
事件管理
问题管理
容量管理
需求管理
1.2 资源管理
预算规划
成本优化
资源申请流程
二、规划体系
2.1 基础设施规划
架构规划
IDC规划(互联网数据中心)
ISP规划(网络服务商)
服务器规划
2.2 性能优化
速度优化
CDN优化
告警优化
三、流程规范
3.1 标准化流程
项目立项规范
IDC变更流程
自动发布流程
环境一致性规范
3.2 故障管理
故障预案
运营故障分级与处罚
重大运营故障处理流程
PHP开发规范
四、技术平台
4.1 基础架构平台
CDN平台
静态应用平台
动态应用平台
数据库平台
存储平台
下载平台
4.2 运维支撑系统
GSLB管理系统(全局负载均衡)
BOSS系统(业务运营支撑)
运维工具系统
立体监控系统
质量监测系统
五、监控告警体系
5.1 监控维度
网络健康监控
IDC监控
LVS集群监控
数据库性能监控
模块级细粒度监控
5.2 告警机制
告警收敛模型
统一告警系统
响应分级监控
六、安全体系
6.1 安全扫描
漏洞扫描
域名劫持检测
挂马检测
CGI漏洞扫描
网页篡改监测
七、考核机制
运营质量考核
架构能力评估
预算执行考核
1. 覆盖基础设施到业务服务的全生命周期管理
2. 构建"规划-实施-监控-优化"的闭环体系
3. 包含12类技术平台和7大监控维度
4. 通过流程规范实现标准化运维
5. 整合安全防护与质量考核机制
服务器
nginx
虚拟主机
虚拟主机是指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰。在外界看来,虚拟主机就是一台独立的服务器主机,这意味着用户能够利用虚拟主机把多个不同域名的网站部署在同一台服务器上
http 1.0可以不带host 请求头. 对于http1.1 思考一下. http协议基于tcp 协议,已经建立tcp 连接了, 还需要http 头里声明host 吗?
答案是需要, 而这也是虚拟主机的由来所在,即 url 的host 和 header host 可以不同. 当请求通过url 建立连接发送到具体的webserver ,还可以通过 header host 作为虚拟主机再次进行路由.
Nginx根据请求头信息中的Host字段决定请求应该由哪一台服务器处理,如果Host字段的值没有相匹配的服务器或者请求中没有Host字段,那么Nginx会将请求路由至这个端口的默认服务器.
server { listen 80; server_name example.org www.example.org; }server { listen 80; server_name example.net www.example.net; }server { listen 80 default_server; server_name example.net www.example.net; }
默认服务器使用default_server 标记, 如果不存在default_server, 则选择配置的第一个 server
如果不允许不存在 Host为空的请求,可以直接丢弃
server { listen 80; server_name ''; return 444;}
返回nginx的非标准返回码444关闭连接。
基于 IP和域名的虚拟主机
server { listen 192.168.1.1:80; server_name example.org www.example.org; ...}server { listen 192.168.1.1:80; server_name example.net www.example.net; ...}server { listen 192.168.1.2:80; server_name example.com www.example.com; ...}
nginx首先使用server块的listen指令的配置去测试请求的ip地址以及端口
然后使用server_name去测试Host字段
说明:
同一个服务器可能有多块网卡, 即可能会有多个ip. (可能是暴露的公网ip,也可能是内网ip.内网ip 可能也有多个.)
多一个服务. 即ip:port 可能有不同的入口,即可能通过 domainName1 访问,可能由domainName2 访问, 如何根据不同的domain 作不同的选择呢?
例如公网入口只开放某个url
其他:
一个 ng 可配多个 server.
worker 共用
多个server 可监听同一个端口
多个 server可监听不同端口
location 中的配置
反向代理
error_page
error_page 500 502 503 504 /50x.html;
error_page 404 http://jspang.com;
定义根目录
location = /50x.html { root /usr/share/nginx/html; }
默认访问文件
index index.html index.htm;
访问控制
rewrite 内部重定向
使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向
rewrite和location功能有点像,都能实现跳转,主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理
rewrite 执行顺序
执行server块的rewrite指令
执行location匹配
执行选定的location中的rewrite指令
location 匹配
匹配顺序
首先nginx会查找最明确的location前缀,并非根据配置中所定义的顺序。在上述配置中,'/'是最通用的,能够匹配任何请求,会被作为最后的手段使用。
然后nginx会按顺序使用配置中的location的正则表达式匹配地址。当匹配成功时,nginx会停止查找并且使用该location。如果请求没有和任何正则表达式匹配成功,那么nginx会使用之前查找到的最明确的location前缀。
值得注意的是,所有类型的location配置只会和请求的URI部分进行匹配,不包括变量
详细匹配顺序
精确名称
以星号开头的最长通配符名称,例如“ *.example.org”
以星号结尾的最长通配符名称,例如“ mail.*”
首先匹配正则表达式(按照出现在配置文件中的顺序)
location正则
~ 表示之后是使用正则表达式来匹配
location ~ \.(gif|jpg|png)$
=号代表精确匹配,使用了=后是根据其后的模式进行精确匹配
访问控制
黑白名单控制
location / { deny 123.9.51.42; allow 45.76.202.231; }
location / { allow 45.76.202.231; deny all; }
只允许xxx
就是在同一个块下的两个权限指令,先出现的设置会覆盖后出现的设置(也就是谁先触发,谁起作用
反向代理
作用
为多个服务器提供负债均衡、缓存等功能
提供统一的对外入口,保护了真实的web服务器,保证了web服务器的资源安全
节约了有限的IP地址资源
分支主题
分支主题
分支主题
配置项
proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
http 配置
keepalive
keep-alive是http1.0与http1.1的特性之一,意在提供长效的HTTP会话,以避免客户端频繁建立tcp连接的消耗。
内存消耗
假设keepalive的时间为60s,服务器1分钟内平均在线用户为500,开启keep-Alive后,Apache等服务器的消耗为:
分支主题
不建议开启 keepalive
在以下的场景,不建议开启keep-alive:服务器提供的是一个接口服务,除了动态内容,几乎没有引用任何静态内容;而建议在服务器提供Web站点服务时(一个页面除了动态内容,还包含非常多的JS、图片、css文件等)开启keep-alive。
nginx 配置热替换原理
master/worker职责划分
master
读取并验证配置信息。
创建,绑定,关闭套接字。
负责监听接受请求
主进程(master 进程)首先通过 socket() 来创建一个 sock 文件描述符用来监听
fork生成子进程(workers 进程),子进程将继承父进程的 sockfd(socket 文件描述符),之后子进程 accept() 后将创建已连接描述符(connected descriptor)),然后通过已连接描述符来与客户端通信
惊群效应
由于所有子进程都继承了父进程的 sockfd,那么当连接进来时,所有子进程都将收到通知并“争着”与它建立连接,这就叫“惊群现象”。大量的进程被激活又挂起,只有一个进程可以accept() 到这个连接,这当然会消耗系统资源
如何避免精群效应
在mutex 上加一把锁, 只有先获取到锁,才可以accept.
只有一个worker 同时在accept
accept_mutex 默认打开(保守策略)
思考: 为什么不用master 来accept 并且分发任务
简化master. 避免master 负载过重, 提高可用性
在高并发场景下, 关闭这个锁性能更高. 实际ng 的 worker并不高, 静群效应有限. 在请求量大的场景下开启这个锁,会导致性能下降.因为串行了.
启动,终止,维护worker进程的个数。
worker
worker 负责接收 新的请求吗?
worker 采用epoll 多路复用的方式监听socket.
当有新请求到来时,会主动的 accept接收请求.(会抢锁), 新接收的请求 注册到epoll 中,继续监听读写事件
分支主题
高性能的Nginx采用多线程模型,并且提供了worker进程绑定固定CPU的功能,降低worker进程被调度的损耗,提高了服务器工作性能;
过程
主进程收到重新加载配置的信号
检查新配置文件的语法有效性并尝试应用其中提供的配置
配置不合法, 则回滚使用旧配置
主进程将启动新的工作进程并向旧工作进程发送消息,请求它们关闭
旧工作进程,接收命令以关闭,停止接受新连接并继续为当前请求提供服务,直到所有此类请求都得到服务。之后,旧工作进程退出
控制命令
立即停止服务
nginx -s stop
从容停止服务
nginx -s quit
处理完任务再关闭
systemctl 停止
systemctl stop nginx.service
重新载入配置文件
nginx -s reload
https 配置
要配置HTTPS服务器,ssl必须在 服务器 块中的 监听套接字 上启用该参数 ,并且应指定 服务器证书 和 私钥 文件的位置
子主题 1
配置
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ...}
配置一个处理HTTP和HTTPS请求的单个服务器
server { listen 80; listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ...}
每个 https server最好配置在不同的ip 上. 如果使用相同的证书可以考虑部署在同一个ip 上
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ...}server { listen 443 ssl; server_name www.example.org; ssl_certificate www.example.org.crt; ...}
使用此配置,浏览器接收默认服务器的证书,即www.example.com不管所请求的服务器名称如何。这是由SSL协议行为引起的。在浏览器发送HTTP请求之前建立SSL连接,并且nginx不知道请求的服务器的名称。因此,它只能提供默认服务器的证书
建立连接的时候需要使用到证书, 但是不知道此时的server_name, 所以每个ip最好使用相同的证书
ssl_certificate common.crt;ssl_certificate_key common.key;server { listen 443 ssl; server_name www.example.com; ...}server { listen 443 ssl; server_name www.example.org; ...}
使用共同的公钥
负载均衡
round-robin (轮询)— Nginx以轮询的方式对收到的请求进行分发
默认
least-connected(最少连接) — Nginx会把下一个连接分配给具有最小活动连接的服务器
upstream myapp1 {//配置服务器群组 least_conn;//最小连接机制命令 server srv1.example.com; server srv2.example.com; server srv3.example.com;}
可以使用权重
hash
ip-hash (IP绑定)— 使用hash函数去决定下一个连接应该分配给哪一台服务器(基于客户端的IP地址)
upstream myapp1 { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com;}
可以使用权重
一致性hash
consistent_hash $remote_addr:可以根据客户端ip映射
consistent_hash $request_uri: 根据客户端请求的uri映射
consistent_hash $args:根据客户端携带的参数进行映射
减少上下线 请求 的漂移
如果有本地缓存, 且本地缓存比较大.可以考虑使用这个优化
fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似
upstream favresin{ server 10.0.0.10:8080; server 10.0.0.11:8080; fair;}
当为服务器的配置指定权重参数时,权重将会作为负载均衡决策的一部分进行计算
upstream myapp1 { server srv1.example.com weight=3;// 为此服务器增加权重 server srv2.example.com; server srv3.example.com;}
健康检查
主动检查模式
后端服务器需要为这种健康检查专门提供一个低消耗的接口
官方开源版未提供,需要使用第三方模块
开源版本: nginx_upstream_check_module
被动检查
max_fails
最大失败次数. 会将该server 视为不可用 默认值 1 次
fail_timeout
默认故障持续时间(默认值 10s)
如果某个后端服务器对请求的响应状态在短时间内累计一定失败次数时,Nginx 将会标记该服务器异常。就不会转发流量给该服务器
会造成用户请求部分失败
分支主题
命令
vim 编辑器命令总结
光标移动
插入
删除
复制粘贴
搜索
替换
撤销
块操作
多文件编辑
多窗口操作
其他操作
保存与退出
光标移动(补充)
vi 编辑器命令速查表
进入 vi 的命令
| 命令 | 说明 |
| --------------------- | ------------------------------------------------- |
| vi filename | 打开或新建文件,并将光标置于第一行首 |
| vi + filename | 打开文件,并将光标置于最后一行 |
| vi +n filename | 打开文件,并将光标置于第 n 行行首 |
| vi +/pattern filename | 打开文件,并将光标置于第一个与 pattern 匹配的串处 |
| vi -r filename | 恢复正在使用的文件,当系统发生崩溃时使用 |
| vi filename... | 打开多个文件,依次进行编辑 |
移动光标类命令
删除/复制命令
搜索及替换命令
选项设置
屏幕翻滚类命令
插入文本类命令
寄存器操作
最后行方式命令
脚本 加强
事务
录制:订票系统: 登录
录制过程中,插入事务
:你们自己通过分析代码,在相应的代码段之间的,
手工插入事务开始和结束函数;
编辑过程中,插入事务
:会在lr_start_transaction() 和
lr_end_transaction()之间,多一个lr_think_time();
思考时间是模拟人的思考、等待时间,不应该包含在事务中;
直接把lr_think_time()放在事务开始之外;
查看事务时间
vugen工具,repaly log 中查看
controller工具,查看 ,事务响应时间
事务: 完成某件事情,一系列操作的集合。(action);
特点: 通过事务函数,分析某件事情花费多少时间
nshen(); init() 和 end()
/* */; //
集合点
常常和事务函数在一起使用
通过集合点,实现 Vuswr在同一时间进行同时操作,实现 真正的并发
集合点 放在 事务函数之外;思考 时间也要放在集合点函数之外
集合点 和事务函数 ,只能放在:action()文件中
参数化
数据分离
用变量代替常量
选中常量数据,右键属性参数化
先创建参数化列表,再代替常量
回放脚本 ,查看 参数化取值;前提需要把F4,
log日志级别,选 为:扩展日志
疑问:1:为什么没有注册的用户,
运行登录的脚本 ,test results中结果 为pass?
2:在web_url()中,注释掉请求图片的脚本 ,
运行脚本 ,没有报错?
===== 因为LR的工作原理,不是以校验页面上的对象 ,页面上的元素存不存在;是根据 协议,获取:c 和s之间的的所有请求,以及响应的内容; 只要你的服务器没有报404(页面找不到),lr都会认为成功的(回放脚本 是成功的);【http协议,状态 :200表示 成功;500表示 :内部 错误;】
输出函数
lr_log_message("输出的用户名为%s",lr_eval_string("{参数化名称}"));
lr_eval_string();
检查点
文本检查
有叫:校验; 也有叫:断言
web—find()
作用:寻找 html页面上的对象,内容;
插入的位置:是在生成的页面(提交数据,生成的页面)之后;
切换到:tree视图,选择:subnmit函数,右键,选择:insert after,
web checks; 选择text checks;
查找你要校验的内容[ABC,代表,可以做参数化]
但是在:模拟用户的真实行为过程 中,需要校验:用户是否在正确的位置,做正确 的事情,所以需要添加:检查点。
web_reg_find()
作用:寻找 html代码中的对象,内容;
插入的位置:是在生成的页面(提交数据,生成的页面)之前;
关联
nmap
扫描模式
**定时策略**
`-T0`(Paranoid): 300秒等待
`-T1`(Sneaky): 15秒等待
`-T3`(Normal): 并行扫描
`-T5`(Aggressive): 0.3秒/探测
扫描类型
**主机发现**
`-sn`(Ping扫描)
`-PO`(IP协议Ping)
`-PS`(TCP SYN Ping)
**端口扫描**
`-sS`(TCP SYN扫描)
`-sT`(TCP连接扫描)
`-sU`(UDP扫描)
服务探测
**版本检测**
`-sV`(服务版本识别)
`-version-intensity`(探测强度:0-9)
**操作系统识别**
`-O`(操作系统指纹)
`--osscan-guess`(推测操作系统)
输出与优化
**输出格式**
`-oN`(标准格式)
`-oX`(XML格式)
`-oG`(Grepable格式)
**防火墙绕过**
`--scan-delay`(延迟探测)
`--data-length`(附加随机数据)
0 条评论
下一页