updateknockd(解决动态IP防火墙设定)
updatesmokeping(网络质量监控)
updatevagrant(虚拟机外挂)TCPcopy这个神器,貌似很多人都还在用着ab模拟测压力,TCPcopy能直接导入线上流量供上线前的风险测试。
下面对使用过的工具会简单进行功能及使用场景介绍,并提及一些所了解的工具。
统一帐号管理你还在自己写脚本批量增加机器的用户、分组和修改密码或者同步主机的/etc/passwd吗?你还在使用脚本批量对用户设置权限吗?如果有一台帐号主机能够提供所有服务器的帐号、密码、权限控制,如此一来,如果想要增加、修改、刪除用户,只要到这台服务器上面处理即可,这样是不是很方便?
1.LDAP
- 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows、Linux)认证,Linux系统sudo集成(限制用户的sudo权限以及使用sudo的主机),用户可主机登入限制等
- 可与Apache,HTTP,FTP,SAMBA,ZABBIX,Jenkins等集成实现多个平台用同一套帐号密码
- 支持密码策略定制(限制用户密码强度、密码过期时间、强制修改、超过验证错误次数锁定帐号)等支持插件式鉴别模块PAM
- 不同平台权限的设定、划分
2.jumpserver
一款国内开源的由python编写开源的跳板机(堡垒机)系统,能够实现操作审计(包括文本命令,实时、事后用户操作录像回放),利用ansible批量对机器进行操作。基于ssh协议来管理,客户端无需安装agent,能够让用户通过网页端或者shell操作有权限的机器。
自动化部署
1.Fabric
优点:
小巧,无需装agent,基于SSH,可以在本地、远程主机上运行所有的shell命令和python函数。主要提供运行本地、远程命令,上传、下载文件功能。适合用来写不常用、碎片化的工具
缺点:
内置模块较少,很多东西要自己编写命令实现。
2.Ansible
优点:
基于ssh实现,无需agent
日常部署需要的功能基本上有模块支持,比如git、打包解压、copy文件、yum安装等等都已经集成到了核心模块里面,alternatives、xattr等模块也有,当然,理论上所有操作都能用命令模块来完成。
缺点:
比较依赖网络的健壮性,网络不好的话经常会有失败的现象
运行ansible的主机需要能与远程主机ssh直连,不过可以用Proxycommand或者sshuttle来解决
其他的还有SaltStack、Puppet、Chef、func等。
DNS
1.dnsmasq
提供DNS缓存,DNS重定向、记录转发,DNS反向解析,DHCP服务功能,配置简单可以配置对上层DNS轮询请求记录
配置支持通配符,不用批量修改hosts
2.pdnsd
提供DNS缓存服务
设置向上级DNS请求方式(TCP、UDP,Both)
设置多个上级DNS并设置请求规则
配置缓存保留时间
3.namebenchGoogle
自行研发的一款DNS测速工具
压力测试
1.ApacheBench
创建多并发线程模拟多用户对URL访问进行压力测试
Apache中有个自带的,名为ab的程序,ab可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。
2.TCPcopy、UDPcopy
实时将TCP/UDP数据包copy到另一机器进行压力测试
提到压力测试,可能大多数人首先想到的就是ApacheBench,但ab是模拟访问,模拟毕竟是模拟,然而线上会遇到的错误可能往往无法预知,其实国内已经有人开发了一款线上流量copy的工具,就是TCPcopy、UDPcopy,能够之间copy线上流量到测试环境,大大减少了上线前的风险。支持设置copy流量倍数放大、缩小,修改流量的客户端IP源地址。
3.TCPburn
类似ApacheBench
tcpburn是由网易自主研发的能够模拟千万级别并发用户的一个软件,目的是能够用较少的资源来模拟出大量并发用户,并且能够更加真实地进行压力测试,以解决网络消息推送服务方面的压力测试的问题和传统压力测试的问题。
4.goreplay
用于对HTTP压力测试的实时流量复制
安全
1.PortSentry
对端口扫描的机器做防御策略
特点:
给出虚假的路由信息,把所有的信息流都重定向到一个不存在的主机;
自动将对服务器进行端口扫描的主机加到TCP-Wrappers的/etc/hosts.deny文件中
利用Netfilter机制、包过滤程序,比如iptables和ipchain等,把所有非法数据包(来自对服务器进行端口扫描的主机)都过滤掉;
通过syslog()函数给出一个目志消息,甚至可以返回给扫描者一段警告信息。
2.fail2ban
对SSH密码暴力破解的机器做防御策略
防御SSH服务器的暴力破解攻击,对安全性要求过高的服务器还是建议禁止密码登入,使用密钥或者密钥+密码验证。
3.GoogleAuthenticator
可以将第二部验证设置为通过短信或语音电话接收验证码,同时也支持Android、iPhone或BlackBerry设备来生成验证码。
一款开源的,可基于开放规则(如HMAP/基于时间)生成一次性密码的软件。Google公司同时也支持插件式鉴别模块PAM,使其能和其他也适用PAM进行验证的工具(如OpenSSH)协同工作。
4.knockd
害怕服务器被入侵,但是奈何经常在不同的地方登入或者登入的IP经常变动?knock一下吧。在服务器端设置只有你知道的“暗语”来让服务器给你芝麻开门。
knockd可以让server监听特定的端口,如果client按指定的顺序及协议(TCP/UDP)访问server指定端口,则运行指定命令,于是大家就可以用它来做一些有趣的事,比如利用IPTABLES动态增加防火墙等等。另外,knockclient也可以用来模拟发包探测网络连通性。比如不确定本机到对端的某个端口是否可通,可以在远程用tcpdump监听对应端口,然后用knock客户端模拟发包。
虚拟化
1.vagrant
每次用想要新建一个虚拟机是不是都得设置虚拟机名称?设置虚拟机类型、版本、选择镜像、内存大小、虚拟机CPU核心数量、设备等一堆东西,然后还要装系统balabala..
然而偶只需要在终端下面输入一条vagrantupmachine就能新建一个预配置好的虚拟机哦,实为自己测试和给开发人员创建统一编程环境的一个好选择
支持快速新建虚拟机
支持快速设置端口转发
支持自定义镜像打包(原始镜像方式、增量补丁方式)
…基本上日常能用到的基础配置都能快速设置
支持开机启动自动运行命令
可以自己写扩展
2.docker
每次搭建一套新环境是不是很麻烦?有两个不同程序依赖于同一环境的不同版本怎么办?在程序里指定绝对路径?做软链接?docker帮你解决了这个烦恼,镜像打包好之后推送到register之后再到对应机器上pull下来,放上代码,done..
日志采集
1.ELKStack
平常大家可能需要对一些日志进行分析、报警,比如nginx日志,大家想要统计http请求响应码的数量、统计请求IP的地域分布,对请求体的关键字及时报警等等。使用ELK能够很容易地做到上述事情,还能结合zabbix等工具进行报警。
监控
1.smokeping
IDC选址很头疼吧,不知道某一节点网络质量怎样,不相信供应商给的数据?试试smokeping吧,能够测试某地、多地到某一节点的质量情况(包括丢包率,速率)