重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
利用TTL起始值判断操作系统,不同类型的操作系统都有默认的TTL值(简陋扫描,仅作参考)
屯昌ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
TTL起始值:Windows xp(及在此版本之前的windows) 128 (广域网中TTL为65-128)
Linux/Unix64(广域网中TTL为1-64)
某些Unix:255
网关:255
使用python脚本进行TTL其实质判断
使用nmap识别操作系统:nmap -O 192.168.45.129 #参数-O表示扫描操作系统信息,nmap基于签名,指纹,特征,CPE编号等方法去判断目标系统的信息
CPE:国际标准化组织,制定了一套标准,将各种设备,操作系统等进行CPE编号,通过编号可以查询到目标系统
使用xprobe2进行操作系统识别,专门用来识别目标操作系统:xprobe2 192.168.45.129,但结果并不是很精确
被动操作系统识别:不主动向目标主机发数据包,基于网络监听原理
通过抓包分析,被动扫描,使用kali中的p0f工具进行网络监听
p0f:p0f是一种被动指纹识别工具,可以识别您连接的机器,连接到您的盒子的机器,甚至连接在盒子附近的机器,即使该设备位于数据包防火墙后面。
p0f的使用:只要接收到数据包就可以根据数据包判断其信息,首先输入p0f,然后在浏览器里面输入目标系统的网址,便会获得目标系统的信息
或者使用p0f结合ARP地址欺骗识别全网OS
snmp扫描:简单网络管理协议,明文传输,使用网络嗅探也可获取到信息
SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
snmp的基本思想是为不同种类、不同厂家、不同型号的设备定义一个统一的接口和协议,使管理员可以通过统一的外观面对这些需要管理的网管设备进行管理,提高网管管理的效率,简化网络管理员的工作。snmp设计在TCP/IP协议族上,基于TCP/IP协议工作,对网络中支持snmp协议的设备进行管理。
在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为管理站,负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。如下图
管理站与代理端通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操作。
已有的设备,只要新加一个SNMP模块就可以实现网络支持。旧的带扩展槽的设备,只要插入SNMP模块插卡即可支持网络管理。网络上的许多设备,路由器、交换机等,都可以通过添加一个SNMP网管模块而增加网管功能。服务器可以通过运行一个网管进程实现。其他服务级的产品也可以通过网管模块实现网络管理,如Oracle、WebLogic都有SNMP进程,运行后就可以通过管理站对这些系统级服务进行管理。
使用UDP161端口(服务端),162端口(客户端),可以监控网络交换机,防火墙,服务器等设备
可以查看到很多的信息,但经常会被错误配置,snmp里面
有一些默认的Community,分别是Public/private/manager
如果目标的community是public,那么就可以发送SNMP的查询指令,对IP地址进行查询
在kali中存在对snmp扫描的工具,为onesixtyone
在Windows XP系统安装SNMP协议:
1,在运行框输入appwiz.cpl
2,找到管理和监控工具,双击
3,两个都勾选,然后点OK
使用onesixtyone对目标系统进行查询:命令为:onesixtyone 192.168.45.132 public
onesixtyone -c 字典文件 -I 主机 -o 倒入到的文件 -w 100
onesixtyone默认的字典在:/usr/share/doc/onesixtyone/dict.txt
使用snmpwalk查找目标系统的SNMP信息:snmpwalk 192.168.45.129 -c public -b 2c
snmpcheck -t 192.168.45.129
snmpcheck -t 192.168.45.129 -w 参数-w检测是不是有可写权限
SMB协议扫描:server message block,微软历史上出现安全问题最多的协议,在Windows系统上默认开发,实现文件共享
在Windows系统下管理员的Sid=500,
SMB扫描:nmap -v -p 139,445 192.168.45.132 --open 参数-v表示显示详细信息,参数--open表示显示打开的端口
nmap 192.168.45.132 -p 139,445 --script=smb-os-discovery.nse
smb-os-discovery.nse:这个脚本会基于SMB协议去判别操作系统,主机名,域名,工作组和当前的时间
nmap -v -P 139,445 --script=smb-check-vulns --script-args=unsafe=1 192.168.45.132
脚本smb-check-vulns:检查已知的SMB重大的漏洞
后面给脚本定义参数 --script-args=unsafe=1,unsafe可能会对系统有伤害,导致宕机,但要比safe准确
nbtscan -r 192.168.45.0/24参数-r使用本地137端口进行扫描,兼容性较好,可以扫描一些老版本的Windows
nbtscan可以扫描同一局域网不同的网段,对于局域网扫描大有裨益
enum4linux -a 192.168.45.132 :
SMTP扫描:目的在于发现目标系统的邮件账号
使用nc -nv 192.168.45.132 25
VRFY root :确定是不是有root用户
nmap扫描SMTP服务:
nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enum-
users.methods={VRFY}
脚本smtp-enum-users.nse用于发现远程系统上所有user的账户
nmap smtp.163.com -p25 --script=smtp-open-relay.nse,如果邮件服务器打开了open-relay功能,那么黑客可以拿管理员的邮箱去发送钓鱼邮件
防火墙识别:通过检查回包,可能识别端口是否经过防火墙过滤
设备多种多样,结果存在一定的误差
第一种情况:攻击机向防火墙发送SYN数据包,防火墙没有给攻击机回复,攻击机再发送ACK数据包,若防火墙返回RST数据包,那么证明该端口被防火墙过滤
第二种类似
第三种:攻击机向防火墙发送SYN数据包,防火墙返回SYN+ACK或者SYN+RST数据包,攻击者再发送ACK数据包,若防火墙返回RST数据包,那么就可以证明防火墙对于该端口没被过滤.unfiltered=open
第四种情况类似,证明该端口是关闭的,或者防火墙不允许其他用户访问该端口
使用python脚本去判定:
使用nmap去进行防火墙识别:nmap有系列防火墙过滤检测功能
nmap -sA 192.168.45.129 -p 22 参数-sA表示向目标主机发送ACK数据包,参数-sS表示向目标发送SYN数据包,通过抓包分析收到的数据包判断是否有防火墙检测功能
负载均衡识别:负载均衡可以跟为广域网负载均衡和服务器负载均衡
在kali中使用lbd命令用于识别负载均衡机制
格式:lbd +域名/IP地址,如lbd
WAF识别:WEB应用防火墙,在kali中最常用的waf检测扫描器
输入:wafw00f -l:可以检测出这个工具可以检测到的waf类别
探测微软公司的WAF:wafw00f
使用nmap中的脚本去扫描目标网站使用的waf信息:nmap --script=http-waf-detect.nse
脚本详情:
nmap补充:
参数:-iL:把IP地址做成文件,使用该参数扫描这个文件里面的IP! nmap -iL ip.txt
-iR:随机选取目标进行扫描,后面跟需要扫描的主机个数,例:nmap -iR 20 -p 22:随机扫描20个主机的22号端口,默认发送SYN数据包
参数-sn表示不做端口扫描
参数-Pn表示跳过主机发现,扫描所有在线的主机,扫防火墙帮助很大
参数p0表示进行IP协议ping
参数-n/-R表示不进行DNS解析
参数--dns-servers表示指定一个DNS服务器去解析
参数--traceroute表示进行路由追踪
参数-sM表示发送ACK+FIN
参数-sF发送FIN数据包
参数-sV根据特征库匹配开放的服务,加上参数--version-intensity 后面加等级,0最小,9最完善
参数--script=脚本名
参数--script=arge.脚本.脚本名
参数--script-updatedb更新脚本
参数--script-help=脚本名 查看脚本的信息
参数-O检测操作系统类型
参数--scan-delay 表示每次探测间隔多长时间,后面个时间,如nmap 192.168.45.132 --scan-delay 10s :间隔十秒
参数-f表示设置MTU最大传输单元
参数-D表示伪造源地址,增加一些虚假的扫描IP,例:nmap -D 192.138.1.1,192.151.141.4 172.16.45.1 :扫描172.16.45.1主机,用这两个地址做干扰,防止被发现
参数-S表示伪造源地址,但要获取得到的IP地址,那么就得登陆到伪造的IP上
参数--proxies指定代理服务器
参数--spoof-mac欺骗mac地址 nmap 10.1.1.1 --spoof-mac=00:11:22:33:44:55
参数-6表示扫描IPv6
Linux是学习曲线比较陡峭的学科,刚开始学习有些难度 ,入门后就相对比较轻松了。学习Linux大部分做的是运维工程师或者云计算工程师。
运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%。嗯,向windows运维人员致敬。当然我们这篇文章不是说运维除了懂Linux,还要懂Windows,而是涉及运维的其他方方面面。
环境部署
一开始这个世界是开发的,然后才是运维的。
开发实现产品逻辑,将产品开发完成后,然后提交运维进行部署。此时允许就需要准备好部署环境,如部署在Linux服务器上,安装相应的软件,如Apache、Nginx、tomcat、JDK、PHP、MySQL等等。你不能只装了软件吧,还需要看看具体是哪个版本,java 7 和java 8 的差别还是有点的,php5和php7也有些语法不兼容。把软件都安装好了,就可以上线了?还是不行。还需要测试吧,那就还需要部署一套测试环境。有些时候,开发环境也是需要运维来部署的。
排错和调优
事情从来都没有一帆风顺的。
上线没多久,服务就502了,还不被老板骂死。尽管你有一肚子的委屈,我只是个运维,代码不是我写的,为什么要我来背这锅?!委屈归委屈,服务访问不了了,就是运维的事。尽快定位问题,解决问题才是王道。怎么来定位问题呢?最简单直接的办法就是看日志,看系统日志,看软件相关的日志,结合故障现象和经验,快速的进行定位和恢复。然后就是总结经验,吸取教训,写事故报告。OK,现在你知道,需要对系统环境需要进行一定的调优操作,不再做背锅侠。
相关技术: top, vmstat, iftop, awk, sed, sar, iostat, strace, ...
备份
做最好的计划,做最坏的打算。
前不久的gitlab删库事件的教训犹在眼前,丢失了几小时的数据,虽然大部分的备份策略都失效了,但还是挽救了几小时前的一个备份,才没有造成更大的数据丢失和公司损失。我们需要对设备进行备份冗余,需要对数据库进行备份及离线备份,需要对网站静态进行备份冗余,需要对机房进行备用,能做到双活,那是更好的啦。
相关技术: rsync, crontab, lvm快照, mysqldump, extrabackup, 完全备份, 差异备份, 增量备份, 离线异地备份, ...
高可用和集群
没有永垂不朽,我们不能保证硬件24小时在线,但需要保障服务24小时在线。
出现故障后,如果做好高可用和冗余,故障自动切换,移除故障节点,那样也就保障了服务的实时在线。在老板和用户不知情的情况下,悄么的把故障处理好的,KPI算是保住了,奖金也许就会有的吧。
相关技术: F5, Nginx, LVS, HA-proxy, MHA, Zookeeper, 各种其他分布式集群方案, ...
监控告警
运维工程师的第一次解放运动。
时刻担心网站挂掉,一年365天、每周7天、每天24小时,时刻保持精神高度紧张,就算你是神仙都会撑不住的。我们需要一个机器来监督其他的机器工作,我们需要解放我们自己。当有故障发生的时候,通过短信、微信、钉钉、邮件等等通知对应的运维工程师来处理,甚至是自动切换或摘除故障节点,然后我们离线对故障节点进行问题排查。
相关技术:Zabbix, Nagios, Cacti, Prometheus, open-falcon, Ganglia, sar, ...
安全和审计
狂奔在互联网的康庄大道上,不过有些人是在裸奔。
不安全的网络环境和服务器配置,无异于在网络世界裸奔,任何人都可以窥探你的隐私。你的应用是否做了SQL防注入?你的防火墙是否开启?是否还在用root+密码的方式登录服务器?网站开启了https么?是否对系统操作进行审计?
相关技术: iptables, firewalld, waf, auditd, 各服务的正确配置, ...
自动化和DevOps
运维工程师的第二次解放运动。
偷懒是社会进步的第一动力。聪明的我们怎么会让自己一直在重复枯燥的事情上浪费时间,装系统、部署环境、发版本、批量操作,把这一切交给程序去实现吧,我们需要的是享受生活。
相关技术: shell, python, go, rundeck, ansible, saltstack, puppet, chef, cobbler, fabric, ...
虚拟化和云服务
正在发生的一场运维革命。
这场革命的发起人是买书的亚马逊,这家伙希望卖一切可以卖的东西,包括自己闲置的服务器资源。现在国内的阿里云和腾讯云也发展得如日中天,他们几乎提供了运维所需要的一切,甚至可以让一个公司不再需要运维的岗位。你需要服务器,只需要几秒钟,就可以创建一台。你需要数据库集群,只需要鼠标点击几下,就可以开通。
相关技术:docker, Moby, kubernetes, Xen, CoreOS, Hyper-V, KVM, ...
pyInstaller是一款用于将pyhon程序打包成exe文件的工具,pyInstaller不是一个python的包, 只需要把pyInstaller的文件下载下来放到任意为止都可以,也就是说pyInstaller相当于独立出来专门干打包python的工具,这货是工具不是库,下面我来介绍pyInstaller安装方法
pyInstaller是一款用于将pyhon程序打包成exe文件的工具,pyInstaller不是一个python的包, 只需要把pyInstaller的文件下载下来放到任意为止都可以,也就是说pyInstaller相当于独立出来专门干打包python的工具,这货是工具不是库,也不是包…
1.下载安装pyinstaller,下载网址:去下载,然后解压到任意目录.(注意:在pyinstaller2.0之前的版本要是移动这个文件夹的话,需要改一些配置,不然pyinstaller会因为你的移动不能使用.这个和后面的配置环境有关.pyinstaller2.0的版本就没有限制.)
2.编译配置环境(以解压到F:盘为例子)
①, pyinstaller-2.0的方法:
打开cmd cd进入解压后的目录下的sorce下,即:cd F:pyinstaller-2.0source
运行 python ./waf configure build install
*(可能需要安装pywin32.下载并安装即可,重新运行命令即可)
②, pyinstaller-1.5
打开cmd cd进入pyinstaller解压目录,cd F:pyinstaller-1.5
运行 python Configure.py
*(可能需要安装pywin32.下载并安装即可,重新运行命令即可)
结果提示保存在config.dat文件中。其中config.dat文件存放在pyinstaller的根目录。
3. 将自己写的py程序打包exe
①, pyinstaller-2.0的方法:
将自己写的py文件(HelloWorld.py)拷贝到pyinstaller解压目录下,
打开cmd cd进入解压后的目录下,即:cd F:pyinstaller-2.0
运行命令 python pyinstaller.py [opts] yourprogram.py
在此处则是运行:python pyinstaller.py [opts] HelloWorld.py
在目录下会生成一个helloworld的文件夹,里面存放 HelloWorld.spec文件,;两个文件夹(dist,buildi),可以运行的exe则放在/dist/yourprogram下
②, pyinstaller-1.5
将自己写的py文件(HelloWorld.py)拷贝到pyinstaller解压目录下,
打开cmd cd进入解压后的目录下,即:cd F:pyinstaller-1.5
pyinstaller-1.5和 pyinstaller-2.0 的区别来了。
在 pyinstaller-1.5 中你先需要生成spec文件,然后通过spec文件在生成exe文件,而 pyinstaller-2.0 在执行命令(请看上面)后会同时吧exe和spec文件都生成出来了
所以在 pyinstaller-1.5 你得先生成spec文件:
python Makespec.py [opts] yourprogram.py
运行命令: python Makespec.py [opts] HelloWorld.py
此时在此目录下生成的 HelloWorld文件夹,文件夹下有一个 HelloWorld.spec文件,将文件在拷贝到目录(F:pyinstaller-1.5)下
运行命令: python Build.py HelloWorld.spec
4.你会发现按照上面的方法在/yourprogram/dist/yourprogram下除了需要的exe文件,也存在很多dll文件,然后你会开始抱怨作者我坑爹了吧….
哈哈,如果你这么发现了,说明,你已经完成用最基础的pyinstaller打包了,关于如何pyinstaller请往下看:
不管是pyinstaller-1.5还是pyinstaller-2.0,要想打包成一个文件,或者将文件的图标修改等等操作,这些都与你在运行命令时有关系,还记得命令是什么吗?
pyinstaller-2.0 是:
python pyinstaller.py [opts] yourprogram.py
pyinstaller-1.5 是:
python Makespec.py [opts] yourprogram.py
那些打包成一个文件,或者将文件的图标修改等等操作都和这个 [opts] 有关系.
下面举些例子(客官一看便知,以 pyinstaller-2.0为例子,1.5通用):
①, 打包成一个文件:
python pyinstaller.py –onefile yourprogram.py
②,修改exe的图标(D:BabyWandHsrcfaviconw.ico为图标的存放路径):
python pyinstaller.py –onefile –icon=D:BabyWandHsrcfaviconw.ico yourprogram.py
[opts]的一些说明(具体可以看pyinstaller官网 … talling-pyinstaller)
"给指定网站,用户浏览的时候,能追加上我的JS文件
比如ABC页面 没有加载D.JS文件,不用修改网站源码,"
----你的js准备放在哪儿?你不想放服务器,那就放客户端?更不现实了...
你可以让他访问DEF页面,然后DEF中集成ABC的代码和你想要的js.
"最好是用户查看源代码的时候 发现不了这个JS文件"
----你放入了js文件,只要浏览器能识别(浏览器中可以应用你的js)用户就能在consolekit中看见.
如果你有解决方案,务必告知.
专利名称:实现手机防火墙的方法
技术领域:
本发明涉及一种实现防火墙的方法,尤指一种实现手机防火墙的方法。
背景技术:
现在大部分的手机都具有防火墙的功能,能让用户屏蔽掉一些不希望接听的电话 或短信。它们的实现原理基本上都是根据用户手机中存储的号码来进行比对。需要用户根 据自己的通讯薄来挑选一些电话号码,并选择针对这些号码手机的对应动作,如选择接听 或者屏蔽等。这种防火墙的实现都有一个前提,就是手机必须清楚的知道需要屏蔽的电话 号码或者全部接听或者全部不接听,但当用户希望屏蔽一些只能记住部分号码的电话或者 某些号码段或者某些区域的电话的时候现在的方法就很难做到。
发明内容
鉴于以上内容,有必要提供一种实现手机防火墙的方法。一种实现手机防火墙的方法,包括以下步骤一手机接收一具有一接入号码的信息请求;所述手机判断所述接入号码是否满足一拒绝条件,所述拒绝条件包括用至少一位 数字号码及一变量符号表示的电话号码区间;若所述接入号码符合拒绝条件,则所述手机拒绝所述接入号码的信息请求。相对现有技术,本发明实现手机防火墙的方法的较佳实施方式中,所述防火墙应 用程序根据所述拒绝条件判断是否屏蔽所述号码,方便实用。
图1为本发明实现手机防火墙的方法的较佳实施方式的整体架构图。图2为本发明实现手机防火墙的方法的较佳实施方式的流程图。图3为本发明实现手机防火墙的方法的较佳实施方式的第一示意图。图4为本发明实现手机防火墙的方法的较佳实施方式的第二示意图。图5为本发明实现手机防火墙的方法的较佳实施方式的第三示意图。图6为本发明实现手机防火墙的方法的较佳实施方式的第四示意图。