为何cp覆盖进程的动态库(so)会导致coredump

Posted in Linux on 12月 17th, 2012 by 飘(piao2010) – Be the first to comment

接上一篇博客《 Linux共享库(so)动态加载和升级》留下的问题:为何cp覆盖进程(运行中的程序)的动态库(so)会导致coredump ?
之前的分析只是定位到cp覆盖so文件的时候由于不会改变inode号所以引发了悲剧,但本质原因并没有找到。于是开始查找学习Linux下动态链接的实现,以及神器 gdb的常用操作。恰好在搜索相关信息的时候发现了一篇关键 read more »

Linux共享库(so)动态加载和升级

Posted in Linux, code on 12月 1st, 2012 by 飘(piao2010) – Be the first to comment

学习Linux共享库动态加载缘于一个生产环境升级apache so文件常见错误操作:apache在运行中直接cp覆盖目标so文件,一段时间后错误日志里面出现关键词:Segmentation fault (段错误) ,一个个worker进程就这样渐渐退出,最后无法处理HTTP请求。
首先了解一下共享库的创建, read more »

Linux cp mv rm ln 命令对于 inode 和 dentry 的影响

Posted in Linux on 11月 30th, 2012 by 飘(piao2010) – Be the first to comment

在看《unix环境高级编程》文件系统一节的时候,发现自己对文件系统相关的概念不是很清晰。
首先介绍两个基本概念:
第一个重要概念 inode (中文名:索引节点),包含文件的大部分信息:
  * 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限
  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  * 链接数, read more »

关于jvm dns cache (域名缓存时间)

Posted in code on 7月 27th, 2012 by 飘(piao2010) – 5 Comments

最近手上的某java应用频繁因网络问题而出现故障,同时也抛出一个问题:JVM本身对DNS的缓存时间是多久?

对于非公司内部产品的疑问,第一反应Google之,大致有两种说法:
第1种:默认情况下networkaddress.cache.ttl=-1,代表永久缓存(配置文件路径: JAVA_HOME/jre/lib/security/java.security),就是在应用启动之后第一次DNS 解析成功的结果会一直cache到应用停止。显然 read more »

关于ARP、MAC、IP欺骗以及TCP劫持

Posted in Linux, 安全相关, 网络协议 on 5月 19th, 2012 by 飘(piao2010) – Be the first to comment

三个多月没更新博客,期间也有在学习和总结一些东西,只是或多或少都涉及到公司相关的信息(业务,JVM,WebServer)所以不便写出来,有时候写到一半发现又不太合适然后删除,很郁闷。之前一直比较关注web安全层面,如SQL注入XSSCSRF等等 ,然后HTTP协议层面,如HTTP Slowloris ,逐渐接触应用层以下(OSI七层模型)的东西,比如TCP SYN Flood相关。最近在学习ARP、MAC、IP欺骗, read more »

linux诡异的半连接(SYN_RECV)队列长度(一)

Posted in Linux, 安全相关, 网络协议 on 11月 19th, 2011 by 飘(piao2010) – 2 Comments

最近在学习TCP方面的基础知识,对于古老的SYN Flood也有了更多认识。SYN Flood利用的是TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
SYN Flood的原理简单,实现也不复杂,而且网上有许多现成的程序。

我在两台虚拟机上(虚拟机C攻击虚拟机S)做测试,S上跑了apache监听80端口,用C对S的80端口发送SYN Flood,在无任何防护的情况下攻击效果显著。用netstat可以看见80端口存在大量的半连接状态(SYN_RECV),用tcpdump抓包可以看见大量伪造IP发来的SYN连接,S也不断回复SYN+ACK给对方,可惜对方并不存在(如果存在则S会收到RST这样就失去效果了),所以会超时重传。
这个时候如果有正常客户A请求S的80端口,它的SYN包就被S丢弃了,因为半连接队列已经满了,达到攻击目的。 read more »

linux诡异的半连接(SYN_RECV)队列长度(二)

Posted in Linux, 安全相关, 网络协议 on 11月 20th, 2011 by 飘(piao2010) – 7 Comments

继续上回:我们已经确认了全连接队列的长度计算,接下来继续寻找半连接队列长度。
试着慢慢减小tcp_max_syn_backlog的值,但还是看不到半连接状态数量的变化。
实在没什么思路,只能Google之,搜出来的基本都是关于SYN Flood的文章,难道没同学关注过半连接队列的长度吗? read more »

关于linux文件时间属性(atime mtime ctime)

Posted in Linux on 1月 16th, 2012 by 飘(piao2010) – Be the first to comment

前阵子和两个朋友在吃饭时无意中提到了linux系统是否有文件创建时间,因为之前遇到过这个问题,查过一些资料,所以我说linux是没有文件创建时间的。关于文件的时间属性可以查一下stat系统调用:man 2 stat read more »

2012年个人总结

Posted in 生活琐碎 on 2月 26th, 2013 by 飘(piao2010) – Be the first to comment

2012年工作强度大了许多,各种项目+凌晨演习,特别是大促前期的准备,经常和交易线的同学在凌晨奋战,支撑11.11的交易峰值无疑对各个系统和角色都是巨大挑战,当然作为一个技术小二可以在这样的浪潮之巅体验一回也是很幸运的。这一年主要还是在于技术上的积累(符合11年总结里所期望的):
1. JVM troubleshooting:因为自己负责的多数是交易核心应用,练手的机会并不多(多的话说明应用系统的稳定性有问题,那就麻烦大了),幸运的是仅有几次OOM机会都把握住了: read more »

无觅相关文章插件,快速提升流量