Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在Istio中,到底怎么获取 Envoy 访问日志?

在Istio中,到底怎么获取 Envoy 访问日志?

作者头像
万猫学社
发布于 2022-12-01 08:06:55
发布于 2022-12-01 08:06:55
1K00
代码可运行
举报
运行总次数:0
代码可运行

Envoy 访问日志记录了通过 Envoy 进行请求 / 响应交互的相关记录,可以方便地了解具体通信过程和调试定位问题。

环境准备

部署 httpbin 服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f samples/httpbin/httpbin.yaml

部署 sleep 服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f samples/sleep/sleep.yaml 

httpbin 服务作为接收请求的服务端, sleep 服务作为发送请求的客户端。

还需要开启 Envoy 访问日志,执行以下命令修改 istio 配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl -n istio-system edit configmap istio

编辑yaml文件的对应配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data:
  mesh: |-
    accessLogEncoding: JSON
    accessLogFile: /dev/stdout

其中,accessLogEncoding表示 accesslog 输出格式,Istio 预定义了 TEXTJSON 两种日志输出格式。默认使用 TEXT,通常改成 JSON 以提升可读性;accessLogFile:表示 accesslog 输出位置,通常指定到 /dev/stdout (标准输出),以便使用 kubectl logs 来查看日志。

保证yaml文件后,配置随即生效。

测试访问日志

sleep 服务中向 httpbin 服务发出请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export SLEEP_POD=$(kubectl get pods -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- curl -sS http://httpbin:8000/headers

返回结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin:8000", 
    "User-Agent": "curl/7.81.0-DEV", 
    "X-B3-Parentspanid": "ed0178f3e1f48dd1", 
    "X-B3-Sampled": "0", 
    "X-B3-Spanid": "6c38b689ee5ab0c8", 
    "X-B3-Traceid": "f17ce19c174cae85ed0178f3e1f48dd1", 
    "X-Envoy-Attempt-Count": "1", 
    "X-Forwarded-Client-Cert": "......"
  }
}

执行以下命令,查看sleep 服务的Envoy日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl logs -l app=sleep -c istio-proxy

可以看到sleep服务对httpbin服务的调用的日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
     "authority": "httpbin:8000",
     "bytes_received": ,
     "bytes_sent": ,
     "connection_termination_details": null,
     "downstream_local_address": "172.24.146.239:8000",
     "downstream_remote_address": "172.24.158.25:49350",
     "duration": ,
     "method": "GET",
     "path": "/headers",
     "protocol": "HTTP/1.1",
     "request_id": "ea40d320-348f-4f58-86d4-da157b0e0cca",
     "requested_server_name": null,
     "response_code": ,
     "response_code_details": "via_upstream",
     "response_flags": "-",
     "route_name": "default",
     "start_time": "2022-07-04T10:00:09.401Z",
     "upstream_cluster": "outbound|8000||httpbin.istio-demo.svc.cluster.local",
     "upstream_host": "172.24.158.96:80",
     "upstream_local_address": "172.24.158.25:41812",
     "upstream_service_time": "2",
     "upstream_transport_failure_reason": null,
     "user_agent": "curl/7.81.0-DEV",
     "x_forwarded_for": null
}

执行以下命令,查看httpbin 服务的Envoy日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl logs -l app=httpbin -c istio-proxy

可以看到httpbin服务被sleep服务调用的Envoy日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
     "authority": "httpbin:8000",
     "bytes_received": ,
     "bytes_sent": ,
     "connection_termination_details": null,
     "downstream_local_address": "172.24.158.96:80",
     "downstream_remote_address": "172.24.158.25:41812",
     "duration": ,
     "method": "GET",
     "path": "/headers",
     "protocol": "HTTP/1.1",
     "request_id": "ea40d320-348f-4f58-86d4-da157b0e0cca",
     "requested_server_name": "outbound_.8000_._.httpbin.istio-demo.svc.cluster.local",
     "response_code": ,
     "response_code_details": "via_upstream",
     "response_flags": "-",
     "route_name": "default",
     "start_time": "2022-07-04T10:00:09.401Z",
     "upstream_cluster": "inbound|80||",
     "upstream_host": "172.24.158.96:80",
     "upstream_local_address": "127.0.0.6:33665",
     "upstream_service_time": "1",
     "upstream_transport_failure_reason": null,
     "user_agent": "curl/7.81.0-DEV",
     "x_forwarded_for": null
}

看到这么多参数,是不是有点懵逼?没关系接下来,我们详细看看!

刨析Envoy日志

清理

删除 httpbinsleep 服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl delete -f samples/httpbin/httpbin.yaml
kubectl delete -f samples/sleep/sleep.yaml 
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万猫学社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过DenyHosts阻止SSH暴力攻击教程
Denyhosts是一个Linux系统下阻止暴力破解SSH密码的软件,它的原理与DDoS Deflate类似,可以自动拒绝过多次数尝试SSH登录的IP地址,防止互联网上某些机器常年破解密码的行为,也可以防止黑客对SSH密码进行穷举。
空空裤兜
2023/03/03
7070
总结几个常用的系统安全设置(含DenyHosts)
1)禁止系统响应任何从外部/内部来的ping请求攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态 如果能够ping通 某个主机或者IP,那么攻击者就认为此系统处于活动状态,继而进行攻击或破坏。如果没有人能ping通机器并收到响应,那么就可以大大增强服务器的安全性, linux下可以执行如下设置,禁止ping请求: [root@localhost ~]# echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all
洗尽了浮华
2022/03/29
3.1K0
总结几个常用的系统安全设置(含DenyHosts)
CentOS7下使用DenyHosts阻止SSH暴力攻击
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能,以帮助阻止SSH 服务器攻击(也称为基于字典的攻击和暴力破解攻击)。
yuanfan2012
2021/07/16
1.9K0
DenyHosts 阻止SSH暴力攻击
首先sshd服务可以说是linux服务器一个至关重要的服务,如果被暴力破解成功,就直接可以拿到服务器的控制权了,在这里有两种解决方案,第一种是直接生成秘钥然后配置ssh服务无密码登录,然后在配置文件中禁用用户使用密码登录,这种方案相对来说比较安全,但配置有点麻烦啊......
胡齐
2019/09/23
2.1K0
DenyHosts 阻止SSH暴力攻击
linux使用DenyHosts阻止SSH服务器攻击(暴力破解)
DenyHosts 是一个开源且免费的基于日志的入侵防御安全程序. 它旨在通过阻止发起方来监视和分析 SSH 服务器日志中的无效登录尝试、基于字典的攻击和暴力攻击。IP 通过添加条目到地址 /etc/hosts.deny 服务器上的文件,并防止 IP 地址进行任何进一步的此类登录尝试。 如何在Linux中安装DenyHosts 默认情况下 DenyHosts Linux 系统中不包含该工具,使用以下yum 命令安装软件包。 # yum install -y denyhosts denyhosts配置文件说
入门笔记
2022/06/02
8790
CentOS服务器安全防护实例
可以限制瞬间连接数过大的恶意IP(比如web应用防护,但不适用于LVS+Keepalived集群环境) 防护指令如下
用户1685462
2021/07/17
1.1K0
使用DenyHosts防止ssh暴力破解
DenyHosts是用python2.3编写的一个程序,会分析/var/log/secure等文件,当发现同一个ip进行多次ssh登录失败时会将其写入/etc/hosts.dengy文件,达到屏蔽该ip的目的。
用户1685462
2021/09/06
1.5K0
使用DenyHosts保护服务器安全
在几个月前,笔者介绍了一种保护服务器安全的方法 自动禁止攻击IP登陆SSH,保护服务器安全。这种方法需要自己去动手写相应的脚本,今天要介绍的是开源的脚本实现。
zhangheng
2020/04/28
2.1K0
云服务器上ssh服务安全加固
今天到一个朋友的创业公司进行技术交流,交流过程中,朋友提到他在阿里云上买的linux服务器上ssh服务经常被人暴力破解。我感觉很奇怪,一般来说ssh服务经过简单设置是很安全的,怎么可能会出现这种情况呢。进一步交流才知道他们购买linux服务器后,连一些基本的安全措施都没做。原来并不是所有人都知道放在公网上的服务器是要进行简单的安全加固的。下面把我这些年使用linux时对ssh服务的安全加固步骤写下来,以便其它人参考。(以下的命令脚本基于CentOS6,其它发行版类似) 使用普通用户密钥文件登录 直接使用ro
jeremyxu
2018/05/10
7.6K0
DenyHosts防御ssh暴力破解
前段时间博客刚上线不久,ssh服务就被暴力破解了十几万次,文章也被各种扫描器,爬虫血洗过了,也是醉了......wordpress又没多少重要的数据,我们大农夫现在都这么招仇恨嘛......
用户1467662
2018/07/26
1.5K0
DenyHosts防御ssh暴力破解
Linux SSH密码暴力破解技术及攻防实战
对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是 Secure Shell的缩写,由IETF的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Iri
FB客服
2018/02/24
9.8K0
Linux SSH密码暴力破解技术及攻防实战
CentOS配置denyhosts配置
denyhosts是Python语言程序,借用tcp_wrapper程序来进行主机防护。作用:防止暴力破解服务器用户密码。 1、下载denyhosts wget -c http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz 2、解压 tar -zxvf DenyHosts-2.6.tar.gz 3、安装 cd DenyHosts-2.6 python setup.py install 4、相关配
用户1086810
2018/06/26
1.8K0
Linux的ssh被爆破的应急处理!
作者站在ICT项目集成角度,不定期更新ICT项目集成类文章,技术方向涉及数通、安防,安全、云计算等;管理方向涉及项目管理,经验分享,IT新闻等。致力于普及时下最新的、最实在、最艳的ICT项目集成干货,阿祥志愿和您共同成长。
ICT系统集成阿祥
2025/06/24
1390
Linux的ssh被爆破的应急处理!
系统安全之SSH入侵的检测与响应
作为系列文章的第一篇https://www.freebuf.com/es/193557.html 介绍了攻防系统的整个环境和搭建方法,按照这篇文章应该是可以把整个环境搭建完毕的.。在这篇文章中还介绍到了课程大纲包含主机安全、web安全、后门/木马等等,下面就让我们开始我们的实验课程。
FB客服
2019/03/08
3.9K0
系统安全之SSH入侵的检测与响应
ssh访问控制,多次失败登录即封掉IP,防止暴力破解
近期一直发现站内的流量和IP不太正常,读取/var/log/secure 很多失败的登录信息!必须要整个方法整死他们,虽然我已经把ssh port修改为了XXX(能告诉你吗?)!但是攻击还是不断,随即请教了铭哥大神。由于担心没有测试机,直接线上操作把自己也加入black list就不好了。找了很多资料,最终也成功了。分享给大家! 一、系统:Centos6.9 64位 二、方法:读取/var/log/secure,查找关键字 Failed,(#cat /var/log/secure | grep Failed
老七Linux
2018/05/09
5.5K1
CentOS7防ssh爆破脚本
说明: 当输入三次密码错误时,ip将记录到/etc/black.txt文件,自动将ip添加到/etc/hosts.deny文件里禁止登录,如取消限制,修改两个文件,删除指定ip即可。
院长技术
2021/02/19
1.3K0
VPS安全之SSH设置
SSH是管理VPS的重要途径,所以SSH经常会受到攻击,所以我们需要将SSH武装起来,保护我们VPS的安全。
老高的技术博客
2022/12/27
9320
Linux---CentOS-Ubuntu防爆破SSH脚本
CentOS 7方式 黑名单IP touch /etc/black.txt SSH 防爆破脚本 vim /etc/secure_ssh.sh #!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /etc/black.txt for i in `cat /etc/black.txt` do IP=`echo $i |awk -
院长技术
2021/02/19
1.3K0
利用tcp_wrapper实现SSH登录的IP访问控制
tcp_wrapper是一个工作在传输层、对于进出本机访问某特定服务的连接基于规则进行检查的一个访问控制工具,tcp wrapper只能对基于tcp协议的服务作访问控制,但并不是所有基于tcp协议的服务都能实现用tcp wraper作访问控制
yuanfan2012
2019/08/29
1.7K0
利用tcp_wrapper实现SSH登录的IP访问控制
ssh远程连接失败_ssh connect to host port 22
不少人在ssh连接远程机器时遇到过ssh_exchange_identification: Connection closed by remote host的问题,在网上找了一堆教程试了都不行,博主总结了常见的几种解决方法(以Ubuntu18.04为例)。
全栈程序员站长
2022/09/27
4.2K0
相关推荐
通过DenyHosts阻止SSH暴力攻击教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验