day01
- 对服务的管理,不能仅限于可用性。
- 还需要服务可以安全、稳定、高效地运行。
- 监控的目的:早发现、早治疗。
- 被监控的资源类型:
- 公开数据:对外开放的,不需要认证即可获取的数据
- 私有数据:对外不开放,需要认证、权限才能获得的数据
监控命令
# uptime可以查看系统已经运行了多久。最后的3个数字分别是CPU最近1分钟、5分钟、15分钟的平均负载。平均负载的值,不应该大于总核心数。
[root@zzgrhel8 ~]# uptime
09:28:25 up 53 days, 27 min, 0 users, load average: 0.09, 0.08, 0.03
[root@zzgrhel8 ~]# free -h # 主要用于查看内存
[root@zzgrhel8 ~]# swapon -s # 查看swap空间
[root@zzgrhel8 ~]# df -h # 查看硬盘使用情况
[root@zzgrhel8 ~]# ping -c2 www.baidu.com # 发2个包,测试网络
zabbix
-
实施监控的几个方面:
- 数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)
- 数据存储:使用mysql数据库
- 数据展示:通过web页面
-
zabbix通过在远程主机上安装agent进行数据采集,存储到mysql数据库,通过web页面进行展示。
安装zabbix
- 中文手册:https://www.zabbix.com/documentation/3.4/zh/manual
主机名 | 地址 |
---|---|
zabbixserver | 192.168.88.5/24 |
web1 | 192.168.88.100/24 |
web2 | 192.168.88.200/24 |
# 准备3台主机。按上表配置主机名和IP地址
[root@zzgrhel8 ~]# vm clone zabbixserver web1 web2
- 安装zabbix
# 1. 关闭SELINUX和防火墙
# 2. 配置yum。千万注意:只保留系统yum,删除mysql和pxc。
[root@zabbixserver ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.88.240/dvd
enabled=1
gpgcheck=0
# 3. 配置nginx,用于展示zabbix的web页面
# 3.1 安装nginx的依赖包
[root@zabbixserver ~]# yum install -y gcc pcre-devel openssl-devel
# 3.2 安装nginx
[root@zzgrhel8 ~]# scp /linux-soft/2/lnmp_soft.tar.gz 192.168.88.5:/root/
[root@zabbixserver ~]# tar xf lnmp_soft.tar.gz
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@zabbixserver lnmp_soft]# cd nginx-1.12.2/
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module # 配置nginx支持https
[root@zabbixserver nginx-1.12.2]# make && make install
# 4. 配置nginx支持php。配置php可以连接mysql
[root@zabbixserver ~]# yum install -y php php-fpm php-mysql mariadb-server mariadb-devel
# 5. 根据zabbix手册,修改nginx参数
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
34 fastcgi_buffers 8 16k; #缓存php生成的页面内容,8个16k
35 fastcgi_buffer_size 32k; #缓存php生产的头部信息,32k
36 fastcgi_connect_timeout 300; #连接PHP的超时时间,300秒
37 fastcgi_send_timeout 300; #发送请求的超时时间,300秒
38 fastcgi_read_timeout 300; #读取请求的超时时间,300秒
70 location ~ \.php$ {
71 root html;
72 fastcgi_pass 127.0.0.1:9000;
73 fastcgi_index index.php;
74 # fastcgi_param SCRIPT_FILENAME /script s$fastcgi_script_name;
75 include fastcgi.conf; # 注意改成fastcgi.conf
76 }
# 6. 启动相关服务
[root@zabbixserver ~]# systemctl enable mariadb --now
[root@zabbixserver ~]# systemctl enable php-fpm --now
[root@zabbixserver ~]# ss -tlnp |grep :9000
LISTEN 0 128 127.0.0.1:9000
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx -t // -t:检查语法
[root@zabbixserver ~]# ss -tlnp | grep :80
LISTEN 0 128 *:80
# 写入到rc.local中的命令,开机时自动执行
[root@zabbixserver ~]# echo '/usr/local/nginx/sbin/nginx' >> /etc/rc.d/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.d/rc.local
# 7. 编译安装zabbix
# 7.1 安装zabbix的依赖包
[root@zabbixserver lnmp_soft]# yum install -y net-snmp-devel curl-devel autoconf libevent-devel
# 7.2 编译安装
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# ls zabbix-3.4.4.tar.gz
zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# tar xf zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
# --enable-server: 安装服务器端
# --enable-agent: 安装被控端
# --with-mysql: 指定mysql数据库配置程序
# --with-net-snmp: 配置可以通过snmp收集数据
# --with-libcurl: 启用curl库,以便zabbix可以通过curl连接web服务
[root@zabbixserver zabbix-3.4.4]# make && make install
- 初始化
# 1. 创建zabbix存储数据的数据库。创建名为zabbix的数据库,使用的字符集是utf8
[root@zabbixserver ~]# mysql
MariaDB [(none)]> create database zabbix default charset utf8;
# 2. 创建名为zabbix的用户,密码也是zabbix,可以对zabbix数据库拥有全部权限。zabbix@'%'格式是:zabbix@客户端地址
# 在mysql中,%表示0到多个任意字符
MariaDB [(none)]> grant all on zabbix.* to zabbix@'%' identified by 'zabbix';
# 授权zabbix用户可以在本机登陆
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
# 查看所有数据库
MariaDB [(none)]> show databases;
# 切换到数据库
MariaDB [(none)]> use zabbix;
# 查看库中有哪些表
MariaDB [(none)]> show tables;
# 查看表中内容
MariaDB [(none)]> desc users; # users是表格名称
MariaDB [(none)]> exit
# 3. 导入zabbix表结构,3个sql文件按顺序导入
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# ls
data.sql images.sql schema.sql
# -u指定用户名,-p指定密码,第3个zabbix是数据库
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
# 4. 配置zabbix_server服务
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
12 # ListenPort=10051 # 不用改,了解端口号
38 LogFile=/tmp/zabbix_server.log # 不用改,日志文件位置
85 DBHost=localhost # 数据库服务器地址
95 DBName=zabbix # 不用改,数据库名
111 DBUser=zabbix # 不用改,连接数据库的用户
119 DBPassword=zabbix # 连接数据库的密码
# 5. 创建用于运行zabbix的用户
# -s /sbin/nologin: 用户不能登陆系统
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix
# 6. 创建用于管理zabbix的service文件
# service文件格式参考:https://www.cnblogs.com/gongxianjin/p/15673132.html
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
# 7. 启动服务
# 新建service文件,一般需要执行systemctl daemon-reload,否则有可能识别不到
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl enable zabbix_server.service
[root@zabbixserver ~]# systemctl start zabbix_server.service
[root@zabbixserver ~]# ss -tlnp | grep :10051
LISTEN 0 128 *:10051
# 8. 配置agent,自己被监控
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
30 LogFile=/tmp/zabbix_agentd.log # 不用改,日志位置
93 Server=127.0.0.1,192.168.88.5 # 指定接受哪些服务器监控
101 # ListenPort=10050 # 不用改,指定端口号
134 ServerActive=127.0.0.1,192.168.88.5 # 主动汇报信息给哪些服务器
145 Hostname=zabbixserver # 本机的主机名
280 UnsafeUserParameters=1 # 允许用户自定义监控项
# 9. 配置agent服务的service文件
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
# 10. 启服务
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl start zabbix_agentd.service
[root@zabbixserver ~]# systemctl enable zabbix_agentd.service
[root@zabbixserver ~]# ss -tlnp | grep :10050
LISTEN 0 128 *:10050
附:删库重导入
# 查看有哪些数据库 MariaDB [(none)]> show databases; MariaDB [(none)]> drop database zabbix; MariaDB [(none)]> create database zabbix default charset utf8; MariaDB [(none)]> exit [root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/ [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
- zabbix的管理是通过web页面进行的。通过web初始化zabbix
# 拷贝zabbix的web页面到nginx
[root@zabbixserver ~]# ls lnmp_soft/zabbix-3.4.4/frontends/
php
[root@zabbixserver ~]# cp -r lnmp_soft/zabbix-3.4.4/frontends/php/* /usr/local/nginx/html/
# nginx运行期间,调用php-fpm服务,php-fpm需要向web目录中修改文件。php-fpm的运行用户是apache,所以apache用户需要对该目录有写权限
[root@zabbixserver ~]# chown -R apache:apache /usr/local/nginx/html/
# 访问192.168.88.5,跳转的是index.html网页
[root@zabbixserver zabbix-3.4.4]# vim /usr/local/nginx/conf/nginx.conf
48 location / {
49 root html;
50 index index.php index.html index.htm; # 添加index.php
51 }
# 再次访问192.168.88.5,跳转的是index.php网页
# 访问192.168.88.5/index.php,首次访问,将会自动跳转到安装页面:http://192.168.88.5/setup.php
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ndwNDG58-1682339945334)(…/imgs/image-20211108154951884.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnjQmUS6-1682339945334)(…/imgs/image-20211108155036640.png)]
- 根据上面红色报错,解决zabbix web依赖的内容
# 安装依赖的软件包
[root@zabbixserver ~]# yum install -y php-gd php-xml php-bcmath php-mbstring
# 修改php.ini文件
[root@zabbixserver ~]# vim /etc/php.ini
672 post_max_size = 16M # vim搜索快捷键:行号+G(输入行号后按G)
384 max_execution_time = 300
394 max_input_time = 300
878 date.timezone = Asia/Shanghai
[root@zabbixserver ~]# systemctl restart php-fpm
# 刷新web页
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPbr9Ap3-1682339945335)(…/imgs/image-20211108160054085.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vII4EI8D-1682339945336)(…/imgs/image-20211108162814600.png)]
连接数据库的密码,也是zabbix。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QtYr0f9p-1682339945336)(…/imgs/image-20211108162959430.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3UC8f6Vq-1682339945337)(…/imgs/image-20211108163021394.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqmmsUkH-1682339945337)(…/imgs/image-20211108163042977.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KAm60wC-1682339945337)(…/imgs/image-20211108163107194.png)]
默认的登陆用户是admin,密码是zabbix。
配置zabbix
- 修改语言
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4LSdcHe-1682339945338)(…/imgs/image-20211108164724853.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hoYqPPYS-1682339945338)(…/imgs/image-20211108164800435.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YJzjbTl-1682339945339)(…/imgs/image-20211108164826100.png)]
- 启用监控自身
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFdm6Jjm-1682339945339)(…/imgs/image-20211108171750489.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C3d8O7Yf-1682339945339)(…/imgs/image-20211108171813369.png)]
配置zabbix监控web1服务器
# 监控端(zabbix server)和被控端使用的软件是同一个,只是启用不同的功能
[root@zabbixserver ~]# scp lnmp_soft/zabbix-3.4.4.tar.gz 192.168.88.100:/root
# 安装编译agent需要的依赖环境
[root@web1 ~]# yum install -y gcc pcre-devel autoconf
# 编译agent
[root@web1 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make && make install
# 修改配置文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
30 LogFile=/tmp/zabbix_agentd.log # 日志位置,不用改
69 EnableRemoteCommands=1 # 允许监控端远程执行命令
93 Server=127.0.0.1,192.168.88.5 # 允许自己和监控端进行数据采集
134 ServerActive=127.0.0.1,192.168.88.5 # 允许自己和监控端主动监控
145 Hostname=web1 # 自己的主机名
280 UnsafeUserParameters=1 # 允许用户自定义监控项
# 配置服务
[root@zabbixserver ~]# scp /usr/lib/systemd/system/zabbix_agentd.service 192.168.88.100:/usr/lib/systemd/system/
[root@web1 ~]# useradd -s /sbin/nologin zabbix
[root@web1 ~]# systemctl daemon-reload
[root@web1 ~]# systemctl start zabbix_agentd.service
[root@web1 ~]# systemctl enable zabbix_agentd.service
[root@web1 ~]# ss -tlnp | grep :10050
LISTEN 0 128 *:10050
day02
在zabbix web管理平台中配置监控
- 主机:安装了agent,被监控的主机
- 主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
- 模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。
添加被监控的主机
- 登陆zabbix:http://192.168.88.5/index.php
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMigXK3f-1682339945340)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009103110365.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eW2Eghhh-1682339945340)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009103255479.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WW9w7DeK-1682339945340)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009103513705.png)]
- 查看监控数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWIctRF0-1682339945341)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009104234567.png)]
需要查看哪个项目,可以点击右侧的“图形”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byuQBkhU-1682339945341)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009104356220.png)]
常用的监控指标:
- CPU idle time:CPU空闲时间。不宜过低。
- Processor load(1 min average per core) / Processor load(5 min average per core) / Processor load(15 min average per core):每核心1分钟、5分钟、15分钟的平均负载。这个值不应长期大于1。
- Free disk space on /:根分区剩余的空间
- Free disk space on /(percentage):根分区剩余的空间百分比
- Available memory:可用内存
- Incoming network traffic on eth0:eth0网卡进入的流量
- Outgoing network traffic on eth0:eth0网卡外出的流量
- Maximum number of processes:系统最多运行的进程数
- Number of logged in users:已登陆的用户数
自定义监控项
实现监控web1用户数量的监控项
- 在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
- 在web页面中创建监控项。监控项对应key值。
- 监控项存在应用集中。应用集就是相似监控项的集合。
- 应用集存在模板中。一个模板可以包含多个应用集。
在被控端创建key
- 创建key的语法
UserParameter=自定义key值,命令
# 命令的执行结果,是key的value
- 在web1上声明自定义监控项所包含的配置文件。系统将会到
/usr/local/etc/zabbix_agentd.conf.d/
查找自定义监控项
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
- 创建自定义配置文件。文件名自定义
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/count.line.passwd
UserParameter=count.line.passwd,sed -n '$=' /etc/passwd
- 验证
[root@web1 ~]# systemctl restart zabbix_agentd.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k count.line.passwd
# -s指定获取哪台主机的值
# -k指定key
[root@web1 ~]# zabbix_get -s 192.168.88.100 -k count.line.passwd
zabbix_get [17421]: Check access restrictions in Zabbix agent configuration
# 此处报错是因为配置文件中只设置的了127.0.0.1和192.168.88.5可以访问,需在配置第93行加上88.100的地址即可访问
创建模板
创建名为count.line.passwd的模板。该模板属于名为count-passwd的组,该组不存在则自动创建。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ddb50KR4-1682339945341)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114126788.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fsqkpUsT-1682339945342)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114246453.png)]
创建应用集
- 创建名为
count_line_passwd
的应用集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hEjEUWD6-1682339945342)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114531862.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmVEpV4V-1682339945343)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114608482.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08v9qOIy-1682339945343)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114649712.png)]
在应用集中创建监控项
- 创建名为
count_line_passwd_item
的监控项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jk2cIFyz-1682339945343)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114752343.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPJNawzt-1682339945344)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114834521.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNx2sJrU-1682339945344)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009114956605.png)]
应用模板到主机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyKabSHH-1682339945344)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009115659638.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-28YIHo44-1682339945345)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009115738765.png)]
查看结果
- 注意,刚应用的模板,不会立即取得数据,需要等一会
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hDD5MiEe-1682339945345)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009115844587.png)]
配置告警
- 默认情况下,监控项不会自动发送告警消息
- 需要配置触发器与告警,并且通过通知方式发送信息给联系人
- 触发器:设置条件,当条件达到时,将会执行某个动作
- 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令
用户数超35时,发送告警邮件
- 当web1的用户数超过35时,认为这是一个问题(Problem)
- 当出现问题时,将会执行动作。
- 执行的动作是给管理员发邮件。
- 给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址
实施
创建触发器规则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X016ndo6-1682339945345)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009141857021.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Csq3jspt-1682339945346)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009141937098.png)]
创建名为password_line_gt_35
的触发器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UJVDa80a-1682339945346)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009142113266.png)]
点击添加后,出现下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIzwwyWl-1682339945347)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009142224765.png)]
添加表达式之后的结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqrbzkFG-1682339945347)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009142329729.png)]
表达式语法:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{<主机>:<key>.<函数>(<参数>)}<操作符><常量>
例:
{count.line.passwd:count.line.passwd.last()}>35
# count.line.passwd是模板
# count.line.passwd是在被控端上定义的key
# last是函数,表示最近的一次取值
# > 是操作符
# 35 是常量
# 以上表达式的含义是:应用count.line.passwd模板的主机,它的count.line.passwd最近一次取值大于35,则状态为“问题”,即Problem
创建邮件类型的报警媒介
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTBGgHw7-1682339945348)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009143748657.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Up9AJc4O-1682339945348)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009144132609.png)]
为用户关联邮箱
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mQ7758go-1682339945348)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009144729491.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aH2LU60E-1682339945349)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009144820740.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2WBFGSgT-1682339945349)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009144955348.png)]
创建动作:当出现Problem状态时,给admin发邮件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ilX2gnUI-1682339945349)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009151612465.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86BYcyGP-1682339945350)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20220314141636627.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HkJQR2zi-1682339945350)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009152241662.png)]
点击“新的”之后,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-497xcwgc-1682339945350)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009152452328.png)]
验证
# 配置zabbix服务器成为邮件服务器
[root@zabbixserver ~]# yum install -y postfix mailx
[root@zabbixserver ~]# systemctl enable postfix --now
[root@zabbixserver ~]# ss -tlnp | grep :25
LISTEN 0 100 127.0.0.1:25
# 在web1上创建用户
[root@web1 ~]# for user in user{1..20}
> do
> useradd $user
> done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
43
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XbJMMlL-1682339945351)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009154251273.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTj2FzRV-1682339945351)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009154404010.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkqkXjka-1682339945352)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009154512197.png)]
# 在zabbixserver上查看邮件
[root@zabbixserver ~]# mail
>N 1 zabbix@localhost.loc Tue Nov 9 14:48 21/941
# N表示未读,1是邮件编号
# 回车默认查看最新一封邮件
& q # 退出
自动发现
-
当被监控的设备非常多的时候,手工添加将会变得非常不方便
-
可以使用自动发现功能,实现添加主机、添加到主机组、 链接模板
-
自动发现流程:
- 创建自动发现规则
- 创建动作,当主机被发现之后,执行什么操作
- 通过动作,添加主机,将模板应用到发现的主机
配置自动发现
- 创建自动发现规则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKNt1Xec-1682339945352)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009163820665.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZ11EDXS-1682339945353)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009164038717.png)]
- 创建动作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AOapa9T-1682339945353)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009164529777.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZZfIMgJ-1682339945354)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009164634515.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3VpCFjx-1682339945354)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009164738033.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfUcvY8v-1682339945354)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009164857584.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6pdMMu8w-1682339945355)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211109170417346.png)]
在zabbix web页面中查看web2是否已被发现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUzjfORH-1682339945355)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009170022854.png)]
web2是通过ssh发现的,它上面还没有配置zabbix agent,所以即使发现了,也无法监控。需要在web2上配置agent。
[root@web1 ~]# scp zabbix-3.4.4.tar.gz 192.168.88.200:/root/
[root@web2 ~]# yum install -y gcc pcre-devel autoconf
[root@web2 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 zabbix-3.4.4]# ./configure --enable-agent && make && make install
[root@web2 zabbix-3.4.4]# useradd -s /sbin/nologin zabbix
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
69 EnableRemoteCommands=1
93 Server=127.0.0.1,192.168.88.5
134 ServerActive=127.0.0.1,192.168.88.5
145 Hostname=web2
280 UnsafeUserParameters=1
[root@zabbixserver ~]# scp /usr/lib/systemd/system/zabbix_agentd.service 192.168.88.200:/usr/lib/systemd/system/
[root@web2 ~]# systemctl daemon-reload
[root@web2 ~]# systemctl enable zabbix_agentd.service --now
[root@web2 ~]# ss -tlnp | grep :10050
LISTEN 0 128 *:10050
实施主动监控
- 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。
- 被动监控:Server向Agent发起请求,索取监控数据。此种模式常用
- 主动监控:Agent向Server发起连接,向Server汇报
配置web2使用主动监控
- 修改配置文件,只使用主动监控
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
93 # Server=127.0.0.1,192.168.88.5 # 因为采用主动监控,所以不接受其他主机的查询
118 StartAgents=0 # 不接受被动检查,也不开启任何端口
134 ServerActive=192.168.88.5 # 只向server汇报
183 RefreshActiveChecks=120 # 120秒检查一次配置
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
280 UnsafeUserParameters=1
# 重启服务
[root@web2 ~]# systemctl restart zabbix_agentd.service
[root@web2 ~]# ss -tlnp | grep :10050 # 端口号消失
创建用于主动监控的模板。可以基于现有的模板,克隆之后修改。
- 克隆现有模板
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgGR8CDV-1682339945356)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009174454344.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxZ9t9L2-1682339945356)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009174527405.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsMSwr5d-1682339945357)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009174642418.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GwEiTNW6-1682339945357)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009174721180.png)]
- 修改克隆的模板,将监控项改为主动监控
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXejENqy-1682339945358)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175034682.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAM7ZrCA-1682339945358)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175624108.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LIMc8dnq-1682339945359)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175143879.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uduvCO8F-1682339945359)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175207955.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGfbq4cL-1682339945359)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175256277.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-For7kAlw-1682339945360)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175314253.png)]
克隆的模板有3项不支持主动,把它们禁用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKJQxEsT-1682339945360)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175426736.png)]
添加使用主动监控的主机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1X0lcYaA-1682339945360)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009175936684.png)]
下图中,注意主机名应该与被监控的主机的名字相同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xnHXGqq-1682339945361)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009180109687.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScQBIEu3-1682339945361)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009180207488.png)]
查看最新数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMNIqdGV-1682339945362)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211009180511569.png)]
拓扑图和聚合图形
拓扑图
- 在zabbix中可以创建拓扑图,反映拓扑结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-je4PK4ZI-1682339945362)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011093108735.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sonTP0GY-1682339945363)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011093138268.png)]
添加元素:
- 图标:可以是一个装饰图形,也可以对应具体的设备
- 形状:长方形、圆形
- 链接:连线,多个设备之间才能使用链接
完善拓扑图
- 添加交换机图标
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bllH3hNG-1682339945363)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011093625759.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p62QANuY-1682339945363)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011093738831.png)]
- 添加链接:圈中两台设备,点链接边上的添加
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioZFjMFY-1682339945364)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011093924690.png)]
- 添加2台web服务器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RhSvYhZk-1682339945364)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011094401267.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCDFXDIa-1682339945364)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011094508613.png)]
聚合图形
- 将常用的页面放到一个统一页面中查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xvul6iuf-1682339945365)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101231497.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oAnyJ23A-1682339945365)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101321401.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2BaMcSk-1682339945366)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101405428.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsueLTF6-1682339945366)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101429254.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oqZ6ZZqP-1682339945368)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101525333.png)]
点击更改之后,添加新望出现在该单元格的数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GL46bu9W-1682339945368)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101621625.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErRqIlYV-1682339945368)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101657170.png)]
使用同样的方法,点击其他的“更改”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mXCTGk6O-1682339945369)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011101923352.png)]
《钉钉机器人告警》https://www.jianshu.com/p/6317121da5a4
day03
监控nginx示例
stub_status模块
- 用于实时监控nginx的网络连接,这个模块是nginx官方提供的一个模块。
# 编译nginx,支持stub_status模块
[root@zzgrhel8 ~]# scp /linux-soft/2/lnmp_soft.tar.gz 192.168.88.100:/root
[root@web1 ~]# tar xf lnmp_soft.tar.gz
[root@web1 ~]# cd lnmp_soft/
[root@web1 lnmp_soft]# yum install -y gcc pcre-devel openssl-devel
[root@web1 lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@web1 lnmp_soft]# cd nginx-1.12.2/
[root@web1 nginx-1.12.2]# ./configure --help | grep stub
--with-http_stub_status_module enable ngx_http_stub_status_module
[root@web1 nginx-1.12.2]# ./configure --with-http_stub_status_module
[root@web1 nginx-1.12.2]# make && make install
# 修改配置文件,启用stub_status
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
47 location /status {
48 stub_status on;
49 }
# 检查语法,出现syntax is ok表示配置文件正确
[root@web1 ~]# /usr/local/nginx/sbin/nginx -t
# 启动服务
[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web1 ~]# ss -tlnp | grep :80
LISTEN 0 128 *:80
# 访问监控页面
[root@web1 ~]# curl http://192.168.88.100/status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
# Active connections:当前客户端与nginx之间的连接数。它等于下面Reading / Writing / Waiting之和
# accepts:自nginx启动之后,客户端访问的总量
# handled:自nginx启动之后,处理过的客户端连接总数。
# requests:自nginx启动之后,处理过的客户端请求总数。
# Reading:正在读取HTTP请求头部的连接总数。
# Writing:正在向客户端发送响应的连接总数。
# Waiting:空闲连接。
# 使用工具向服务器发起多个请求
[root@web1 ~]# yum install -y httpd-tools
# 一共发1000个请求,每次并发数100
[root@web1 ~]# ab -n 1000 -c 100 http://192.168.88.100/status
[root@web1 ~]# curl http://192.168.88.100/status
Active connections: 1
server accepts handled requests
1040 1040 1004
Reading: 0 Writing: 1 Waiting: 0
- 编写脚本,用于获取各项数据
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
curl -s http://192.168.88.100/status | awk '/Active/{print $NF}';;
waiting)
curl -s http://192.168.88.100/status | awk '/Waiting/{print $NF}';;
accepts)
curl -s http://192.168.88.100/status | awk 'NR==3{print $1}';;
esac
[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh
[root@web1 ~]# nginx_status.sh active
1
[root@web1 ~]# nginx_status.sh accepts
1047
[root@web1 ~]# nginx_status.sh waiting
0
- 创建zabbix用到的key,获取各项数据
# key的语法格式
UserParameter=key[*],<command> $1
# key[*]中的*是参数,将会传给后面的位置变量$1
# 创建声明key的文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
# 测试key
[root@web1 ~]# systemctl restart zabbix_agentd.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[accepts]
1049
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[active]
1
- 在zabbix web中添加监控项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ifumkiu6-1682339945369)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110105033748.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3uJQ5mz-1682339945370)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110105057176.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0y6jqKNl-1682339945370)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110105242187.png)]
等待一会之后,可以查看最新数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yS9em03U-1682339945371)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110111814945.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5nSRwAQ4-1682339945371)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110112100106.png)]
Prometheus
- 也是一款监控软件,也是一个时序数据库。
- 主要用在容器监控方面,也可以用于常规的主机监控。
- 使用google公司开发的go语言编写。
- Prometheus是一个框架,可以与其他组件完美结合。
- 自带httpd网站(页面相对简略)、数据库TSDB。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6CREiGSv-1682339945371)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011104321276.png)]
部署Prometheus服务器
- prometheus:192.168.88.10
- 被控端node1:192.168.88.11
[root@zzgrhel8 ~]# scp /linux-soft/2/prometheus_soft.tar.gz 192.168.88.10:/root/
[root@prometheus ~]# tar xf prometheus_soft.tar.gz
[root@prometheus ~]# cd prometheus_soft/
# prometheus是经过编译后的go语言程序,相当于绿色软件,解压即用
[root@prometheus prometheus_soft]# tar xf prometheus-2.17.2.linux-386.tar.gz
[root@prometheus prometheus_soft]# mv prometheus-2.17.2.linux-386 /usr/local/prometheus
# 修改配置文件
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
29 - targets: ['192.168.88.10:9090']
# 注意:prometheus主机的时间需要与真机时间一致,如果不一致,修改时间
[root@prometheus ~]# timedatectl # 查看时区
[root@prometheus ~]# timedatectl set-timezone Asia/Shanghai # 修改时区
[root@prometheus ~]# date -s "20220105 14:18:00"
# 检查语法
[root@prometheus ~]# /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
Checking /usr/local/prometheus/prometheus.yml
SUCCESS: 0 rule files found
# 创建服务文件
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/
[Install]
WantedBy=multi-user.target
# 启服务
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl enable prometheus.service --now
[root@prometheus ~]# ss -tlnp | grep :9090
LISTEN 0 128 :::9090
查看监控页面
- 访问http://192.168.88.10:9090
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esCmbnaX-1682339945372)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011114013573.png)]
- 被监控的对象称为targets
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QabrQ6kz-1682339945372)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011114248512.png)]
prometheus已经在监控自己了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vDIBHIgE-1682339945372)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011114338135.png)]
查看监控图像:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkOMToAI-1682339945373)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011114748412.png)]
添加需要查看的监控项:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5XU7jg8-1682339945373)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011114947884.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HlXvhrVL-1682339945374)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011115034507.png)]
查看监控项的图形信息:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r8bxzIHl-1682339945374)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011115124956.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-64TTO1q6-1682339945375)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011115254041.png)]
如果web页面获取不到数据,使用date命令调整prometheus和真机的时间,它们需要保持一致。
添加被监控端
-
监控方式:
- 拉取:pull。监控端联系被监控端,采集数据
- 推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
-
被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)
-
exporter列表:https://prometheus.io/docs/instrumenting/exporters/
部署通用的监控exporter
- node-exporter用于监控硬件和系统的常用指标
- exporter运行于被监控端,以服务的形式存在。每个exporter所使用的端口号都不一样。
- 在node1[192.168.88.11]上部署node exporter
# 部署
[root@prometheus prometheus_soft]# scp node_exporter-1.0.0-rc.0.linux-amd64.tar.gz 192.168.88.11:/root/
[root@node1 ~]# tar xf node_exporter-1.0.0-rc.0.linux-amd64.tar.gz
[root@node1 ~]# mv node_exporter-1.0.0-rc.0.linux-amd64 /usr/local/node_exporter
[root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable node_exporter.service --now
[root@node1 ~]# ss -tlnp | grep :9100
LISTEN 0 128 :::9100
- 在Prometheus服务器上添加监控节点
# 在配置文件中追加以下内容。特别注意缩进
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'node1'
static_configs:
- targets: ['192.168.88.11:9100']
[root@prometheus ~]# systemctl restart prometheus.service
查看结果结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQOmCNhZ-1682339945375)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011144322719.png)]
- 查看node1节点的1分钟平均负载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e7HDd9wu-1682339945376)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011144650754.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTcAMbv1-1682339945376)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011144715784.png)]
grafana可视化
- grafana是一款开源的、跨平台的、基于web的可视化工具
- 展示方式:客户端图表、面板插件
- 数据源可以来自于各种源,如prometheus
部署grafana
- 装包、启服务
[root@prometheus ~]# cd prometheus_soft/
[root@prometheus prometheus_soft]# ls *rpm
grafana-6.7.3-1.x86_64.rpm
[root@prometheus prometheus_soft]# yum install -y grafana-6.7.3-1.x86_64.rpm
[root@prometheus ~]# systemctl enable grafana-server.service --now
- 修改配置,对接prometheus
访问http://192.168.88.10:3000。初始用户名和密码都是admin。第一次登陆时,要求改密码,我的密码改为tedu.cn。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOxV6kAy-1682339945376)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011152230581.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOzaSEl9-1682339945377)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110162546052.png)]
对接数据的步骤:
- 添加数据源
- 为数据展示选择展示方式(dashboard仪表盘)
- 查看结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iWxnQdAj-1682339945377)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011153727629.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WibSrhcU-1682339945377)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011153814503.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jECy2rAI-1682339945378)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011153943404.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYP7m6PX-1682339945378)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154000848.png)]
选择展示方式。导入模板文件,展示不同主题风格。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWBM8T6D-1682339945379)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154333024.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JcW9NUKe-1682339945379)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154416593.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQ8C4q7f-1682339945380)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154546439.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vtDgizA-1682339945380)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154629159.png)]
查看结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oz408hNp-1682339945380)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011154659959.png)]
展示node1的监控信息
- grafana模板下载:https://grafana.com/grafana/dashboards/
- 导入主机监控模板
# 在真机上解压prometheus_soft.tar.gz
[root@zzgrhel8 ~]# tar xf /linux-soft/2/prometheus_soft.tar.gz -C /tmp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SR2oJlCj-1682339945381)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011161809562.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XPUBmhMj-1682339945381)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011161841353.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWwrKgke-1682339945382)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110170056718.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tu8N6iVf-1682339945382)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011162254949.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VeVz45zA-1682339945382)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011162415539.png)]
监控mariadb数据库
在node1节点上安装数据库
[root@node1 ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.88.240/dvd
enabled=1
gpgcheck=0
[root@node1 ~]# yum install -y mariadb-server
[root@node1 ~]# systemctl enable mariadb --now
在node1上安装mysql exporter
- mysql exporter需要访问数据库,所以需要在数据库中为exporter创建授权用户
[root@node1 ~]# mysql
MariaDB [(none)]> grant all on *.* to jerry@'localhost' identified by '123'; # 创建用户jerry,密码是123
MariaDB [(none)]> exit
- 配置mysql exporter
[root@prometheus prometheus_soft]# scp mysqld_exporter-0.12.1.linux-amd64.tar.gz 192.168.88.11:/root/
[root@node1 ~]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@node1 ~]# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
# 编写用于连接mysql服务的配置文件
[root@node1 ~]# vim /usr/local/mysqld_exporter/.my.cnf
[client]
host=127.0.0.1
port=3306
user=jerry
password=123
# 创建service文件
[root@node1 ~]# vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
[Install]
WantedBy=multi-user.target
# 启服务
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable mysqld_exporter.service --now
[root@node1 ~]# ss -tlnp | grep :9104
LISTEN 0 128 :::9104
配置prometheus监控mysql
# 修改配置文件,追加以下内容:
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql'
static_configs:
- targets: ['192.168.88.11:9104']
[root@prometheus ~]# systemctl restart prometheus.service
查看状态:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4LW0ZEj-1682339945383)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011174259410.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zpsxFKNk-1682339945383)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011174319770.png)]
在grafana中展示mysql exporter数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrDUE98T-1682339945384)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175013018.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C0HyvZCg-1682339945384)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175033194.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AyUYmdx0-1682339945384)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211110175416360.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Q6CCGV5-1682339945385)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175146938.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFYJmWKf-1682339945385)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175430016.png)]
模板切换
查看其模板:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDijK0fy-1682339945385)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175506407.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2r30WwA-1682339945386)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211011175526482.png)]
day04
kali
- 实际上它就是一个预安装了很多安全工具的Debian Linux
[root@zzgrhel8 ~]# kali reset
kali reset OK.
该虚拟机系统用户名为:kali,密码为:kali
- 基础配置
$ ip a s # 查看网络
$ nmcli connection show # 查看到网络连名为"Wired connection 1"
$ nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.address 192.168.88.40/24 autoconnect yes
$ nmcli connection up "Wired connection 1"
$ systemctl start ssh # 启ssh服务,弹出的窗口输入密码kali
[root@zzgrhel8 ~]# ssh kali@192.168.88.40
kali@192.168.88.40's password: kali
┌──(kali㉿kali)-[~]
└─$
nmap扫描
- 一般来说扫描是攻击的前奏。
- 扫描可以识别目标对象是什么系统,开放了哪些服务。
- 获知具体的服务软件及其版本号,可以使得攻击的成功率大大提升。
- 扫描可以检测潜在的风险,也可以寻找攻击目标、收集信息、找到漏洞
- windows下,扫描可以使用xscan / superscan
- Linux,扫描可以采用nmap
- 吾爱破解:https://www.52pojie.cn/
- 中国黑客团队论坛:https://www.cnhackteam.org/
- 俄罗斯论坛:https://rutracker.org/
┌──(kali㉿kali)-[~]
└─$ nmap
# -sT: TCP扫描。
# -U: 扫描目标的UDP端口。
# -sP:ping扫描
# -A:对目标系统全面分析
# 扫描整个网段,哪机器可以ping通
┌──(kali㉿kali)-[~]
└─$ nmap -sP 192.168.88.0/24
# 扫描192.168.88.11开放了哪些TCP端口
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sT 192.168.88.11
# 扫描192.168.88.11开放了哪些UDP端口。非常耗时!
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sU 192.168.88.11
# 全面扫描192.168.88.11系统信息
┌──(kali㉿kali)-[~]
└─$ sudo nmap -A 192.168.88.11
- 使用脚本扫描
# 通过脚本扫描目标主机的ftp服务
# 在目标主机上安装vsftpd服务
[root@node1 ~]# yum install -y vsftpd
[root@node1 ~]# systemctl start vsftpd
# 在kali主机上查看有哪些脚本
┌──(kali㉿kali)-[~]
└─$ ls /usr/share/nmap/scripts/
# 扫描ftp服务是否支持匿名访问。ftp控制连接端口号是21
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-anon.nse 192.168.88.11 -p 21
21/tcp open ftp
| ftp-anon: Anonymous FTP login allowed # 允许匿名访问
# 扫描ftp相关信息,如版本号、带宽限制等
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-syst.nse 192.168.88.11 -p 21
# 扫描ftp后门漏洞
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-vsftpd-backdoor 192.168.88.11 -p 21
- 扫描口令
# 通过ssh协议,使用nmap自带的密码本扫描远程主机的用户名和密码
# 在目标主机上创建名为admin的用户,密码为123456
[root@node1 ~]# useradd admin
[root@node1 ~]# echo 123456 | passwd --stdin admin
# 或使用passwd --stdin admin <<< 123456创建密码
# 在kali上扫描弱密码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ssh-brute.nse 192.168.88.11 -p 22
# 通过ssh协议,使用nmap以及自己的密码本扫描远程主机的密码
# 1. 创建用户名文件
┌──(kali㉿kali)-[~]
└─$ sudo echo root > /tmp/users.txt
┌──(kali㉿kali)-[~]
└─$ cat /tmp/users.txt
root
[root@node1 ~]# passwd --stdin root <<< 19910101
# 2. 生成1990-01-01到2020-12-31之间的所月日期
# 在centos7上,创建以下文件
[root@cent7 ~]# vim mydate.py
from datetime import datetime, timedelta
d1 = datetime(1989, 12, 31)
d2 = datetime(2021, 1, 1)
dt = timedelta(days=1)
with open('/tmp/mima.txt', 'w') as f:
while d1 < d2:
d1 += dt
f.write("%s\n" % d1.strftime('%Y%m%d'))
[root@cent7 ~]# python mydate.py
[root@cent7 ~]# scp /tmp/mima.txt kali@192.168.88.40:/tmp/
# 3. 使用自己的密码本破解密码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ssh-brute.nse --script-args userdb=/tmp/users.txt,passdb=/tmp/mima.txt 192.168.88.11 -p 22
# 4. 目标主机将会记录所有的登陆事件
[root@node1 ~]# vim /var/log/secure
# 查看最近的登陆失败事件
[root@node1 ~]# lastb
# 查看最近的登陆成功事件
[root@node1 ~]# last
- 扫描windows口令
[root@zzgrhel8 ~]# cat /tmp/winuser.txt # windows用户名
administrator
admin
# 通过samba服务扫描密码
[root@zzgrhel8 ~]# nmap --script=smb-brute.nse --script-args userdb=/tmp/winuser.txt,passdb=/tmp/mima 172.40.0.151
使用john破解密码
- 在线破解哈希值的网站:https://cmd5.com/
- 哈希是算法,英文hash的音译,包括md5、sha等
- 哈希算法是一种单向加密的算法,也就是将原始数据生成一串“乱码”
- 只能通过原始数据,生成这串“乱码”,但是不能通过“乱码”回推出原始数据
- 相同的原始数据,生成的乱码是相同的。
- kali系统提供了一个名为john的工具,可用于密码破解
[root@node1 ~]# echo 123456 | passwd --stdin root
[root@node1 ~]# useradd tom
[root@node1 ~]# echo abc123 | passwd --stdin tom
[root@node1 ~]# useradd jerry
[root@node1 ~]# echo 123123 | passwd --stdin jerry
[root@node1 ~]# scp /etc/shadow kali@192.168.88.40:/home/kali/
# 字典暴力破解,密码本是/usr/share/john/password.lst
┌──(kali㉿kali)-[~]
└─$ sudo john shadow
# 直接显示破解的密码,不显示其他额外信息
┌──(kali㉿kali)-[~]
└─$ sudo john --show shadow
root:123456:18912:0:99999:7:::
tom:abc123:18912:0:99999:7:::
jerry:123123:18912:0:99999:7:::
# 字典暴力破解,指定密码本文件
┌──(kali㉿kali)-[~]
└─$ sudo john --wordlist=/tmp/mima.txt shadow
抓包
- 传输的各种数据,在网络中都是一个个的数据包
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump
# -i:指定抓取哪块网卡进入的数据包
# -A:转换为ASCII码,使得可读
# -w:抓包写入文件
# -r:从文件中读取抓包信息
# 抓包时可以过滤要抓哪些包
# 使用host过滤主机,使用net过滤网段,使用port过滤端口... ...
# 1. 抓包:抓取eth0上进出的、与192.168.88.11有关的、涉及TCP21端口的数据包。以下命令执行后,打开新终端。
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -i eth0 -A host 192.168.88.11 and tcp port 21
# 2. 在新终端登陆ftp
┌──(kali㉿kali)-[~]
└─$ ftp 192.168.88.11
Connected to 192.168.88.11.
220 (vsFTPd 3.0.2)
Name (192.168.88.11:kali): tom # 用户名
331 Please specify the password.
Password:abc123 # 此处是tom的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit # 退出
221 Goodbye.
# 3.在tcpdump终端可以看到明文的用户名和密码
# 1. 将抓到的包存入文件ftp.cap
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -i eth0 -A -w ftp.cap host 192.168.88.11 and tcp port 21
# 2. 在另一个终端访问ftp
# 在新终端登陆ftp
┌──(kali㉿kali)-[~]
└─$ ftp 192.168.88.11
Connected to 192.168.88.11.
220 (vsFTPd 3.0.2)
Name (192.168.88.11:kali): tom # 用户名
331 Please specify the password.
Password:abc123 # 此处是tom的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit # 退出
221 Goodbye.
# 3. 在抓包终端ctrl+c停止
# 4. 读取抓到的包,并过滤
┌──(kali㉿kali)-[~]
└─$ tcpdump -A -r ftp.cap | egrep 'USER|PASS'
- 图形工具:wireshark
[root@zzgrhel8 ~]# yum install wireshark ftp
选择抓哪块网卡进出的数据,然后点左上角的开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yal95GRI-1682339945386)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211012165723032.png)]
抓到包后,点击左上角同样位置停止,查看数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7T8d55AU-1682339945387)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211012165852292.png)]
安全加固
nginx安全
- 安装启服务
[root@node1 lnmp_soft]# yum install -y gcc pcre-devel zlib-devel
[root@node1 lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@node1 lnmp_soft]# cd nginx-1.12.2/
[root@node1 nginx-1.12.2]# ./configure && make && make install
[root@node1 ~]# /usr/local/nginx/sbin/nginx
- 访问不存在的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAUvC1qS-1682339945387)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211012172841856.png)]
- 命令行访问:
[root@node1 ~]# curl -I http://192.168.88.11/ # -I 只显示头部
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 10 Dec 2021 07:51:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 10 Dec 2021 07:46:16 GMT
Connection: keep-alive
ETag: "61b305c8-264"
Accept-Ranges: bytes
- 隐藏版本信息
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
... ...
17 http {
18 server_tokens off;
... ...
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
再次访问不存在的路径,版本号消失
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkEV9fHV-1682339945387)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211012173446335.png)]
- 防止DOS、DDOS攻击
- DDOS:分布式拒绝服务
# 压力测试,每批次发送100个请求给web服务器,一共发200个
[root@zzgrhel8 ~]# yum install -y httpd-tools
[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.88.11/
... ...
Benchmarking 192.168.88.11 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests # 发送200个请求完成
... ...
Complete requests: 200 # 完成了200个请求
Failed requests: 0 # 0个失败
... ...
- 配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
17 http {
18 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 添加
... ...
37 server {
38 listen 80;
39 server_name localhost;
40 limit_req zone=one burst=5; # 添加
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@node1 ~]# /usr/local/nginx/sbin/nginx -t // 检查语法
# 再次测试
[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.88.11/
... ...
Benchmarking 192.168.88.11 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests
... ...
Complete requests: 200
Failed requests: 194 # 失败了194个
... ...
附:取出nginx.conf中注释和空行以外的行
# -v是取反。^ *#表示开头有0到多个空格,然后是#。^$表示空行 [root@node1 ~]# egrep -v '^ *#|^$' /usr/local/nginx/conf/nginx.conf
防止缓冲区溢出
- 缓冲区溢出定义:程序企图在预分配的缓冲区之外写数据。
- 漏洞危害:用于更改程序执行流,控制函数返回值,执行任意代码。
# 配置nginx缓冲区大小,防止缓冲区溢出
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
... ...
17 http {
18 client_body_buffer_size 1k;
19 client_header_buffer_size 1k;
20 client_max_body_size 1k;
21 large_client_header_buffers 2 1k;
... ...
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload
Linux加固
- 设置tom账号,有效期为2022-1-1
# 查看tom的账号信息
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@node1 ~]# chage -E 2022-1-1 tom
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :1月 01, 2022
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
# 设置账号永不过期,注意-E后面是数字-1,不是字母l
[root@node1 ~]# chage -E -1 tom
[root@node1 ~]# chage -l tom
最近一次密码修改时间 :10月 12, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
# 对单个用户设置密码策略
[root@node1 ~]# chage -m 1 -M 90 -W 7 -I 15 tom
m(MIN_DAYS) M(MAX_DAYS) W(WARN_AGE) I(宽限期)
# 设置新建用户的密码策略
[root@node1 ~]# vim /etc/login.defs
25 PASS_MAX_DAYS 99999 # 密码永不过期,设置最长有效期
26 PASS_MIN_DAYS 0 # 密码最短使用时间,0表示随时可改密码
27 PASS_MIN_LEN 5 # 密码最短长度
28 PASS_WARN_AGE 7 # 密码过期前7天发警告
33 UID_MIN 1000 # 新建用户最小的UID
34 UID_MAX 60000 # 新建用户最大的UID
- 用户安全设置
# 锁定tom账号
[root@node1 ~]# passwd -l tom // l(lock)
锁定用户 tom 的密码 。
passwd: 操作成功
[root@node1 ~]# passwd -S tom # 查看状态
tom LK 2021-10-12 0 99999 7 -1 (密码已被锁定。)
# 解锁tom账号
[root@node1 ~]# passwd -u tom // u(unlock)
解锁用户 tom 的密码。
passwd: 操作成功
[root@node1 ~]# passwd -S tom
tom PS 2021-10-12 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
- 保护文件
# 查看文件的特殊属性
[root@node1 ~]# lsattr /etc/passwd
---------------- /etc/passwd # 没有特殊属性
# 修改属性
chattr +i 文件 # 不允许对文件做任何操作,只能看
chattr -i 文件 # 去除i属性
chattr +a 文件 # 文件只允许追加
chattr -a 文件 # 去除a属性
[root@node1 ~]# chattr +i /etc/passwd // i(immunity:免疫)
[root@node1 ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@node1 ~]# useradd zhangsan
useradd:无法打开 /etc/passwd
[root@node1 ~]# rm -f /etc/passwd
rm: 无法删除"/etc/passwd": 不允许的操作
[root@node1 ~]# chattr -i /etc/passwd
[root@node1 ~]# rm -f /etc/passwd # 可以删除
[root@node1 ~]# ls /etc/passwd
ls: 无法访问/etc/passwd: 没有那个文件或目录
# 恢复passwd文件
[root@node1 ~]# cp /etc/passwd- /etc/passwd
# 追加
[root@node1 ~]# chattr +a /etc/hosts
[root@node1 ~]# echo '192.168.88.11 node1' >> /etc/hosts
[root@node1 ~]# rm -f /etc/hosts
rm: 无法删除"/etc/hosts": 不允许的操作
day05
iptables
- iptables有多种功能,每一种功能都用一张表来实现
- 最常用的功能是防火墙和NAT
- 从RHEL7开始,默认的防火墙为firewalld,但是它的底层仍然调用iptables
- 安装iptables服务
# 关闭firewalld
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
# 安装iptables
[root@node1 ~]# yum install -y iptables-services.x86_64
- iptables的表和链。我们只关心nat表和filter表。filter表是默认的表,它实现防火墙,也就是包过滤的功能。nat表实现网络地址转换。mangle表实现包标记(着色)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RxCAaxTZ-1682339945388)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211013113027470.png)]
防火墙filter表
- 配置iptables时,不指定表,就是使用filter表
- 配置时不指定规则链,则配置所有链
- 可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则
- 命令选项、链名、目标操作使用大写字母,其他小写
filter中的三条链
- INPUT:数据包的目标地址是自己,则进入INPUT链
- OUTPUT:数据包的源地址是自己,则进入OUTPUT链
- FORWARD:数据包穿过自己,则进入FORWARD链
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkZcauQS-1682339945388)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20211013114152960.png)]
环境准备
- client1:eth0 -> 192.168.88.10/24 网关:192.168.88.11
- node1:eth0 -> 192.168.88.11/24,eth1 -> 192.168.99.11/24
- server1:eth1 -> 192.168.99.100/24 网关:192.168.99.11
# 在node1上停掉防火墙,安装iptables
[root@node1 ~]# systmctl stop firewalld
[root@node1 ~]# yum install -y iptables-services.x86_64
iptables操作
常用选项:
-A 追加规则-->iptables -A INPUT
-D 删除规则-->iptables -D INPUT 1(编号)
-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
通用参数:
-p 协议 例:iptables -A INPUT -p tcp
-s 源地址 例:iptables -A INPUT -s 192.168.1.1
-d 目的地址 例:iptables -A INPUT -d 192.168.12.1
--sport 源端口 例:iptables -A INPUT -p tcp --sport 22
--dport 目的端口 例:iptables -A INPUT -p tcp --dport 22
-i 指定入口网卡 例:iptables -A INPUT -i eth0
-o 指定出口网卡 例:iptables -A FORWARD -o eth0
-j 指定要进行的处理动作
常用的ACTION:
DROP:丢弃
REJECT:明示拒绝
ACCEPT:接受
# 查看filter表中的规则。-t指定表名
[root@node1 ~]# iptables -t filter -L # 所有规则链都是空的
Chain INPUT (policy ACCEPT) # INPUT链默认规则是接受
target prot opt source destination
Chain FORWARD (policy ACCEPT) # FORWARD链默认规则是接受
target prot opt source destination
Chain OUTPUT (policy ACCEPT) # OUTPUT链默认规则是接受
target prot opt source destination
[root@node1 ~]# iptables -L # 不指定表名,默认操作filter表
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
# 起动服务时,iptables将会出现一些默认规则
[root@node1 ~]# systemctl start iptables.service
[root@node1 ~]# iptables -L
# 默认规则往往不合我们的要求,可以先将所有的规则清空
[root@node1 ~]# iptables -F
- iptables的语法
iptables [-t 表名] 选项 [链名] [条件] [-j 满足条件的操作]
- 示例
- 可以设置默认拒绝,然后明确允许
- 也可以设置默认允许,然后明确拒绝
# 向INPUT链追加规则,192.168.88.254发来的包全部接受
# -A是追加,-s是匹配源地址,-j为jump,采取的行为,ACCEPT是接受
[root@node1 ~]# iptables -A INPUT -s 192.168.88.254 -j ACCEPT
# 将INPUT链的默认规则改为DROP丢弃。-P设置默认规则
[root@node1 ~]# iptables -P INPUT DROP
# 查看INPUT链的规则
[root@node1 ~]# iptables -L INPUT
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.88.254 anywhere
# 在192.168.88.10上访问node1,将会被拒绝
[root@client1 ~]# ping -c2 192.168.88.11
[root@client1 ~]# ssh 192.168.88.11
# 注意,数据通信多数是双向的。现在node1也不能与192.168.88.254以外的其他机器通信,因为数据回不来。
[root@node1 ~]# ping -c2 192.168.88.10 # 失败
# 允许node1能ssh访问client
[root@node1 ~]# ssh 192.168.88.10 //失败,是因为node1在ssh远程控制client时,22端口的数据被放行,但随机端口数据未被放行
node1(88.11) ---------> client(88.10)
-s:88.11 -sport:25535(>1024的随机端口) -s:88.11 -sport:22
-d:88.10 -dport:22 -d:88.10 -dport:25535(同上)
[root@node1 ~]# iptables -I INPUT 1 -s 192.168.88.0/24 -p tcp --sport 22 -j ACCEPT // 此规则为放行ssh源端口来的数据包
# 允许192.168.88.0网络的主机ssh连接node1
# -I是插入到INPUT链的第1个位置。-p指定协议,--dport指定目标端口号。-j是执行的操作
[root@node1 ~]# iptables -I INPUT 1 -s 192.168.88.0/24 -p tcp --dport 22 -j ACCEPT
至此,node1和client可以相互进行ssh访问了.
# 查看规则
[root@node1 ~]# iptables -L INPUT
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.88.0/24 anywhere tcp dpt:ssh
ACCEPT all -- 192.168.88.254 anywhere
# 查看规则,n是指用数字来表示端口号、主机等
[root@node1 ~]# iptables -nL INPUT
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 192.168.88.254 0.0.0.0/0
# 测试,192.168.88.10已经可以ssh到node1,但是ping不通,因为只允许了ssh
# 如果ssh控制太慢,则在配置文件最后追加一条内容:UseDNS no
[root@node1 ~]# vim /etc/ssh/sshd_config
UseDNS no
# 配置任何地址访问node1的80端口,即http协议,都接受
[root@node1 ~]# yum install -y httpd
安装会卡住,因为node1使用的是ftp共享的网络yum,规则未放行该端口数据,需添加一条规则,放行192.168.88.240来的数据包(或者单独放行ftp的20/21端口也可)
[root@node1 ~]# iptables -A INPUT -s 192.168.88.240 -j ACCEPT
[root@node1 ~]# systemctl start httpd
# 不指定源,就是任何源
[root@node1 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@node1 ~]# iptables -nL INPUT
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 192.168.88.254 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
# 拒绝192.168.88.254 ping node1。以下写法不会生效,因为插入到了规则尾部,在它上面已经存在允许192.168.88.254通信的规则了。(从上往下,逐条匹配,匹配即停止)
# icmp就是ping命令底层用到的协议,叫Internet控制消息协议
[root@node1 ~]# iptables -A INPUT -s 192.168.88.254 -p icmp -j REJECT
[root@node1 ~]# iptables -nL INPUT
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 192.168.88.254 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
REJECT icmp -- 192.168.88.254 0.0.0.0/0 reject-with icmp-port-unreachable
# 查看规则的行号
[root@node1 ~]# iptables -nL INPUT --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 192.168.88.254 0.0.0.0/0
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4 REJECT icmp -- 192.168.88.254 0.0.0.0/0 reject-with icmp-port-unreachable
# 删除第4条规则
[root@node1 ~]# iptables -D INPUT 4
[root@node1 ~]# iptables -nL INPUT --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 192.168.88.254 0.0.0.0/0
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
# 拒绝192.168.88.254 ping node1。-I不指定位置,默认插到最上面
[root@node1 ~]# iptables -I INPUT -s 192.168.88.254 -p icmp -j REJECT
[root@node1 ~]# iptables -nL INPUT --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 REJECT icmp -- 192.168.88.254 0.0.0.0/0 reject-with icmp-port-unreachable
2 ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 tcp dpt:22
3 ACCEPT all -- 192.168.88.254 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
# DROP是直接丢弃,REJECT是明确拒绝。
# 保存规则。不保存规则,重启iptables服务,自定义规则将消失
[root@node1 ~]# iptables-save > /etc/sysconfig/iptables
验证FORWARD链
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYA3N31D-1682339945388)(/root/下载/NSD2302笔记资料(整理)/第二阶段/nsd2210/imgs/image-20220611105539717.png)]
准备环境
# 为node1的eth1配置ip地址
[root@node1 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.11/24
[root@node1 ~]# nmcli connection down eth1
[root@node1 ~]# nmcli connection up eth1
# 配置server1
[root@localhost ~]# hostnamectl set-hostname server1
[root@localhost ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.100/24
[root@localhost ~]# nmcli connection down eth1
[root@localhost ~]# nmcli connection up eth1
[root@localhost ~]# echo a | passwd --stdin root
为192.168.88.10和192.168.99.100配置网关
[root@client1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.88.11
[root@client1 ~]# ifdown eth0; ifup eth0
[root@server1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.99.11
[root@server1 ~]# ifdown eth1; ifup eth1
# 在中间节点node1上打开路由转发功能
[root@node1 ~]# sysctl -a | grep ip_forward
[root@node1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@node1 ~]# sysctl -p
# client和server已经可以通信
[root@client1 ~]# ping -c2 192.168.99.100
- 在server1上安装httpd服务
[root@server1 ~]# yum install -y httpd
[root@server1 ~]# systemctl start httpd
# 在客户端访问web服务,可以访问
[root@client1 ~]# curl http://192.168.99.100/
配置FORWARD链
- 要求:在node1上配置防火墙,保护server1
- 默认拒绝所有数据包通过
- 从server1所在网段发往client1所在网段的包全部允许
- 从client1所在网段到server1所在网段,允许icmp,允许22、80、443端口通过
# 默认拒绝所有数据包通过,此时client1和server1完全不通
[root@node1 ~]# iptables -P FORWARD DROP
# 源地址是192.168.99.0/24,目标地址是192.168.88.0/24的包,放行
[root@node1 ~]# iptables -A FORWARD -s 192.168.99.0/24 -d 192.168.88.0/24 -j ACCEPT
# 从client1到server1,允许icmp
[root@node1 ~]# iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p icmp -j ACCEPT
# client1和server1已经可以ping通了
[root@client1 ~]# ping -c2 192.168.99.100
# 允许从client1访问server1的22、80、443,100-120端口范围
# -m是引入扩展模块,multiport多端口
[root@node1 ~]# iptables -A FORWARD -p tcp -m multiport --dport 22,80,443,100:120 -s 192.168.88.0/24 -j ACCEPT
# 现在从client1到server1的ssh、http都可以放行了
[root@client1 ~]# ssh 192.168.99.100
[root@client1 ~]# curl http://192.168.99.100/
# 设置三次握手建立连接规则
[root@node1 ~]# iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -m state --state ESTABLISHED -j ACCEPT
[root@node1 ~]# iptables -nL FORWARD
target prot opt source destination
ACCEPT tcp -- 192.168.88.0/24 0.0.0.0/0 multiport dports 22,80,443,100:120
ACCEPT all -- 192.168.99.0/24 192.168.88.0/24
ACCEPT icmp -- 192.168.88.0/24 192.168.99.0/24
ACCEPT all -- 192.168.88.0/24 192.168.99.0/24 state ESTABLISHED
# 现在从server1到client1的ssh、http都可以放行了
# 拒绝192.168.88.10-192.168.88.20访问192.168.99.50-192.168.99.150
# -m是引入扩展模块,src-range是源地址范围,dst-range目标地址范围
[root@node1 ~]# iptables -I FORWARD -m iprange --src-range 192.168.88.10-192.168.88.20 --dst-range 192.168.99.50-192.168.99.150 -j REJECT
NAT
-
NAT:网络地址翻译、网络地址转换
-
NAT技术产生,主要是解决IPV4地址不够用。
-
NAT一般用于将私有地址转成全球唯一的公有地址。
-
私有地址:
- A类:10.x.x.x
- B类:172.16.x.x-172.31.x.x
- C类:192.168.x.x
-
私有地址,如果需要访问互联网中的公有地址,进行上网,可以通过NAT技术,将私有地址转成公有地址,再访问外界。
配置SNAT
- 现在的实验环境,client1可以访问server1,server1看到的是客户端地址是client1的地址。
# 跟踪httpd日志的尾部
[root@server1 ~]# tail -f /var/log/httpd/access_log
# 在client上访问server1的web服务
[root@client1 ~]# curl http://192.168.99.100/
# 查看服务器终端的日志,将会显示client1的地址192.168.88.10访问了它
192.168.88.10 - - [13/Oct/2021:17:31:35 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"
-
互联网环境下,运营商不允许私有地址出现在互联网上,发现有这样的数据,就直接丢弃。所以,私有地址发往互联网时,需要用NAT转换成公有地址,也叫合法地址。
-
在我们的练习环境下,在node1上配置NAT,当client1访问server1时,将client1的地址转换成server1的192.168.99.x再发给server1。因为数据包的源地址改变了,所以叫SNAT,S即Source。
# 向nat表中的POSTROUTING链添加规则。将源地址192.168.88.0/24转换成它外网卡地址。
[root@node1 ~]# iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE
[root@node1 ~]# iptables -t nat -nL
# client1再次访问server1时,server1上的日志将会显示node1的192.168.99.11访问
[root@server1 ~]# tail -f /var/log/httpd/access_log
192.168.99.11 - - [13/Oct/2021:17:45:07 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"