数据通信是数据在网络上传输的一个过程,需要硬件和软件、协议。
网关:提供协议转换、路由选择、数据交换等功能的网络设备
路由器:为报文选择传递路径的网络设备
数据载荷:要传递的信息
报文:网络中交换与传输的数据单元
头部:在数据载荷前面添加是信息段
尾部:在数据载荷后面添加的信息段,有些报文需要长度过长,填充满足长度要求,不一定要有、根据协议要求
封装:对数据载荷添加头部和尾部、获取数据载荷的过程
解封装:去掉报文的头部和尾部、获取数据载荷的过程
2.1 路由器
实现不同网段的通信。
2.2防火墙
局域网:在某一地理区域内由计算机、服务器以及各种网络设备组成的网络:局域网的覆盖范围一般是方圆几千米以内。典型的局域网有;公司办公网络、网吧网络、家庭网络等,
城域网:在一个城市范围内所建立 的计算机通信网络。典型的城域网有:教育城域网、市级或省级电子政务专网宽带城域网等、
广域网:通常覆盖很大的地理范围。从几十公里到几千公里。它能连接多个城市甚至国家、并能提供远距离通信、形成国际性的大型网络。典型的广域网有:Internet、各大型企事业单位的专网。
网络拓扑是指用传输介质(双绞线、光纤)互联各种设备如终端、路由器、交换机等所呈现的结构化布局。
星形网络:所有的节点都通过一个中心点连接在一起。
优点:容易添加节点、通信数据必须经过中心节点中转、易于实现网络监控、
缺点:中心节点的故障会影响整个网络的通信。
例子:连接交换机的pc
总线型网络:
所有的节点通过一条总线连接在一起。
优点:安装简便、节省线缆、某一节点故障一般不会影响到整个网络的通信、
缺点:总线故障会影响到整个网络的通信。某一节点发出的信息可以被其它节点受到,同时只能一台pc发送数据,性能又差又不安全。已被淘汰。
环形网络:
所有节点连成一个封闭的环形,
优点:节省线缆
缺点:添加新节点的时候比较麻烦、必须先中断原来的环。才能插入新节点已形成新环。
树形网络:
树形结构实际上是一种层次化的星形结构
优点:能够快速将多个星形网络连接在一起、易于扩充网络规模
缺点:层次越高的节点故障导致的网络问题越严重
(高层次可以是二层交换机、三层交换机)
全网状网络
所有的节点都通过线缆两两相连
优点:具有高可靠性和高通信效率
缺点:每个节点都需要大量的物力端口、同时需要大量的互连线缆。成本高、不易扩展
app开发者只需要专注自己的软件设计、交换机只需要关注怎么转发数据、使得各个方面各司其职、只负责自己的工作】效率又高又专业。利于技术的发展和故障的排查。
应用层:
http:
telnet
FTP
SMTP
TFTP简单传输协议
传输层:
TCP
UDP
网络层
IP
ICMP:判断网络故障
IGMP:组播协议
数据链路层
Ethernet:一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。基于MAC转发的协议
PPP:点对点模式的协议,多用与广域网
PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议)
常见的应用有家庭宽带拨号上网
源端口、目的端口
序列号+确认号:保证对方受到
window:流量控制
UDP
源端口
目的端口
首部
Xshell远程连接
ssh root@ip
linux命令都是些单词缩写
删除文件remove
rm 文件名
(查看list)
ls
pwd 查看当前你在哪个目录print work dir
mkdir 参数 -p 递归创建父目录
mkdir 文件名 创建文件名称
一个点表示当前目录,两个点表示上级目录 /表示根目录
whoami 查看本用户
# pwd拿到的是绝对路径
touch 文件名 创建文件
cd - 回到上一次工作目录
cd ../../../ 回到上三级目录
cd ../../../opt 回到上三级目录然后进入opt目录
# 查看权限
linux支持多个用户同时登陆,
# 列出文件详细信息
ls -l 文件/目录
# 查看文件内容
cat 文件名
普通文件 文件属主 所在组 其它
-rw-rw-r-- 1 user1 user1 0 Sep 15 11:39
#root下创建用户
useradd user1
passwd user1
# rm删除
rm -rf /* 删除机器所有资料的命令
-rf 两个参数。表示递归,强制删除所有
/* 表示根目录下所有内容
ssh user1@ip
编辑命令
vi 文件名
退出 esc :qw!
1、
# 下载wget
yum install wget -y
# 做备份 yum工具安装
mkdir 文件名 # 创建文件
mv ./* ./repo-bak mv 原文件 要移动到的目的文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install nginx -y # 安装中间件
systemctl start nginx 启动nginx程序
systemctl stop nginx 停止程序
ps -ef 列出所有进行信息
# 管道:将第一个命令的结果交给第二个命令取二次加工
# grep 命令用于搜索、过滤某些信息
ps -ef | grep "nginx" 找出所有进程信息,然后列出有“nginx”的进程
nginx 80端口
2、
# 怎么在机器上运行淘宝网
curl https://www.taobao.com 显示淘宝网站代码
curl -I https://www.taobao.com 显示网站web服务器信息
# 对于限制的网站隐私信息需要保护。如版本号,
# 查看nginx的安装文件、路径信息
rpm -ql nginx
# 只找出index相关信息
rpm -ql nginx | grep "index"
# 安装vim工具、是一个提供颜色区分、以及更多强大功能的编辑器
yum install vim -y
dG 在编辑页面打上dG 清空所有内容
dd 删除一行
将淘宝首页代码复制到一个index文件中,在自己的机器上运行,页面与淘宝一模一样,可以更改其中某些连接
网站伪造,用户访问该网站以为是淘宝网,在上面随意点击或者输入账号密码信息可能被黑客获取造成财产损失。所以一定要确认域名等信息是否正确。在访问链接的时候一定要看见url左边是否有一把锁证明这个网站是安全的
# -------------动态网站部署--------
LAMP Linux +apache(nginx)+mysql+后端程序(PHP、Pear Python)公认的最好使用的最早使用的黄金架构
apache : 提供静态资源展示、转发请求给后端程序
国内众多网站、百度、雅虎、星浪、都在大量使用php语言进行开发,知名的论坛软件Discuz也是由PHP开发且占据了80%的论坛软件市场
# 部署LAMP架构
# 删除程序
yum remove nginx
# 清空防火墙规则
iptables -F
# 停止防火墙stop 关闭防护墙disable
systemctl stop firewalld
systemctl disable firewalld
getenforce #查看状态
安装apache
yum install httpd #apache 在Linux中为httpd
systemctl start httpd
netstat -tunlp|grep httpd 检测httpd端口信息
# 部署mysql
yum install mariadb-server mariadb -y mariadb为mysql
#启动
#检查端口
netstat -tunlp | grep "mysql" 查看网络端口及过滤mysql端口
#使用、访问
mysql -uroot -p uroot 默认是没有密码的
# mysql操作
show databases # show tables/views
use mysql 进入mysql 库中
exit 退出
部署php结合apache
# php安装依赖环境
yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libtool-ltdl-devel pcre-devel apr apr-devel zlib-devel gcc make
# 安装php。以及php连接mysql的驱动
yum install php php-fpm php-mysql -y
# 修改apache配置文件使其支持php脚本读取即可
vim /etc/httpd/conf/httpd.conf
# 修改配置文件
显示行号 :set nu
在120行左右添加如下配置
DocumentRoot "/var/www/html" # 代码放在/var/www/html目录下
TypesConfig /etc/mime.types
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
然后编辑一个php脚本。看apache能否正确加载读取
如/var/www/html/index.php
sssss
最后重启apache服务
systemctl restart httpd
3、
-------搭建论坛----------
# 下载论坛disuz
wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
# 解压缩
yum install unzip -y
unzip Discuz_X3.2_SC_UTF8.zip
# 将upload中所有内容拷贝到apache中
cp -r upload/* /var/www/html/ -r表示递归拷贝
# 给其最高权限。便于修改
chmod -R 777 /var/www/html/* 递归给予权限
# 安装步骤安装即可,
4、-------------nginx实战----------
nginx是俄罗斯2004年10.4日发布的一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领市场,是被认可的系统资源消耗低且并发能力强的web服务程序
web服务器:接受http请求并返回数据
web框架(django,flask):开发应用程序,处理接受到的数据
-----源代码编译安装---
1、下载源代码
2、安装编译环境
3、开始编译安装
需要安装gcc、pcre、zlib、openSSL
yum install gcc-C++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl-devel -y
#1、下载源码
进入opt
cd /opt
mkdir ngx
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
# 2、解压缩源码
tar -zxvf nginx-1.12.0.tar.gz
3、配置、编译安装 开启nginx状态监测功能./configure
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
make && make install 第一个执行成功并且执行第二个
4、启动nginx,进入sbin目录,找到nginx启动命令
cd sbin
./nginx #启动
./nginx -s stop # 关闭
./nginx -s reload #重新加载
5、修改配置文件、验证语法是否正确
/opt/nginx1-12/sbin/nginx -t
6、重新读取配置文件
/opt/nginx1-12/sbin/nginx -s reload
7、多个网站的nginx配置
可以创建多个server{}
server{
listen 90;
server_name localhost;
location / {
root /opt/zhandian;
index index.html;
}
}
http{
server{
}
}
--------------访问日志---------------
对日志记录分析。可以更清晰的掌握服务器的动态信息,比如安全性
对用户行为进行检测、分析
能够记录出用户访问的时间次数、频率,如可在用户访问高峰期推出活动,采取一些方法措施防止系统崩溃
http{
include mime.types;
default_type application/actet-stream;
log_format main '$remote_addr-$remote_user[$time_local]"$request"
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log mian;
vim /opt/nginx1-12/conf/nginx.conf
# 重启服务
/opt/nginx1-12/conf/nginx -s reload
# 持续检测日志内容变化
tail -f /opt/nginx1-12/logs.access.log
sed awk grep命令进行日志分析
----------nginx代理服务
在nginx.conf中代理转发
server{
location / {
}
proxy_pass https://www.yun.cn/;
error_page 500 502 503 504 /50x.html;'
location =/50x.html{
root html;
}}
===========自动化运维==========
软件:
fabric
puppet
salstack
chef
Ansible
其中ansible、saltstack是基于python开发的
devops开发运维
自动化运维
提高工作效率,减少重复性的劳动力操作
大大的减少了认为出错的可能性
ansible支持数据化管理。数据化追源、找到问题的来源点
ansible是一个同时管理多个远程主机的软件、必须是任意可以通过ssh登录的机器,
远程虚拟机
物理机
本机
功能:
批量文件分发、数据复制、修改、删除、自动化安装软件服务、服务启停
脚本化、自动批量服务部署
特点:
ansible的编排引擎可以出色的完成各种任务配置管理,在流程控制,资源部署等方便强大,且无须安装客户端软件,管理简洁,使用yaml配置文件语法,功能强大,便于维护。
ansible主要由ssh处理模块,paramiko、PyYAML模块
-安装部署简单
-管理主机便捷。支持多台主机并行管理
-无须安装被管理节点的客户端,无须占用客户端的其它端口,仅仅使用ssh服务即可
-不仅支持Python还支持其他语言的二次开发
-不用root用户也可以执行,降低系统权限
准备好两到三个虚拟机,在同一个局域网内,设置好静态ip
设置主机名:
hostnamectl set-hostname xxx
s1 被管理机
s2 被管理机
m0 管理机器,安装了ansible
----准备管理机-------
1、安装yum,epel源,
yum install epel-release -y
yum install ansible libselinux-python -y
查看是否安装成功
2、查看ansible目录下的所有文件
rpm -ql ansible | grep -E '^/etc|^/usr/bin' 过滤以etc或usr/bin开头的配置文件和可执行命令
3、检查ansible版本
ansible --version
4、在两个被管理机上装模块
yum install epel-release libselinux-python -y
--------ansible管理方式-----------
1、传统的ssh输入密码验证
2、秘钥管理
配置好ansible的配置文件,添加被管理机器的ip地址或主机名
--备份现有的配置文件
cp /etc/ansible/hosts{,.ori} (简写/etc/ansible/hosts /etc/ansible/hosts.ori)
--在hosts文件中添加被管理主机的ip
tail -3 /etc/ansible/hosts # 查看文件
[chaoge] # 区段的名字
ip1
ip2
直接利用本地的ssh服务以及一些远程的ssh操作。一般情况下客户端的ssh服务默认是开启的,无须额外管理
1、管理机
-m 指定功能模块,默认是command模块
-a 告诉模块需要执行的参数
-k 询问密码验证
-u 指定运行用户
在管理机上告诉其他被管理机要执行什么命令以及以什么用户取执行
ansible 主机列表 -m comand -a 'hostname' -k -u root
ansible chaoge -m comand -a 'hostname' -k -u root
出现红色警告,需要在主机的known_hosts文件中添加被管理机列表,这时我们只需手动进行一次ssh连接即可
ssh root@ip
vim ~/.ssh/known_hosts文件中就会出现该ip的指纹信息,
再次执行ansible命令即可
-a "ifconfig ens33" 输出网卡信息
df -h 输出磁盘信息
uname -r 输出内核版本信息
uptime 负载信息
每次执行需要输入密码
-------配置免密登录
ansible自带的密码认知参数,在/etc/ansible/hosts文件中
ansible_host 主机地址
ansible_port
ansible_user
ansible_ssh_pass
[chaoge] # 区段的名字
ip1 ansible_user=root ansible_ssh_pass=123456
ip2 ansible_user=root ansible_ssh_pass=123456
这时输入命令即可
ansible chaoge -m command -a "ifconfig ens33"
但是并不安全
-------------ssh秘钥方式批量管理主机
1、-f将秘钥信息保存在id_rsa文件中,-P密码为空,输出信息保存在/dev/null黑洞文件中不显示,并且把标准错误信息输出到&1中。命令执行成功与否输出不显示
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
2、检查公私钥文件
cd ~/.ssh/
ls
3、编辑公钥分发脚本文件
mkdir /mysh 在/.ssh目录下创建目录
touch ssh_key_send.sh 穿件文件
脚本内容
rm -rf ~/.ssh/id_rsa* #清空
ssh-keygen -f ~/.ssh/id_rsa -P "">/dev/null 2?>&1 #重新生成一个密码文件,指定私钥文件,密码为空
SSH_Pass=111111
Key_Path=~/.ssh/id_rsa.pub
for ip in 129 134你要批量分发的机器ip地址
do
sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" 192.168.178.$ip
done
# 非交互式分发公钥命令需要使用sshpass指定SSH密码,通过-o StrictHostKeyChecking=no跳过确认信息
4、在mysh目录下执行命令
sh ssh_key_send.sh
5、连接机器,exit登出
ssh -o 'StrictHostKeyChecking=no' '192.168.178.138'
6、可以使用ansible了
ansible chaoge -m comand -a 'hostname' -k -u root
如果生产环境高可普通用户登录然后再提权
--------------ansible模式与命令-----------
ansible实现批量化主机管理的模式,主要有两种
1、利用ansible纯命令行实现的批量化管理,ad-hoc模式
2、利用ansible的playbook剧本来实现批量化管理。playbook剧本模式
处理一些临时的、简单的任务可以用1模式,如临时批量查看被管理机器的内存情况、cpu负载情况、网络情况,临时的分发配置文件等
针对比较具体、比较大的任务。写好实现剧本,应用场景
=====ansible的ad-hoc命令行解析
ssh root@ip #连接管理主机
ansible chaoge -m command -a "hostname"
chaoge 在/etc/ansible/hosts文件中定义的主机组,还可以写成主机ip地址。通配符*
ansible-doc -l 列出所有模块信息
ansible-doc -l | grep ^command #列出所有command开头的模块
ansible-doc -s xxx #查看某个模块用法参数
=======command模块参数
作用:在远程节点上执行一个命令
ahdir 在执行命令之前,先通过cd进入该参数指定的目录
creates 在创建一个文件之前,判断该文件是否存在,存在则跳过前面的东西,否则执行前面的动作
free_form 该参数可以输入任何的系统命令,实现远程执行和管理
removes定义一个文件是否存在,存在则执行前面的动作,否则跳过
command是ansible默认的模块,可省略,但是使用时不能出现shell变量$name,也不能出现特殊符号> < | ; &,如果要使用这些。请使用shell模块
chdir
ansible chaoge -m command -a "pwd" #打印当前目录
ansible chaoge -m command -a "pwd chdir=/temp/" 先切换到/tmp目录然后打印当前目录
creates
ansible ip -m command -a "pwd creates=/opt"
removes
ansible chaoge -a "ls /opt removes=/opt" /opt存在则执行ls /opt
warn
ansible chaoge -m command -a "chmod 000 /etc/hosts warn=False" 忽略告警信息
============shell模块
作用在运城机器上执行命令
chdir
creates
free_form
vim heihei.txt & #在后台运行,在被管理机上运行
ps -ef | grep vim #查看vim进程
ansible chaoge -m shell -a "ps -ef | grep vim"
ansible chaoge -m shell -a "ps -ef | grep vim| grep -v grep" 过滤掉grep进程
ansible chaoge -m shell -a "echo 你真棒 > /tmp/heihiei.txt" 将文本写入文件 可在被管理端查看
shell远程执行脚本
执行的脚本必须在客户端存在,否则报错,还有一个专门执行脚本的script模块
1、创建文件夹
2、创建sh文件,写入内容
3、赋予脚本可执行权限
4、执行脚本
5、忽略warning信息
批量化操作
ansible chaoge -m shell -a "mkdir -p /server/myscripts/;echo 'hostname'> .server/myscripts/hostname.sh;chmod +x /server/myscripts/hostname.sh;bash /server/myscripts/hostname.sh warn=False"
=======script模块
功能:把管理机上的脚步远程传输到被管理节点上执行,比shell模块功能更强大
写入文件
echo -e "pwd\nhostname"> /myscripts/local_hostname.sh #-e表示启用转义,\n换行,将两句话写入脚本文件
授权
chmod +x /myscripts/local_hostname.sh
script批量执行脚本,脚本在管理端,被管理机没有
ansible chaoge -m script -a "/myscripts//local_hostname.sh"
==========监控============
功能:实时监控,故障定位、告警
当内存超过70%
基础运维:涉及硬件,服务器上架下架,如设备管理
应用运维:维护系统,服务器的搭建部署,写文档
运维开发:开发监控系统
====监控生命周期
1、服务器上架到机柜
2、基础设施监控
服务器温度、风扇转速、ipmitool命令,只能用在物理机
存储的监控(df、fdisk、iotop)
cpu(lscpu uptime,top、htop、glances)
内存情况(free)
网络(iftop)
3、应用监控
mysql redies
nginx
php-fpm
Python
理想的监控系统有如下特点:
-能够自定义监控的内容,通过脚本采集所需的数据
-将数据存入数据库,日后对数据进行分析计算
-监控系统可以简易、快速部署到服务器
-数据可视化直观清晰
异常告警通知
-可以定义复杂的告警逻辑,做到监控项之间的关联警告,如程序之间的依赖检测,而不是单单只检测一个指标。
-告警可以确认响应,让运维内人员知道已经有人在处理告警问题了
-报警方式可以自定义,如短信、邮件、微信、deng
-告警内容可以自定义,写入一些简单的分析,如运维人员直观了解数据。
-报警后,可以预处理一些任务,如自我修复,重启,采集数据等
协同工作:
-监控系统有强大的API,提供给研发调用,其他系统调用
-监控数据是开放性,数据结构流,便于解析
-监控可视化可以简易的插件使用,而非复杂的js文件
====为何是zabbix而不是其他监控
zabbix及以上可以满足理想化的监控系统需求
。支持自定义监控脚本,提供需要输出的值即可
。zabbix存储的数据库表数据稍有复杂但是逻辑清晰
。zabbix存在模版的概念,可以方便的将一组监控项进行部署
。zabbix的每一个item监控项都可以看到历史记录且web界面友好
。zabbix有强大的Trigger定义规则,可以定义复杂的报警逻辑
。zabbix提供了ack报警确认机制
。zabbix支持邮件、短信、微信等告警
。zabbix在触发告警后,可以远程执行系统命令
。zabbix有原生的PHP绘图模块
1、zabbix是由Alexei Vladishev开发的一种网络监视、管理系统,基于server-client架构,可用于监视各种网络服务、服务器、网络机器等状态
2、使用各种database-sendmysql、postgresql,sqlite、oracle或IBM DB2存储资料,server端基于c语言,web管理端frontend则是基于php开发的
3、zabbix可以使用多种方式监视,可以只使用simple check不需要安装client端,也可以基于SMTP或HTTP等各种协议定制监视。在客户端中安装zabbix agent后可监视CPU load,网络使用状况、硬盘容量等各种状态,或者经由SNMP、TCP、ICMP,利用IPMI、SSH、telnet对目标进行监视
4、zabbix自带的item监视项足够满足小公司的监控需求,对大公司也可以设定自定义的item,自动生成报文表,也有API可以与其他系统集成
=========zabbix专有词汇
zabbix server 收集数据,写入数据
zabbix agent 部署在被监控的机器上,是一个进程,和服务端进行交互,以及负责执行命令
host 服务器的概念,指zabbix监控的实体,服务器、交换机等
hosts 主机组
applications
events
media 发送通知的通道
Remote command 远程命令
template 模版
item 对于某一个指标的监控,称之为items。如某台服务器的内存使用状况,就是一个item监控项目
Trigger 触发器,定义报警的逻辑,有正常、异常、未知三个状态
action 当Trigger符合设定值后,zabbix指定的动作如发邮件给运维人员,服务器出现问题了
=====zabbix程序组件
。zabbix_server 服务端守护进程
.zabbix_agentd agent守护进程
zabbix_proxy
zabbix_database 存储系统,mysql,pgsql
zabbix_web web GUI图形化界面
zabbix_get 命令行工具,测试向agent发起数据采集请求
zabbix_sender 命令行工具,城市向server发送数据
zabbix_java_gateway ,java网关
============部署zabbix 5.0
1、准备机器、环境初始化
ifcinfig enth0 | awk 'NR==2{print $2}' # 打印第二行信息,使用awk命令对第2行进行处理,并输出第2个字段,即eth0的IP地址。
awk是一种文本处理工具,常用于对文本文件进行处理和分析。awk命令的一般格式为:
awk 'pattern {action}' file
其中,pattern是用于匹配文本的模式,可以是正则表达式或字符串;action是针对匹配文本执行的操作,可以是输出、计算、替换等操作;file是要处理的文本文件名。
- -F:指定分隔符
- -v:定义变量
- NR:表示当前处理的记录数
- NF:表示当前记录的字段数
- $0:表示当前记录的所有字段
- $1, $2, ...:表示当前记录的第1个、第2个字段等
sed -i 's/SELINUX=enforcing/SELINUX=disable/' '/etc/selinux/config
systemctl disable --now firewalld
iptables -L #查看防火墙过滤规则
---------
getenforce命令用于显示SELinux的执行状态(Enforcing、Permissive或Disabled)。SELinux是一种安全模块,用于限制进程的访问权限,提高系统的安全性。使用getenforce命令可以获取当前系统的SELinux执行状态,具体说明如下:
- Enforcing:表示SELinux处于强制执行状态,所有进程都必须遵循SELinux策略。
- Permissive:表示SELinux处于宽容执行状态,所有进程可以自由执行,但是会记录违反SELinux策略的情况。
- Disabled:表示SELinux已经禁用,系统不使用SELinux策略。 在CentOS等基于RedHat的Linux系统中,SELinux默认处于Enforcing状态。可以使用setenforce命令来修改SELinux的执行状态,具体命令为:
setenforce Enforcing|Permissive|Disabled
需要注意的是,修改SELinux的执行状态可能会影响系统的安全性和稳定性,因此在进行修改之前应该谨慎考虑。
2、zabbix-server内存尽量更大点4g为好
free -m
free -m是一个Linux系统命令,用于显示系统内存使用情况。具体来说,它会输出以下内容:
- total:表示系统总共的内存大小。
- used:表示已经被使用的内存大小。
- free:表示空闲的内存大小。
- shared:表示多个进程共享的内存大小。
- buffers:表示用于缓存文件系统数据的内存大小。
- cached:表示用于缓存文件系统元数据的内存大小。 这些大小都是以MB为单位显示的。使用free -m命令可以方便地查看系统内存的使用情况,特别是在调试和排除问题时非常有用
3、下载zabbix源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
可以在yum文件中看到下载的zabbix源文件
ls /etc/yum.repo.d/
4、国外源速度慢,更换为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repo.d/zabbix.repo
5、清空缓存。下载zabbix服务端
yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
-y表示yes确认安装,不写则会提示是否确认安装,默认不进行安装
6、安装工具,可以在机器上使用多个版本的软件,且不会影响到整个系统的依赖环境。
yum install centos-release-scl -y
7、修改zabbix-front前段源,
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rehel/7/$basearch/frontend
enabled=1 #开启这里的参数
gpgcheck=1
gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
8、安装zabbix前端环境,这时候不会安装到全局环境上而是安装到/opt/rh目录下
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
9、安装zabbix所需数据库,mariadb
yum install mariadb-server -y
10、配置数据库,开启启动
systemctl enable --now mariadb
11、初始化数据库、设置密码
systemctl status mariadb
netstat -tunlp
netstat -tunlp是一个Linux命令,用于显示当前系统的网络连接状态和相关的进程信息。
mysql_secure_setpermission #初始化
密码默认为空
是否设置密码,选择y,设置密码
是否移除匿名用户 y
是否允许远程登录 y
是否移除测试数据库并执行,y
是否刷新特权表 y
#登录
mysql -uroot -p #密码忘记只能修改配置文件跳过密码验证
12、添加数据库用户以及zabbix所需的数据库信息
mysql -uroot -p
show database();
create database zabbix character set utf8 cllate utf8_bin #执行该命令后,将会在MySQL中创建一个名为zabbix的数据库,并将其字符集设置为utf8,排序规则设置为utf8_bin。这样,在zabbix数据库中存储的数据 将会以UTF-8编码方式进行存储和排序。
create user zabbix@localhost identified by '123456' #为zabbix数据库创建一个本地登录的用户,密码为123456
grant all privileges on zabbix.* to zabbix@localhost #将数据库zabbix中所有操作权限赋予用户
flush privileges #刷新授权表
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix # -u用户名,-p数据库名,然后输入密码
13、修改数据库配置文件。修改数据库密码
vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
#查看是否修改成功
grep '^DBPa' /etc/zabbix/zabbix_server.conf
14、修改php配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
将时区修改为Asia/Shanghai
15、启动zabbix相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm #设置开机自启
在80端口可以访问apache服务,ip/zabbix/setup.php页面安装zabbix
16、安装完成zabbix,登录默认账号密码Admin zabbix
===部署zabbix客户端
1、agent2新版本go语言开发,部署方便,默认10050端口,也就是zabbix客户端端口
2、注意时间正确
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
3、时区的统一配置
mv /etc/localtime{,.bak}
In -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这是一个Linux命令,用于将系统时区设置为东八区(即北京时间)。具体参数含义如下:
- In:创建符号链接(软链接)。
- -s:指定创建的符号链接为软链接。
- /usr/share/zoneinfo/Asia/Shanghai:源文件路径,指向亚洲/上海时区的文件。
- /etc/localtime:目标文件路径,指向本地时间文件
date #查看时区
4、需要部署zabbix的下载源,然后才能安装客户端
下载zabbix源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
国外源速度慢,更换为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repo.d/zabbix.repo
yum install zabbix-agent2 -y
6、查看配置文件,可以
/etc/zabbix/zabbix_agent2.conf
# 启动命令
ls -l /usr/sbin/zabbix_agent2
systemctl enable --now zabbix-agent2
# 查看端口
netstat -tulp | grep zabbix
systemctl 如何管理客户端,开机自启?
/lib/sysytemd/system/目录下有zabbix-agent2.service
#该文件是yum工具自动生成的,查看里面内容
cat /lib/sysytemd/system/zabbix-agent2.service
先做了个单元文件的声明,描述文件版本
先读取文件名
然后启动文件
ps -Ev '^#|^$' /etc/zabbix/zabbix+agent2.conf #过滤掉# $开头的字符串
ps -ef | grep zabbix
cat /var/run/zabbix/zabbix_agent2.pid #查看进程号
修改配置文件。服务器ip地址,服务器主机名
vim /etc/zabbix/zabbix+agent2.conf
Server=ip
ServerActive=ip
Hostname=当前主机名
重启zabbix
systemctl restart zabbix_agent2
=========验证zabbix_agent2的联通性
在服务端通过命令主动获取数据
yum install zabbix-get -y
zabbix-get -s 'ip' -p 10050 -k 'agent.ping' #平主机
zabbix-get -s 'ip' -p 10050 -k 'system.hostname' #获取主机名
alias 是一个用于创建自定义命令别名的命令。使用 alias 命令可以将一个命令或一串命令字符串赋予一个自定义的名称
\cp
是 Linux 中的一个命令,用于复制文件或目录。它是cp
命令的一个简写形式,使用\cp
命令时可以避免使用 cp 命令时可能出现的别名或函数等问题。\cp
命令的基本语法如下:
plaintextCopy code
\cp [选项] 源文件 目标文件
其中,[选项] 表示可选参数,可以根据需要添加。常用的选项包括:
-r
:递归复制目录及其内容-f
:强制复制,不提示用户确认。-i
:交互式复制,提示用户确认是否覆盖已有文件。-p
:保留源文件的权限、时间戳等属性。-v
:显示复制的过程。然后点击模版,添加模版
安装字体
yum -y install wqy-microhei-fonts
复制字体
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
===跳板机与堡垒机
跳板机就是一台用于中转的服务器,运维人员在使用管理服务器的时候,必须先连接上跳板机,然后才能去操作内网中的服务器,才能登录到目标设备上进行维护和操作。
开发/测试》登录跳板机》登录开发/测试服务器
跳板机的缺点是,仅仅是实现了服务器的登录安全。但是没有实现对运维人员的行为操控和审计。还有可能在服务器上进行误操作,一旦出现错误操作,很难定位到实施人。
优点:集中式对服务进行管理,
===堡垒机运维思想
审计也是事后的行为,审计能够发现问题以及责任人,但是无法防止问题的发生
只有实现了事先严格监控,才能够在源头上解决服务器误操作的事故
堡垒机能够创建系统账号,该系统账号功能是属于角色区分的作用,但是也无法曲儿该账号的执行人。
。
===堡垒机的作用
堡垒机的前身是跳板机,由于跳板机的不足,企业需要更新、更好、更安全的技术理念去管理服务器的运维操作,需要一种能够满足角色管理,角色授权,信息资源访问控制,操作记录和审计、系统变更和维护控制等等需求,且还能生成服务器资产统计报表等功能的一个IT堡垒机。
1、核心系统运维和安全审计管理
2、过滤和拦截非法请求访问,恶意估计,拒绝不合法命令,进行审计和监控,报警和责任追踪。
3、报警、记录、分析、处理
。
==堡垒机功能
1、单点登录功能
2、账号管理
3、身份认证
4、资源授权
5、访问控制
6、操作审计
。
===堡垒机应用的场景
多个用户使用一个账号
一个用户使用多个账号
缺少统一的权限管理平台,难以实现高粒度的命令权限控制
对于传统的网络设备无法对运维人员的远程连接命令进行加密、审计。
-
===企业角度看堡垒机
通过更加细致的力度对企业IT资产设备进行管理,保证企业的IT设备资产安全,可靠运行,降低认为操作的风险,避免风险性,保证企业的资源资金安全。
-
===管理角度看堡垒机
运维人员只需要记录堡垒机的账号密码,一次登录即可快捷方位多个管理的设备,无须记录多个账号密码,提升工作效率,且能够对于服务器最大化的安全性操作。
-
=====企业真实堡垒机案例
1、运维管理人员手段落后,导致难以发现问题的因素,以及问题的责任制
2、设备的账户管理缺失,连锁酒店的每个运维人员都能够直接操作所有的服务器。账号密码是及其不安全的,一套完整的信息管理系统,一般需要多个运维人员去管理,因此也就存在了多个账号密码信息,因此存在些问题隐患,如密码丢失,密码忘记,密码被破解等等,还有就是第三方运维人员,对于服务器的操作,需要有效的进行账号管理以及账号监控
-
堡垒机就是解决运维权限混乱,操作无审计
=====堡垒机JumpServer服务部署
在安装jumpserver、所需环境依赖中还需要加上zlib zlib-devel
6、检测系统编码是否中文
netstat -tunlp
命令会显示所有 TCP 和 UDP 协议相关的连接信息,包括本地地址和端口号、远程地址和端口号、连接状态、进程 ID 和进程名称等信息。其中,-n
选项以数字形式显示 IP 地址和端口号,-l
选项仅显示监听状态的连接,-p
选项显示进程名称和进程 ID。 netstat -tulp
命令仅显示 TCP 协议相关的连接信息,不包括 UDP 相关的连接信息。其中,-n
选项以数字形式显示 IP 地址和端口号,-l
选项仅显示监听状态的连接,-p
选项显示进程名称和进程 ID。
查看文件目录
which python
python #进入python环境
1、使用绝对路径
/teach_jmp/python3.6.10/bin/python3
2、配置环境变量
vim /etc/profile
在最后加上,意思是在原有的PATH变量的基础上加上/teach_jmp/python3.6.10/bin
PATH="/teach_jmp/python3.6.10/bin:$PATH"
读取使其生效
source /etc/profile
查看环境变量
echo $PATH
使用环境变量方式启动Python3解释器
python3
python(默认2)
若是使用./hello.py形式运行脚本需要再脚本中指定解释器
不指定解释器
python hello.py
python3 hello.py
python2不认识中文
源代码在gcc编译安装
redis-cli #进入本地redis
pip3 list #查看安装模块
Guacamole模块安装
nginx中/opt改为路径/teach_tmp,在ngixn.conf38行开始粘贴下列配置
nginx -t #检查nginx服务
需要修改guacamole配置秘钥