2017年12月12日星期二

Centos 7.4 安装并且配置 TigerVNC

记得先切换到用户去敲 vncpasswd,要不然服务启动不了

会提示输入两个密码,一个是view-only密码,一个是可以完全控制的密码

我在view-only这个密码栽过一个坑,连接上了,鼠标就是怎么点也没有反应,只有
一个桌面,桌面的时间也动。后来才知道有一个view-only的模式。

最好把view-only跟control的密码设置不一样,如果一样默认会优先使用view-only模式。

参考链接:
1.How to Install and Configure VNC Server in CentOS 7
2.CentOs 7安装配置VNC Server---[亲测]

2017年12月6日星期三

RAT工具 (Remote Administrator Tools)

以前接触过灰鸽子,等各种远程控制木马工具,那是6、7年前的事情了,现在我再去找这类工具已经很难找到了,国际上,信息安全经过这么多年的沉淀,已经将这类木马工具归入到一个术语RAT下,RAT是一类同样用途工具的统称,无论是android、ios、windows或者linux,在它们之上运行的远程控制木马都是叫RAT。

cve0day是一个组织,专门收集各类主机系统安全的工具,提供了各种木马进行测试。

病毒检测方法:
1. 通过系统安装的杀毒软件
2. 通过网络在线检测工具,国内的是 virScan,国外的是 virusTotal

sudoers生产环境配置示例

sudoers基本配置语法
user1 ALL=(root)NOPASSWD:Cmnd_Alias

ALL 表示默认所有主机,这是集群环境下用的,按默认写就行了
NOPASSWD:表示不用输入密码就可以执行sudo
Cmnd_Alias : 命令集的别名

通配符和取消命令
例子:   papi ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk
用例子2来说明通配符*的用法, 以及命令前面加上!号表示取消该命令。

该例子的意思是: 用户papi在所有可能出现的主机上, 能够运行目录/usr/sbin和/sbin下所有的程序, 但fdisk除外.

黑名单模式,配置示例
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ,/bin/umask
Cmnd_Alias USERMP = /sbin/useradd, /sbin/adduser, /sbin/usermod, /sbin/userdel
Cmnd_Alias GROUPMP = /sbin/groupadd, /sbin/groupdel, /sbin/groupmod, /sbin/gpasswd
Cmnd_Alias EDITOR = /bin/vi, /bin/vim, /usr/bin/vi, /usr/bin/vim
Cmnd_Alias PASSWDCHG = /usr/bin/passwd [A-z]*, /usr/bin/passwd ""

admin1,admin2 ALL=(root)NOPASSWD:ALL,!/usr/bin/su [A-z]*
user1,user2 ALL=(root) ALL,!/usr/bin/su *,!PASSWDCHG,!USERMP,!GROUPMP,!DELEGATING,!EDITOR

user1,user2 执行sudo的限制
1. 不能更改其他用户的密码,只能更改自己的, 不允许更改root的密码
2. 不能切换到其他用户,不能用su
3. 不能修改/etc/sudoers,提升自己的权限
4. 不能执行用户管理和组管理的命令
5. 不能修改其他用户的文件ACL
6. 不允许使用vi,vim修改系统文件,比如passwd,shadow

参考链接:
1. sudo 命令情景分析
2. 企业生产环境用户sudo权限集中管理项目方案案例

2017年10月19日星期四

cisco AIR-LAP1142N-A-K9 无线AP使用记录

1. 在新版的镜像中,CAPWAP被 LWAPP协议取代了
2. 胖ap 与 瘦ap 模式下都可以用POE供电
3. 如果电源有故障,会导致AP发热很严重,而且运行一天左右就会自动断电
4. 正常情况下的供电,AP也会发热,总的来说比国产AP发热要大
5. 瘦AP无法加入WLC,可能会与国家代码有关,比如CN 与 US的就必须要添加两个代码后
才能加入。有一篇排除链接在下面。

web界面默认账号密码: admin/Cisco
瘦AP console默认账号密码 : Cisco/Cisco
所有的enable默认密码: Cisco

胖ap镜像名称:
c1140-k9w7-mx.153-3.JAB
c1140-k9w7-tar.153-3.JAB.tar

瘦ap镜像名称
c1140-k9w8-mx.153-3.JA3

启动信息
ap#show boot
BOOT path-list:      flash:/c1140-k9w7-mx.153-3.JAB/c1140-k9w7-mx.153-3.JAB
Config file:         flash:/config.txt
Private Config file: flash:/private-config
Enable Break:        yes
Manual Boot:         no
Enable IOS Break:    no
HELPER path-list:    
NVRAM/Config file
      buffer size:   32768
      Mode Button:    on
Radio Core TFTP:     

设备标签信息

电源相关信息


参考链接:
       1. Cisco胖瘦AP的识别与转换
       2. 轻量级无线接入点不能加入到无线控制器的故障排除
       3. 思科胖AP升级到瘦AP
       4. IOS images for Cisco 1140 series wireless access points



2017年9月17日星期日

adb安装与使用,frida测试

0x01 adb安装与使用
https://developer.android.com/studio/index.html
下载android开发IDE
android-studio-bundle-162.4069837-windows.exe

1.下载用7z打开安装文件
2.$TEMP 目录下android-sdk.7z文件,把它提取出来
3.用7z打开android-sdk.7z,把platform-tools解压出来
4.将adb.exe复制到C:Windows\system32与SysWOW64
5.将AdbWinApi.dll与AdbWinUsbApi.dll复制到C:Windows\SysWOW64

然后打开cmd就可以运行adb了


用0.4.6的 adb.exe   AdbWinApi.dll
用2.3.3的 AdbWinUsbApi.dll

2018/8/1 更新
使用夜神模拟器进行测试。
安装完夜神模拟器后,使用夜神多开器,模拟安装5.1版。
把模拟器调为手机版,并且打开 开发者模式,然后重启
在安装目录下的,nox/bin/ , 有 adb 和 nox_adb。
常用的adb命令:
       查看设备是否连接到,使用 adb devices
       进入设备shell,使用 adb shell
       启动adb服务,使用adb start-server
       关闭adb服务,adb kill-server

frida-server安装与使用
注意:
1. frida-server的版本应该与客户端一致
2. 模拟器应该使用 Android-x86的版本
3. xz -d 就可以解压完成


frida-tools安装与使用
1. 在windows下的安装参考 Android HOOK 技术之Frida的初级使用
    或者直接在这个链接下载 https://pypi.org/project/frida/

2. pip进行frida以及工具的安装
 
    pip install frida
    pip install frida-tools
 
     更新frida,可以用 pip install --upgrade xxx 处理

  可以用 pip install frida==10.23.2,去安装指定的旧版本
  新版本的变化很多,很多就版本的函数都兼容不了

  调试代码的工具,可以使用IPyhon
  安装Ipython,pip install IPython

3. 使用 frida-ps -R 前进行端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

0x02 frida hook
frida 可以对内存里面应用的函数进行直接的操作,来修改返回值



frida参考链接
Android HOOK 技术之Frida的初级使用
Android逆向之hook框架frida篇
利用FRIDA攻击Android应用程序(一)

Brida参考链接
联合Frida和BurpSuite的强大扩展--Brida
Brida:使用Frida进行移动应用渗透测试
Brida官方教程:讲解的很详细
安卓记得关闭selinux
夜神安卓模拟器adb命令详解
故障排除:unable to communicate with remote frida-server





2017年9月6日星期三

wheezy(debian 7.5)编译安装Snort 2.9.9

Snort 2.99版的官方介绍


先把基本的依赖库安装好
apt-get install -y gcc zlib1g-dev openssl libssl-dev libdumbnet-dev bison flex libdnet
wget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz
tar xvf libpcap-1.8.1.tar.gz 
cd libpcap-1.8.1/
./configure
make && make install

pcre使用8.4版的,去官网下载并且编译安装
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
tar xvf pcre-8.40.tar.gz 
cd pcre-8.40/
./configure
make && make install

daq直接使用snort官方下载页面上推荐与2.9.9搭配的版本即可
tar xvf daq-2.0.6.tar.gz 
cd daq-2.0.6/
./configure
autoreconf -ivf
make && make install

在Snort 2.9.9的介绍页面中,nghttp2需要被使用,如果你用1.25的版本在wheezy可能装不了,那就用1.19的版本
wget https://github.com/nghttp2/nghttp2/releases/download/v1.19.0/nghttp2-1.19.0.tar.gz
tar xvf nghttp2-1.19.0.tar.gz 
cd nghttp2-1.19.0/
./configure 
make && make install
ldconfig

最后安装snort,这一部可编译的选项比较多,可以自己看一下configure文件帮助
tar xvf snort-2.9.9.0.tar.gz
cd snort-2.9.9.0/
./configure --enable-sourcefire 
autoreconf -ivf
make
make install


启动Snort,运行正常
[root@debian ~]# snort
Running in packet dump mode

        --== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.9.0 GRE (Build 56) 
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
           Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Using libpcap version 1.8.1
           Using PCRE version: 8.30 2012-02-04
           Using ZLIB version: 1.2.7

Commencing packet processing (pid=18702)
WARNING: No preprocessors configured for policy 0.
07/13-02:06:08.985161 172.16.11.196:22 -> 172.16.11.198:49388
TCP TTL:64 TOS:0x10 ID:35782 IpLen:20 DgmLen:108 DF
***AP*** Seq: 0x4F4E4F4  Ack: 0x35E422BA  Win: 0x677  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

在安装目录下,直接运行
make uninstall
make clean

如果是编译过程出错,要重新编译
make clean
然后再
./configure
make && make install


参考链接:
           1. ubuntu下snort的安装
           2. How to Install Snort on Ubuntu 16




2017年8月21日星期一

OSSIM sensor 状态不正常的解决方案

很久没有用ossim,这次下载了5.4版本的用,结果不仅系统很卡,而且有各种bug,sensor状态不正常就很恶心,明明通过 alienvault-api systems 命令去测试sensor的可达性是没有问题的,但是在web界面显示故障,这在就版本是不存在的啊!

于是我翻硬盘资料找到,OSSIM 4.8的ISO镜像,后来安装好后,竟发现OSSIM 4.8的功能比5.4还要多,这让我很惊讶,而且也没有sensor状态显示不正常的bug。

难道OSSIM商业化后,开始不维护开源版本的代码吗,不维护就算了,还将功能缩减,增加bug,性能降低,目的估计都是要用户买他们USM吧!注意,这里只是个人意见,不代表真实情况。

我在OSSIM论坛看到有人说这是一个长期的bug。显然不是,我之前用的 4.15.1版本,也是没有问题的。

如下图,在4.8是正常的

2017年7月24日星期一

VMware的ESXi的重置root密码与主机配置文件

遇到这种情况:
       我有三台ESXI主机,是之前同事留下的,其中一台他把密码忘记了,现在是使用vCenter管理的,之前添加过这三台ESXI主机,不知道密码,但是能管理,这种情况
可以使用hostprofile的功能去改密码,但是没办法找回之前的密码。
       下面链接实测有效。
       关键就是维护模式的进入,进入之前,要把所有虚拟机关闭。

参考链接:

2017年7月19日星期三

Linux 命令行下使用 Shadowsocks 代理 [实践版]

0x01 背景
     需要将树莓派配置为shadowsocks代理客户端,然后开放允许本地局域网的其他机器通过树莓派去连接世界网络。本文主要涉及内容,如何再linux系统下,使用shadowsocks的命令行客户端,以及命令行客户端工具(ss-local)的使用,搭配privoxy,让linux再命令下配置的ss客户端,可以达到和windows  ss小飞机客户端一样的功能。

0x02  客户端配置
      详细配置见,最底部的参考链接

0x03 注意问题

测试环境
系统:debian 8.7 jessie
privoxy版本: version 3.0.21

下面参考链接有一个问题:
privoxy 配置,如果跟着博客的内容去配置如下

# 转发地址
forward-socks5   /               127.0.0.1:1080 .
# 监听地址
listen-address  localhost:8118
# local network do not use proxy
forward         192.168.*.*/     .
forward            10.*.*.*/     .
forward           127.*.*.*/     .

只会监听tcp ipv6 8118端口

Ntopng:/etc/shadowsocks# netstat -ntlp | grep privoxy
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp6       0      0 ::1:8118                :::*                    LISTEN      11896/privoxy   
 

将监听地址这段改一下:

# 监听地址
listen-address  127.0.0.1:8118
# 如果是允许局域网连接,就用*代替
listen-address  *:8118

则监听tcp 8118端口

Ntopng:~# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8118          0.0.0.0:*               LISTEN      12053/privoxy   

之后就可以正常使用了

创建一个脚本文件名为 proxy
vim /usr/local/bin/proxy

脚本内容如下
#!/bin/bash
http_proxy=http://127.0.0.1:8118 https_proxy=http://127.0.0.1:8118 $*

给脚本加执行权限
chmod +x /usr/local/bin/proxy

对任何想要走代理的命令,只需要在前面加上 proxy 即可,样例如下
proxy gvm install go1.6.3
参考链接:
         Linux 命令行下使用 Shadowsocks 代理

2017年7月12日星期三

RSS是永远不会淘汰的产品

RSS的使用数量已经大部分被微信、微博、facebook、Twitter给替代,但是RSS的功能依然是那些社交工具无法替代的。
RSS最初的开发者中就包括互联网之子 aaron swartz。
迄今为止,作为一名IT人员,我始终需要使用google查询个人博客的资料去解决一些问题,同时学习一些较新的技术和思路,这些都是普通社交工具无法替代的。
那些社交工具提供的订阅更新,都是标题党,读起来无法集中精力,并且只是提供资讯,不需要花太多的脑力便可以看完,无法提高理解力。
而RSS订阅的都是你所喜欢的blog主写出来的,质量相当之高。
可见RSS有多么重要了。

最近找到一个非常好用的RSS订阅工具,Akregator 。
Akregator 是 Kontact套件的一部分。

Kontact 套件是 KDE 下强大的个人信息管理方案。Kontact 允许您在一处整合环境中处理邮件、安排日程以及管理联系人。最新的Kontact版本为用户提供更简易的方式管理通讯邮件,更迅速的管理工作日程,更方便更紧密的管理合作/共享项目,为数字化的合作提供更高的效率与便捷。

windows 安装 Akregator 之前需要安装 kdewin。

kdewin下载地址
kdewin安装指南

其实还有很多很多的RSS工具,还推荐两个,那就是firefox与chrome官方的RSS。
目前新版的firefox在url栏已经没有rss图标了,可以通过安装rss icon in url bar插件
补充这个功能。
chrome可以通过安装官方插件RSS Subscription Extension来支持rss。

参考链接:
1. RSS 的使用方法
2. 如何使用RSS
3. Akregator(阅读器)
4. 怎样使用Firefox、chrome、IE自带的实时书签用rss收取阅读

2017年7月10日星期一

2017年7月5日星期三

deep web 与 比特币的理解

Tor 是 deep web 的基础设施,Tor提供了各种隐匿的手段,以规避流量审查,保护个人隐私数据。

deep web 与 Tor的特性:
1. 可以使用各种工具进入,Tor只是其中一个,但也是使用最广的一个。
2. Tor使用16位数字字母.onion,组成的随机域名
3. Tor使用的是firefox浏览器
4. 截止2017年6月为止,AlphaBay Market是最大的暗网商城


比特币的诞生是经历了一番历史,电子货币屡次尝试屡次失败,在2008年8月,中本聪(satoshi)注册了bitcoin.org之后,这是一个伟大bitcoin即将诞生的前兆,2009年1月中本聪在密码组mail list发表了一篇《比特币:一种点对点的电子现金系统》论文,并且挖掘出50个比特币之后,bitcoin开始了神话般的发展。

截止到2017年6月27日,一个比特币的价值接近2w RMB。


0x01 比特币的特性:
1. 去中心化,实现点对点
2. 无需第三方机构提供权威信息
3. 每十分钟产生一个比特币, 总量恒定,到 2140 年产出第 2100 万枚
4. 挖矿的过程,实际上是争夺全网唯一记帐权的过程
5. 记账过程比拼的是计算资源
6. 比特币的网络规则是,一旦某人掌握了全网 51%的计算资源,他就有了更改区块链记录的「超级权限」,这与网络强盗无异 。
7. 比特币依然遵循经济发展趋势。世界经济史是一部基于假像和谎言的连续剧。要获得财富,就要认清假像,投入其中,然后在假象被公众识破前退出游戏。
8.  比特币系统神奇的设计,使得信任机制没有必要存在。

0x2 交易链 [transaction chain]:
       交易链是一条每次转账记录的链条。比特币的所有权在网络中以某种链条方式进行传递,所有比特币的用户都可以获取到这条交易链。
       交易链记录了从第一次比特币消费,第一次下载比特币软件,需要花将近24小时对交易链进行核对,直到第一笔比特币消费记录,确保之前的每笔交易的有效性,而这种核对是一劳永逸的,只需要检查一次即可。
     
       交易细节:
       当前的消费都需要对之前的转账记录进行核对,每次交易都会有一个 txn,transaction number。转账记录里面,分两个部分:input 与 output,如果你要给别人发10个bitcoin,必须对input部分的每一个txn进行核对,output会有两个部分,一个是你转账给别人的bitcoin,一个是你转给自己的bitcoin。而且有一个规则要遵守:
       input bitcoin  =  to self bitcoin +  to others bitcoin  = output bitcoin

       账本的真实形式:
       账本不会记录每个人的余额,而是在output部分将余额发回给自己的方法来记录。货币所有权通过验证历史交易信息来核实的,如何保证交易由货币拥有者发起的呢?(其他节点如何能确定请求是可信的呢)。因为只有真正的拥有者才有权创建交易消息。
       比特币有一套密码规则,用了解锁和管理货币交易,这种密码叫“数字签名”,每一笔交易都会有一个数字签名,用来保证交易的可靠性。公钥其实就是发送至的地址,如果向某人转账,其实就是将货币发送至对方的公钥,消费的时候,你必须证明你是公钥地址的真正拥有者,通过交易信息和你的私钥来生成数字签名的过程,就可以证明你是真正的拥有者。

       节点需要对进账金额的状态进行确认,避免重复进账。进账金额的状态分为两种,已消费(spent)、未被消费(unspent)
     
       例如:
               Alice --> Bob      5.0 bitcoin
       所以对一笔交易的检查:
       1. input部分引用之前的txn的output部分必须含有To Alice的金额
       2. input的总和必须大于等于5.0
       3. input的txn未被消费
     
      还有一个问题比特币亟待解决,“未被消费的检查结果”不可靠,这就与交易顺序有关,
这与信息传送某个节点经过路径不同,到达目标的时间也不同,而且时间戳是可以伪造的。
这就无法分辨出哪个交易在前,哪个交易在后。
      双重支付(Double Spending Fraud)
      针对这个情况,就需要整个网络对交易的顺序达成一致
       (nodes need to agree on transaction order.)
   
0x03 区块链 [Block Chain]:
        通过将交易按组分配来对交易进行排序的,这样的组被称为区块,然后将区块连接起来,被称为区块链。与交易链比较,区块链是对交易排序,交易链则是跟踪记录所有权的变化。
        每个区块会引用之前一个区块,并且是按时间顺序来排列的区块。你可以反向追踪这些链接直至最初的一笔交易。同一个区块的交易应该是在同一时刻发生的,未放入区块的交易被称为“未确认”或者“未排序”的交易,任何节点都可以将一组未经确认的交易放入区块,然后向网络中的其他节点广播他们对于下一个区块应该是什么的建议,由于同一个时刻可能有多人同时生成区块,那么网络是如何决定下一个区块的呢?
        比特币系统给的解决方案的一部分是这样子,每一有效的区块必须包括,对一个特殊数学问题(Block Puzzle)的答案,就是猜出random number的值,以下是计算方法:
     
        hash_sha256( New Block  +  random number )  < target
        random number 是一段随机值

        计算机会基于SHA256 hash算法运算,区块内的所有文本加上额外的随机数字猜测值,直到得出一个低于某特定数值(target)的输出。在比特币体系中,要猜测到这个随机数值,一台电脑要花上几年时间来,猜测一个区块,而当比特币网络中所有计算机都在猜测时,只要花上平均10分钟某台机器就能成功猜出答案。当一个节点找到了符合要求的解,就会向全网广播自己的结果,并且将他们的交易排在区块链的下一位。
        猜测的随机性有效的分散了人们找到结果的时间,以致于不会有两个人同时猜到结果,但偶尔也会出现不止一个区块同时被猜测成功的情况,从而导致若干个可能的分支,如果出现这类情况:
        A首先会把收到的区块X放在第一位,
        B首先会把收到的区块Y放在第一位,

         当有人解开下一个区块时,这种结就被打破了。 一般情况下,你都会理解切换至最长的分支,当然数学谜题使得同时解开区块变得几乎不可能,更不可能接连发生几次,最终的结果是区块链会迅速稳定下来,这意味着每个节点都是接受区块链的结尾处几个区块的排列顺序。根据下面的式子:
         hash_sha256( New Block  +  random number )  =  Block ID  < Target
       
         猜测到的结果会变为区块的ID,而区块ID,又会作为文本的一份去计算。如果要想进行下一个区块的ID计算,就必须计算出当前区块的ID,这就使得双重支付变得不可能。(换句话说,前一个区块尚未解开之前,后一个区块无法被解开)
        单个人没有办法连续解出多个区块,去替换其他人的区块,由于算力资源的限制, 即使是算力达到全网一半,也就是有50%的概率在他人之前解开区块
        区块链中交易越靠后越安全,因此攻击者想要实施“双重支付”攻击,就不得不花费较长时间来赶超网络中的其他主机或是替换区块链中靠后的区块,因此比特币系统只是容易在区块链的最后环节遭受“双重支付”的攻击。任何攻击者都不可能靠一己之力解出正确答案。
         由于比特币生成和分发过程缓慢且有随机性,当有人解出一个区块时,这个人就会被赋予一定的奖赏,这也就是猜解区块被称作采矿的原因,尽管它真正的目的是验证交易和维护区块链。每四年,解出区块奖励减半(这就意味着,到目前为止,2017,每次挖矿只能得到0.25个比特币),因此最终不会有更多的比特币被发行,总量约为2100万。

0x04 比特币安全问题:
      1. 永远不要将密码暴露给别人,因为密码有被复制和重新使用的危险
      2. 比特币交易网络中,没有像银行或者信用卡公司这样的组织,可以让你求助
      3. 用户犯的任何错误都会导致比特币的永久损失,不只是影响你的自己的账号,而是会影响整个比特币经济体系。
      4. 为了保证交易匿名性,你可以为每笔进账交易生成一个新的公钥
   
0x05 比特币如何使用:




0x06 参考链接:
       1. 当年一文不值,如今它比炒房还暴利
       2. 走近黑客雇佣市场:刀尖上“跳舞”,悬崖边狂欢
       3. AlphaBay:目前全球“人气最旺”的暗网黑市
       4. 我们都是中本聪:那些孜孜以求建立密码学货币的先驱们
       5. 比特币运作视频作者博客
       6. 比特币人民币汇率走势















Vmware虚拟交换机Vss配置

我的需求比较简单:
1. Vmkernel端口都统一接入管理VLAN
2. 需要混杂模式的接口就独立分配一个vSwitch
3. 多个uplink网卡连接一个vSwitch,vSwitch下分多个端口组



端口组可以理解为一个VLAN


添加:可以添加一个端口组或者vmkernel管理接口
编辑:可以调整一个端口组的VLAN ID,或者vmkernel管理接口的IP地址与VLAN ID

VST(Virtual Switch Tagging)技术可以完成这个需求

00 如何用vsphere client去更改exsi管理IP地址

       dell服务器上一般会有四个物理接口,创建多一个VSS,在该vss上新建一个vmkernel口,配置上你想要的IP地址,然后应用配置,进去原来的vmkernel口,把IP地址改成不可访问的地址,应用配置,之后可以看到vsphere报一个错误,并且把esxi的地址改为你刚配置好的ip地址。
     
       前提:新的vmkernel口必须与之前vmkernel口不在同一个VSS

参考链接:

2017年7月4日星期二

统一建模语言 UML

统一建模语言(英语:Unified Modeling Language,缩写 UML)

区分UML模型和UML图是非常重要的,UML图,包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式,但是UML模型独立于UML图存在。UML的当前版本只提供了模型信息的交换,而没有提供图信息的交换。

序列图 是开发之前就应该设计好的图,只是UML图的其中一个
序列图 【不严谨的翻译:时序图】(Sequence Diagram)
webSequenceDiagram 这个网站提供在线画序列图的工具,使用非常简单

组件图 也是UML很重要的一个图,被用来标示任意复杂系统的结构
类图 该图描述了系统的类集合,类的属性和类之间的关系。类图是面向对象式的建模。

这对于理解一个复杂系统的时候非常有用。

域下发批处理文件到用户启动目录

域下发批处理文件到用户启动目录

最近遇到 Petya勒索软件新变种 的安全事件响应,网络给出了petya病毒的免疫方法,只需要在 C:\Windows 文件夹下建立名为 perfc 的文件,并将其设为“只读”即可。

如果是一台电脑就容易处理了,但是公司是一整批电脑,将近上百台,只能通过域来完成了,全自动。
下面是免疫文件自动创建的批处理脚本:
https://download.bleepingcomputer.com/bats/nopetyavac.bat

大概步骤:
1. 组策略管理  --> 林  --> 域 --> xxx.com -->组策略对象
2. 新建GPO(组策略对象)
3. 用户配置 -->windows设置 --> 脚本(登录/注销)

使用 rsop.msc 在客户端去验证组策略是否正确下发了



参考链接:
Petya勒索软件新变种详细分析报告
研究人员发现Petya勒索程序“疫苗”,手把手教你免疫Petya
AD组策略方式推送exe安装程序
如何通过AD服务器推送和安装AnyOffice
修改组策略,立即生效的办法

2017年6月28日星期三

阿里云SLB与计费方式的选择

        阿里云SLB分为两种:公网SLB 与 私网SLB
        SLB 有一个公网地址,但是它会对负载的数据包作源地址的转换,这样APP服务器netstat看到的IP地址就是100.97.0.0来的地址了,而没办法从网络层获取用户真实的IP地址了,这就是阿里云私网SLB带来的问题,同时也导致APP服务器如果没有购买公网IP地址,就无法访问互联网了。
        对于访问互联网的最佳解决方案,就是买一台ECS搭建软路由,同时也可以用VPN搭建混合云,统一对网络出口做管理。当然你也可以给每一台服务器买一个弹性IP地址。

对于计费方式,公网SLB有两种

  1. 按流量和时间计费
  2. 按带宽计费          
两种计费方式都有其优点与缺点,如果怕搞活动流量太大,可以想使用带宽计费,待1-2个月稳定后,查看之前的流量统计,进行分析,之后就可以确定选择什么计费方式了。

对普通类型DDOS攻击会导致流量费暴增,完全可以不用担心,对于服务器来说,入的流量是免费的,而DDOS流量主要是上传的流量,所以并不会导致流量费用增加。
但是对于CC攻击的话,就没办法了,他主要依靠对于消耗CPU以及内存资源的页面进行大批量请求,必然会造成下行流量的增加,而且CC攻击只需要少量的上传数据包,就可以导致服务器出的流量大幅增加


在【费用中心】-->【使用记录】-->【SLB】-->选定一段时间,导出csv
之后你会看到这段时间内的流量总量。
根据  每G的费用就可以算出流量总费,这样就可以判断了。


参考链接:
       SLB数据导出
       SLB两种类型
       SLB介绍页面
       计费规则
       CC攻击

2017年6月26日星期一

python_2.6升级到2.7 pip安装与配置

CentOS release 6.8 (Final)  默认安装python 2.6,自己写的脚本要在2.7才可以运行。

1. 升级需要到使用源码编译安装
2. 编译安装之前,需要用yum grouplist检查下 development tools安装好没有
3. 下载源码,并且解压
4. 使用 ./configure    make    make install 编译安装到prefix的目录下
5. 配置好运行环境,做好软连接
6. yum 由于用到了python 2.6,这个时候yum的运行会故障
           vim  `which yum`  把第一行给为python 2.6的路径

7. 安装pip
           yum install python-pip
8.配置pip源
          cd ~
          mkdir .pip && cd .pip
          vim pip.conf
          写入    
          [global]
          trusted-host =  mirrors.aliyun.com
          index-url = http://mirrors.aliyun.com/pypi/simple

9. 运行pip,就可以使用阿里云的源了




参考链接:
       升级的具体方法
       pip配置
       pip还有更多的强大功能,官方pip指南

2017年6月5日星期一

无需输入账号密码,命令行启动mstsc

添加凭证,用来自动登录
C:\Users\Administrator>cmdkey /generic:"1.1.1.1" /user:"administrator" /pass:"aaaaaaaa"

命令行启动
C:\Users\Administrator>mstsc /console /v:1.1.1.1

查看命令行帮助
C:\Users\Administrator>mstsc /?



参考链接:

2017年5月25日星期四

思科 NTP 与 dns配置

       本次内网NTP无法去外网同步的原因:电信运营商对网络做限制导致的,这限制很显然不是他们的目的,可能是不小心误操作导致的,致电给运营商沟通后,两天内,NTP同步的问题就解决了。经过4天NTP时间同步问题的故障排除操作,终于解决。 在这里我要谴责一下运营商的这些影响人们正常工作的行为。这不是他们第一次做,之前我google与百度也查到类似的情况。

dns配置
ip name-server 114.114.114.114
ip domain-lookup

这样就可以ping 域名测试连通性了

阿里云NTP

0x01  rdate 是时间同步的好工具
     
        man page说明
                  rdate通过TCP/IP网络连接到RFC 868时间服务器,输出时间或者设置系统时间
     
       很多时候ntpdate不能同步的,rdate却能完成任务
       常用参数含义:
             -p    输出远程设备返回的时间到终端
             -s    把系统时间设置为返回的时间
             -u    是用udp,而不是tcp传输
             -v    输出获取的过程
             -n    使用SNTP 而不是 RFC 868时间协议

       可用性较高的时间服务器
              rdate -ps time-b.nist.gov

0x02  ntpdate -- 通过NTP设置日期和时间的工具

       直接同步 ntpdate  0.cn.pool.ntp.org

       常用参数:
              -d     启用debug模式,如果报错就可以使用该选项进行调试
              -o     使用指定NTP版本去获取时间,默认是4

0x03  ntpq  -- 标准的NTP查询程序

        ntpq工具用来监控ntpd后台进程的运行情况与性能,也可运行交互模式,使用命令参数去控制

        -p   输出一列 配置文件里面server定义的peer,也显示状态汇总的情况
        -n   输出所有主机IP地址,而不是转换后的主机名

-pn 输出各字段的含义 (通过man ntpq可以得到更多的详细介绍)
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                Variable                           |                          Description                                                                                                 |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                [tally]                            |                          single-character code indicating current value of the select field of the peer status word                  |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                remote                             |                          host name (or IP number) of peer                                                                            |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                refid                              |                          association ID or kiss code                                                                                 |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                st                                 |                          stratum                                                                                                     |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                t                                  |                          u: unicast, b: broadcast, l: local                                                                          |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                when                               |                          sec/min/hr since last received packet                                                                       |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                poll                               |                          poll interval (log2 s)                                                                                      |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                reach                              |                          reach shift register (octal)                                                                                |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                delay                              |                          roundtrip delay                                                                                             |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                offset                             |                          offset                                                                                                      |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
               |                jitter                             |                          jitter                                                                                                      |
               +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+

0x04 本地局域网根NTP服务器

      /etc/ntp.conf
             server 127.127.1.0
             fudge 127.127.1.0 stratum 1


ntpq命令链接













             

在 Bash 中删除除某些文件外的所有文件[转]

0x01  
我的一位同事曾经问过我这样一个问题:在 Linux 下,如何删除目录中除某些文件之外的所有文件?当时,我告诉他可以通过模式匹配的方法解决。但其实,除此之外,还有其他的方法,正所谓“条条大路通罗马”。让我们来逐一看看。

假设要删除 ~/Downloads 目录中除 .iso 和 .zip 外的所有文件,那么在 bash 中可以按以下方法处理。

模式匹配法

shopt -s extglob # 确认开启 extglob 选项
cd ~/Downloads
rm -v !(*.iso|*.zip)
!(pattern list) 的作用是匹配除 pattern list 之外的文件。


0x02
不知你是否想过在Linux命令行上,如何实现删除除了某个文件之外的所有文件?

如abc文件夹下有a、b、c三个文件,如何一行命令删除b和c,不删除a。有位童鞋在工作经常有此需求,本文将介绍其他童鞋提供的实现方法。



其中rm -f  !(a) 最为方便。如果保留a和b,可以运行rm -f !(a|b)来实现。

不过一般bash中运行后会提示

“-bash: !: event not found ” 可以通过运行shopt -s extgolb来解决。如下:
[root@localhost /]# mkdir abc
[root@localhost /]# cd abc
[root@localhost abc]# touch a b c
[root@localhost abc]# ls
a  b  c
[root@localhost abc]# rm -f !(a)
-bash: !: event not found
[root@localhost abc]# shopt -s extglob
[root@localhost abc]# rm -f !(a)
[root@localhost abc]# ls
a
[root@localhost abc]# touch b c d
[root@localhost abc]# rm -f !(a|b)
[root@localhost abc]# ls
a  b



另外也可以使用下面的方法:

[root@localhost abc]# ls
a  b  c
[root@localhost abc]# ls |grep -v a |xargs rm -f
[root@localhost abc]# ls
a

2017年5月19日星期五

虚拟化配置

vSphere  是客户端工具,用于管理虚拟机集群,用于连接vCenter
EXSI  是虚拟化宿主系统
vCenter  是虚拟机集群的后台管理系统,即服务器端,可以把多台EXSI加入集群

通过vCenter所在主机的IP地址,登录web管理界面或者vSphere的下载界面,
具体地址  https://x.x.x.x
载vSphere客户端,安装后,打开工具,
输入 administrator@vsphere.local 以及密码 登录管理控制台

1. 怎么制作虚拟机模板
2. 通过模板创建虚拟机
3. 虚拟机安装linux操作系统的磁盘分区设计与磁盘技术选型
4. 怎么把vmware虚拟机迁移到ESXi  (导出为你esxi平台的版本号)
5. 怎么把ESXi的虚拟机迁移到vmware (定位磁盘文件导出即可)
6. vmware使用虚拟机共享技术,以及使用“连接服务器”功能连接到Vcenter

最佳linux部署实践:
      1. 使用最小化系统安装(减少内存与CPU资源)
      2. 数据扩展目录使用LVM磁盘
      3. 根据需要的基本命令,完成模板的制作
      4. 用模板创建虚拟机,快速部署
      5. 部署完成后,修改主机名,IP地址
      6. 在使用之前,进行快照备份 (使用快照后,硬盘空间不能扩展,除非删除快照)


*.vmdk是虚拟硬盘文件
*.vmsn是快照文件
*.vmx是虚拟机的配置文件
如果在虚拟机开机状态下保存快照,还会有*.vmem的快照内存文件。

删除快照需要注意:
        进入数据存储里面看看,虚拟机的快照文件有多大,如果太大删除会消耗很多时间。
   

日志服务器部署的时候需要注意的地方:
      1. 日志服务器的数据存储,应该设置可以快捷扩展的,硬盘是日志服务器的消耗资源

CentOS 最小化系统的模板部署,网卡不见的解决方法:
       部署完成后,进入系统,service network restart 会提示如下:
       device eth0 seems not to be present
       vim /etc/sysconfig/network-script/ifcfg-eth0   -->  修改MAC地址
       根据虚拟机的网络适配器地址,进行设置

               之后按下面三步操作:
                       [root@c1node01 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules
                       [root@c1node01 ~]# reboot ………………
                       [root@c1node01 ~]# service network restart

debian 8 jessie 网卡设置
         debian的网卡设置非常简单,只需对interface文件默认的配置修改一下即可
         如果新增一个网卡,就把配置复制一份,修改写接口名称即可

2017/7/12

最近因为服务器内存资源不足,需要对内存进行扩展。
买内存之前,首先要看内存插槽还有多少个,内存插槽支持多大的容量,支持的内存型号。
这些信息其实都可以在vcenter vsphere客户端看到,【清单】【主机和集群】
ESXI主机下的 Hardware Status下看到。

还有一个情况是在vCenter下分多个账号,给每个账号分配一定权限,做好角色分组。


参考链接:
        VMware ESXi虚拟机克隆及迁移
        從VMware Workstation Pro 12 遷移虛擬機到 ESXi 6.0
        vCenter用户与权限分配
        VMware几种网络适配器区别
        vmware日志文件的路径



2017年5月18日星期四

安全域,概念众多,究竟何去何从,本文来个抛砖引玉

我从业这么久,经常讲安全域这个概念,但是它是如何诞生的,后面又经过怎么样的演变。

以下文字来源于 这篇文章

----------摘抄开始

首先来看定义:

定义1:安全域是由一组具有相同安全保护需求、并相互信任的系统组成的逻辑区域。

定义2:安全域是由在同一工作环境中、具有相同或相似的安全保护需求和保护策略、相互信任、相互关联或相互作用的IT要素的集合。

定义3:安全域是指同一环境内有相同的安全保护需求、相互信任、并具有相同的安全访问控制盒边界控制策略的网络或系统。

以上定义均为从网络摘抄。定义的主体分别为逻辑区域、IT要素的集合、网络或系统,但其表达的意思基本都是一样的。可能是由于中文博大精深,虽然字不一样,但所想表达的思想都是一样的。

----------摘抄结束

看看维基百科的安全域(security domain

而安全域这个概念又会被分为:
1. 传统安全域
2. 动态安全域
3. 虚拟安全域 (类似阿里云的安全组)
4. IBM的安全域 (Secure domain)

等级保护的安全域概念
《信息安全技术--信息系统安全通用技术要求》GB/T 20271—2006
《信息安全技术--信息系统等级保护安全设计--技术要求》

美国国安局《信息保障技术框架》里面提到的“纵深防御”(Defense in Depth
                 《信息保障技术框架》的全册链接

常见的划分方法:
1. 按照防护的层次:外部接口层、核心交换层、计算服务层、资源层,根据安全要求和策略的不同,划分区域
2. 网络安全域划分:本地网络、远程网络、公共网络、伙伴访问

划分注意:
1. 子网与安全域要分开,因为安全域是一组对象集合,与子网没有必然联系,如果非要将子网与安全域联系在一起,那么安全域将会被细分为非常多的层次,导致出现三级子安全域,甚至四级子安全域,将会让安全域设计的工作严重复杂化。

    子网与安全域的关系:
         一个安全域可以容纳多个子网
         一个子网只能归属一个安全域(子网A 归属 安全域A,子网A就不可能归属其他域)
   
    下图,就是不合理的设计,应该将子网与安全域分开规划


参考链接:
安全域划分
安全域的划分




2017年5月17日星期三

burp target proxy 使用细节


0x01  Target Scope的作用
  • 限制站点地图和Proxy 历史中的显示结果
  • 告诉Burp Proxy 拦截哪些请求
  • Burp Spider抓取哪些内容
  • Burp Scanner自动扫描哪些作用域的安全漏洞
  • 在Burp Intruder和Burp Repeater 中指定URL
将需要抓包的域名放入include scope,有两种方法:
1. 在数据包或者某个连接,右键点击,然后 add to scope
2. 在数据包或者某个连接,右键点击,Copy Url --> Target -->Scope --> Paste URL

Proxy history:
          Filter: Showing all items
                    Show only in-scope items

exclude scope

0x02  Proxy Intercept
     
       改变GET或者POST请求方式、
       改变请求body的编码,
同时也可以改变请求消息的拦截设置,
       不再拦截此主机的消息、
       不再拦截此IP地址的消息、
       不再拦截此种文件类型的消息、
       不再拦截此目录的消息,
也可以指定针对此消息拦截它的服务器端返回消息。

intercept选项卡
     Action
            Don't intercept requests
                      To this host
                      To this IP address
                      To this file extension
                      To this directory

0x03  Project  & User Options  &  State (V1.7.11)

       在Burp Suite v1.7.11 后引入了项目文件的概念。
       保存Project Options 与 User Options 可以记下你习惯方式,下次直接使用即可。

         state文件,则是当时抓的数据包与代理历史情况的记录。

注意:证书的导入与导出与配置无关

我的使用习惯建议:

burp 无法抓取chrome 58的https包的临时解决方案:
      1. 在启动chrome的快捷方式加入选项 --ignore-certificate-errors

建议,抓包的时候,把截断打开:
     1. 如果截断的数据包不是你想要的域名,可以设置don't intercept
     2. 如果是你想要的域名,可以设置 add to scope
     3. 上面两步,都是为了history能够显示有效的内容,过滤无用的数据包
     4.  每一个测试项目,都可以用save project option保存配置,下次启动直接加载


这个问题的描述:
     
       0x1 官网论坛 Certs invalid on Chrome 58 due to CN Deprecation

       0x2 stackExchange论坛 Burp Suite - Although my configurations are correct, still Chrome doens't allows me to access HTTPS sites and throws an error!

参考链接:
针对非Webapp测试的Burp技巧(二):扫描、重放
如何使用Burp Suite代理
Chrome (for Windows only) - HSTS Certificate Exception Instructions







Burp 重复发送同一个数据包

在 Intruder下:
position , clear所有变量
payloads,payload type 改为 null payload
payload options ,continue indefinitely (意思为持续发包)

参考链接:
Repeat a request in a loop
PortSwigger Support Center-- How Do I

2017年5月11日星期四

域名通过脚本恶意跳转 的分析

某公司官网被嵌入恶意的js脚本,该脚本的位置介于<html> 与 <head> 之间。

<noscript> <title>xx赌xx博网.....</title>
<meta name="keywords" content="网上赌博...." />
<meta name="description" content="【w.05.com】博彩 s评级 网【w w.8.cc】...." />
</noscript><code>
<script src="http://www.xxx.xxx/aaa.js" type="text/javascript"></script>

http://www.xxx.xxx/aaa.js  这个js的内容如下:

document.writeln("");
document.writeln("");
document.writeln("<script LANGUAGE=\'Javascript\'>");
document.writeln("var s=document.referrer");
document.writeln("if(s.indexOf(\'dsms\')>0 || s.indexOf(\'baidu\')>0 || s.indexOf(\'sogou\')>0 ) ");
document.writeln("location.href=\'http://xxbc.com/index.htm';");
document.writeln("else");
document.writeln("location.href=\'index.htm\'");
document.writeln("</script>");
document.writeln("");


2017年5月8日星期一

linux必会的版本号查看

首先linux是有多个分支的操作系统,目前只讨论两大重要分支。

看版本号的时候经常会看到:  debian 7.5 Wheezy
可以按下面分解:















分别对应了三个命令,基本上把这三个命令记住,就可以知道完整的版本情况了。

其中lsb_release是个独特的命令,它的man解释

NAME
              lsb_release - print distribution-specific information

DESCRIPTION
       The lsb_release command provides certain LSB (Linux Standard Base
and distribution-specific information.
       If no options are given, the -v option is assumed.

这样方便去理解这个命令,同时可以记得更牢固。

查看内核版本的命令:
            uname -a
内核版本可以看到硬件架构,比如i386、i686、amd64、x86_64,可以根据这个信息
来选择软件包








2017年5月7日星期日

ipsec vpn主模式与野蛮模式,PFS故障


如果一边启用FPS,另一边没有启用PFS,会出现下面报错

May 02 2017 10:09:18: %ASA-5-713119: Group = 183.49.47.106, IP = 183.49.47.106, PHASE 1 COMPLETED
May 02 2017 10:09:18: %ASA-5-713904: Group = 183.49.47.106, IP = 183.49.47.106, All IPSec SA proposals found unacceptable!
May 02 2017 10:09:18: %ASA-3-713902: Group = 183.49.47.106, IP = 183.49.47.106, QM FSM error (P2 struct &0x00007fff9efdb610, mess id 0xbe9ad595)!
May 02 2017 10:09:18: %ASA-3-713902: Group = 183.49.47.106, IP = 183.49.47.106, Removing peer from correlator table failed, no match!
May 02 2017 10:09:18: %ASA-5-713259: Group = 183.49.47.106, IP = 183.49.47.106, Session is being torn down. Reason: Phase 2 Mismatch
May 02 2017 10:09:18: %ASA-4-113019: Group = 183.49.47.106, Username = 183.49.47.106, IP = 183.49.47.106, Session disconnected. Session Type: LAN-to-LAN, Duration: 0h:00m:00s, Bytes xmt: 0, Bytes rcv: 0, Reason: Phase 2 Mismatch
May 02 2017 10:09:18: %ASA-5-713904: IP = 183.49.47.106, Received encrypted packet with no matching SA, dropping



主模式:默认会用接口的IP地址作为隧道组的ID去匹配策略
野蛮模式: 可以自定义隧道组的ID,思科默认使用接口IP地址作为ID,远程身份ID与对端的定义的情况,本地身份ID为已经配置好的隧道组名称

-------------------------
May 02 2017 13:38:44: %ASA-5-713119: Group = spoke1, IP = 183.49.47.106, PHASE 1 COMPLETED
May 02 2017 13:38:44: %ASA-5-713076: Group = spoke1, IP = 183.49.47.106, Overriding Initiator's IPSec rekeying duration from 0 to 4608000 Kbs
May 02 2017 13:38:44: %ASA-5-713049: Group = spoke1, IP = 183.49.47.106, Security negotiation complete for LAN-to-LAN Group (spoke1)  Responder, Inbound SPI = 0xc6cb4692, Outbound SPI = 0x92a645aa
May 02 2017 13:38:44: %ASA-5-713120: Group = spoke1, IP = 183.49.47.106, PHASE 2 COMPLETED (msgid=55089711)

-------------------------
May 02 2017 14:56:01: %ASA-5-713119: Group = YUNSHU, IP = 183.49.47.106, PHASE 1 COMPLETED
May 02 2017 14:56:01: %ASA-5-713076: Group = YUNSHU, IP = 183.49.47.106, Overriding Initiator's IPSec rekeying duration from 0 to 4608000 Kbs
May 02 2017 14:56:01: %ASA-5-713049: Group = YUNSHU, IP = 183.49.47.106, Security negotiation complete for LAN-to-LAN Group (YUNSHU)  Responder, Inbound SPI = 0x3f1213b5, Outbound SPI = 0xf0380816
May 02 2017 14:56:01: %ASA-5-713120: Group = YUNSHU, IP = 183.49.47.106, PHASE 2 COMPLETED (msgid=f4d36555)
--------------------------

2017年5月5日星期五

zabbix fping 网络连通性检测,以及服务器之间的网络检测

我主要使用zabbix的两种监控项类型来做ICMP检测。
监测指标有三种:
 1. 两点之间的可用性  [ 0 , 1]
 2. 两点之间的丢包率  [ 0 -100 %]
 3. 两点之间的响应时间  [ 0 - 3000 ms]



要想完成两台服务器之间链路的状态监控,需要在zabbix agent配置key来完成。
经过google之后,找到zabbix官方论坛的一篇帖子

首先你要保证安装fping,fping这个工具功能强大,zabbix用fping返回数据来监测。

fping强大之处
1. 快速ping包,-p 30,每隔30毫秒就发送一个echo reply包
2. 整个网段搜索存活主机,-a -g 子网,例如: fping -a -g 10.0.0.0/24
3. 通过IP反查域名,fping -a -d 8.8.8.8  (3.0以上的版本才支持)


保证zabbix有权限调用fping
chown root.zabbix /etc/zabbix/fping
chmod 6710 fping
设置好后,权限情况如下:
-rws--s--- 1 root zabbix 54759 Jul 9 14:59 fping
也可以通过/etc/sudoers去配置
zabbix ALL=(ALL) NOPASSWD:/usr/bin/fping

在zabbix_agentd.conf下添加用户参数:
#fping
UserParameter=chk.fping[*],sudo /usr/bin/fping -c 3 $1 2>&1 | tail -n 1 | awk '{print $NF}' | cut -d '/' -f2

如果会报一个timeout的错误,在下面两个配置文件修改timeout值
/etc/zabbix/zabbix_agentd.conf
Timeout=30
/etc/zabbix/zabbix_server.conf
Timeout=30
关于userparameter的含义:点击链接
关于简单检查各个key,各个参数的具体含义:点击链接

简单检查的key - icmppingsec,使用时主要,数据类型是浮点型

附加上常用command的写法:
注意:导入agent配置时,ip要写为$1
packet loss
fping -p 50 -c 4 10.8.1.12 2>&1 | tail -n 1 | awk -F ' ' '{print $5}'| cut -d '/' -f3 | cut -d ',' -f1
fping -p 50 -c 4 10.8.1.12 2>&1 | tail -n 1 | awk '{print $5}'| cut -d '/' -f5 | cut -d ',' -f1

packet avg sec
fping --p 50 -c 4 10.8.1.12 2>&1 | tail -n 1 | awk '{print $NF}' | cut -d '/' -f2



2017年4月26日星期三

visio作图的小技巧

在网络拓扑图中,可能需要对图标进行简单说明:
这个时候可以用到:

模板里面的 : 网络-网络和外设-图例
英文版: Network  --- Network and Peripherals --- Legend

这个图例功能怎么用呢?
答:很简单,你往白板上放置任何图标,它都会自动生成对应的条目

如果觉得这个图例很好看,想复制后按自己的方式编辑,
可以右键图案  --- Group  --- Open Legend

2017年4月25日星期二

权限控制的误区

也许在企业里面有这样的需求:
问:我想要我们部门在文件服务器上的共享文件夹,对某些员工实施对文件只有读取的权限,但是不可以负责文件。
对于这样的需求,直接从原理上分析,即可以得出不可能做到的结论,你要打开共享文件夹的某个文本,你的pc首先要做的就是把文件从服务器上下载下来,然后打开,才能完成读取的动作,所以在看某个文件内容的时候,你已经把文件下载到本地了。

如果非要满足这样的需求,还有一种解决方案:
远程应用服务器,用微软提供的远程应用服务器,然用户登录到远程应用对文件进行查看,那就是真正做到对文件只读,不可复制的权限控制。

2017年4月11日星期二

iptables、防火墙、阿里云安全组、访问控制,网络安全设计原则,安全相关概念进阶[短小而精]

1. iptables 进阶篇

基本市面国内的防火墙都是用iptables来做的。

掌握好几个主要选项:
 
-N    --new   自定义链表
-X       删除一个自定义链表
-E     --rename-chain  重命名链表  

-j  --jump [自定义链表]

-A 后面总是接链名
 
举一个openwrt里面iptables的实际配置:
 
-N delegate_input                    # 自定义一个链表
-N zone_wan_input                    # 自定义一个链表
-t filter -A INPUT -J delegate_input           # 所有进filter表的流量去链delegate_input
-A delegate_input -i eth1 -j zone_wan_input    # eth1进来的流量去链zone_wan_input
-A zone_wan_input -p tcp -m tcp --dport 80 -m comment --comment www -j ACCEPT
-A zone_wan_input -p tcp -m tcp --dport 22 -m comment --comment ssh -j ACCEPT
 

链是可以循环嵌套的,这是一个很灵活的实现思路。

2. 防火墙与访问控制的区别
防火墙实际上与访问控制有很多不同的地方,防火墙的接口有几个与三层交换机接口不同的特性:

  • 接口需要配置名称
  • 每个接口都需要配置安全级别
  • 级别高的接口可以访问级别低的接口
  • 低级别不能直接访问高级别网络,但可以通过访问控制列表开放
与访问控制最大区别,你配置的过程中会发现防火墙的由低到高访问,只需要配置一个方向的ACL,而正常三层交换机做访问控制,需要做两个方向的ACL应用。

3. 阿里云安全组策略的特性
如果在aliyun上去对VPC网络做安全域划分与访问控制,我的最佳实践如下:
  • 默认分组加入所有的ECS实例,注意RDS没办法加入,这步实现的是:让vpc内网的所有ECS可以互访。
  • 根据相同的安全保护属性去创建安全组,注意RDS在默认是拒绝策略的时候,是没有办法与ECS直接通信的,需要额外开放
  • 安全组规则与普通的防火墙规则,还是有很多不同之处的,安全组的规则没办法使用五元组,在两个方向中,其中的两个元组是锁定的,如下:
  • 入方向可定义(三元组):协议号,端口号为本地端口,授权对象为远端的IP地址
  • 入方向默认(二元组):安全组ECS的ip地址,对端任意端口号
  • 出方向可定义(三元组):协议号端口号为远端端口,授权对象为远端的IP地址
  • 出方向默认(二元组):安全组ECS的ip地址,本端任意端口号

关键特性:
而且出方向的话,是本端先去发起的连接,就不需要再入方向再重新添加一条了,因为会有状态监测



4. 安全域划分与网络访问控制 的细腻度与排错,代表着安全功力
其实访问控制做得越细致,出现业务故障的概率就越高,而且规则要做得周到齐全,必须要对整体的业务场景很熟悉,包括有多少个数据库主机,缓存主机、会话保持主机、多少第三方接口,第三方接口分别用了哪些TCP端口,针对地址跟协议号,端口号进行开放,实现最小授权的原则。

当然排错的难度也很大,这需要开发与测试人员配合较好的情况,才能较顺利的排除故障,而最常见的办法就是让开发人员去调试他们的应用程序,得到具体的错误日志去排除故障,这是较好的办法,如果没有这样的条件(在某种开发人员不配合或者经验不足的情况下),就只能靠自己去服务器看正常情况的网络连接(netstat -an)与配置了ACL的网络连接去做对比,看看那些连接被挡导致的故障。

不得不说google的beyondCorp计划:
目的:彻底打破内网之别
原因:
1)一旦内网边界被突破,攻击者就很容易访问到企业内部应用。
2)现在的企业越来越多采用移动和云技术,边界保护变得越来越难。所以干脆一视同仁,不外区分内外网,用一致的手段去对待。

如果内网环境的概念被抛弃,所有主机对于其他主机的访问态度,都要如同来自公网不可信任主机去对待,那么就没有网络安全边界之称,这样就可以最大限度的发挥木桶效应的原则。















2017年4月9日星期日

XRDP让linux成为远程桌面代理服务器,实现远程桌面堡垒机原理


  • NeutrinoRDP 是一个实现远程桌面代理的模块
              首先安装这个模块,他会安装freeRDP
               安装步骤: 1. 安装依赖关系包
                                 2. 下载NeutrinoRDP源码包
                                 3.  编译安装
               验证: freerdp --version

  • XRDP 是主要实现远程桌面服务器的
              安装步骤: 1. 安装依赖关系包
                                 2. 下载XRDP源码包 (请到github的release下面下载)
                                 3.  编译安装
                                 4.  启动xrdp服务

2017年3月29日星期三

[转]sqlmap脱裤.csv文件中文乱码解决方法

sqlmap脱裤.csv文件中文乱码解决方法 脱下的.CSV文件默认打开方式是excel; 解决方法: 1、将导出的CSV文件用记事本打开 2、然后另存为:选择ANSI编码保存,

用户登录页面,后台的登录逻辑判断

经典的实现方式
SELECT count(*) FROM user WHERE name ='".$user."' AND password = '".sha1($password)."'"
SELECT username,pass FROM users WHERE username='$uname' AND password='$passwrd' LIMIT 0,1
SELECT * FROM users WHERE username = '$username' AND password = '$password'
另一种实现方式 先通过用户名去数据库查询相关用户的密码字段,并且检查只有一条,如果有两条以上就应该判断为false。 这可以防止基于约束的sql注入攻击。 查询到密码字段后,与post方法获取到的密码进行比对,这样,就不存在sql注入bypass登录页面的问题了。

参考链接:
1. 防SQL注入攻略
2. 使用php实现简单的登录系统
3. 从万能密码看SQL的逻辑运算符

2017年3月16日星期四

cisco ASA 防火墙查找重启原因

1. show crashinfo
2. dir flash:/crash.txt
3.通过日志服务器查找原因
4.通过zabbix监控接口流量情况与cpu内存利用情况

这是一次在debug过程导致重启的事故,从crashinfo消息
看出是ssh进程导致的,与debug关系不大。

阿里云部署strongswan与flexGW (实现linux与cisco asa 5520对接)

0x00 使用flexGW与对端CISCO asa 5520建立IKEv2 ipsec vpn

首先要介绍一下FlexGW,它是阿里开源的一个项目,FlexGW项目地址
它包含了两个开源组件,openvpn、strongswan
但是这里,只需要用到strongswan即可,strongswan的官网首页有许多
IKE相关的RFC编号,可以多看看

环境:
         OpenVPN 2.3.14 x86_64-redhat-linux-gnu
         strongSwan U5.4.0/K2.6.32-573.22.1.el6.x86_64
         CentOS release 6.5 (Final)

0x02 根据官方文档配置

    搭建VPN网关 是阿里官方flexGW web图形配置界面介绍,加上cisco ASA的配置。
    注意配置两端的参数要一致。
     
0x03 我的配置

    首先定义允许经过VPN的流量
    access-list ALIVPN extended permit ip 172.16.0.0 255.255.0.0 10.8.0.0 255.255.0.0
    
    重要提示:在这里可能会出现下面的报错。
    原理:strongswan会把允许的流量列表发过来,必须要与ALIVPN列表精确匹配,
               否则就不能正常建立ipsec sa。
  以下是之前的写法:
               access-list IT-2-ALIVPN extended permit ip 172.16.11.0 255.255.255.0 10.8.0.0 255.255.0.0
  日志错误
        Negotiation aborted due to ERROR: Failed to find a matching policy
  调试错误
    IKEv2-PROTO-1: (64): Failed to find a matching policy
  原因
访问控制列表与对端的流量筛选器不一致


  crypto ikev2 enable wan
  crypto ikev2 policy 10
  encryption aes-256 3des
  integrity sha256 md5
  group 5 2 1
  prf sha256 md5
  lifetime seconds 86400

  tunnel-group HardWay type ipsec-l2l        # 这个一直提示错误的信息
  tunnel-group HardWay ipsec-attributes
  ikev2 remote-authentication pre-shared-key cisco123
  ikev2 local-authentication pre-shared-key cisco123
  
 调试出下面错误
  IKEv2-PLAT-1: Failed to set P1 auth to build policy
  IKEv2-PLAT-1: unable to build ikev2 policy
  IKEv2-PROTO-1: (38): Failed to locate an item in the database
 
 更换了tunnel-group ID后,正常连接隧道
  tunnel-group 99.99.99.99 type ipsec-l2l    # 把HardWay改成99.99.99.99
  tunnel-group 120.77.32.39 ipsec-attributes
  ikev2 remote-authentication pre-shared-key cisco123
  ikev2 local-authentication pre-shared-key cisco123
 
  crypto ipsec ikev2 ipsec-proposal itplus
  protocol esp encryption 3des 
  protocol esp integrity md5
 
 crypto map cry-map 50 match address ALIVPN
 crypto map cry-map 50 set peer 99.99.99.99
 crypto map cry-map 50 set ikev2 ipsec-proposal itplus

 第二次报错
  IKEv2-PLAT-1: IKEv2 protocol not allowed by policy set for vpn-tunnel-protocol
  IKEv2-PLAT-1: Connection is not authorized based on configured attributes
  IKEv2-PROTO-1: (39): Failed to register new SA with platform

 第二次报错的解决方法
 
  group-policy ALI_VPN internal
  group-policy ALI_VPN attributes
  vpn-idle-timeout 30
  vpn-tunnel-protocol ikev2
  
  tunnel-group 99.99.99.99 general-attributes
  default-group-policy ALI_VPN

0x03 两个SA建立后,ping不同?
        

ping不通的原因:
     ESP 数据包必须经过NAT,而经过NAT后源地址被转换,校验失败,数据包丢弃。
     出个问题,ESP数据包可以不走NAT吗?
解决方法:
      在asa做一个二次NAT,让源地址与目标地址都不转换的经过NAT。
 object network XYJCOM
 subnet 172.16.0.0 255.255.0.0
 
 object network ALICLD
 subnet 10.8.0.0 255.255.0.0
 
 nat (lan,wan) source static XYJCOM XYJCOM destination static ALICLD ALICLD no-proxy-arp route-lookup

0x04 排错思路

排除思路:
一种是开debug
debug crypto ikev2 protocol
debug crypto ikev2 platform

另外一种是查看日志

show logging | in x.x.x.x   (过滤对端IP地址)






2017年3月15日星期三

阿里云部署openvpn L2L - C/S架构 (or site to site)

0x00 基于LAN-TO-LAN的阿里云部署C/S架构openvpn

      这次依然使用openvpn的C/S架构,但是实现的是LAN-TO-LAN vpn,实现两边的内网互访。而不是默认的c/s架构,只能由client访问到服务器内网的资源。
环境:
         OpenVPN 2.3.14 x86_64-redhat-linux-gnu
         CentOS release 6.5 (Final)


0x01  点对点VPN

        1.不需要开启iptables
2.添加合适的路由,可以在openvpn的配置文件下去完成
3.需要开启数据包转发功能,在/etc/sysctl.conf下去配置
4.查看路由表的方法:
route -n
netstat -nr
linux增加路由与删除路由
route add -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.1
route del -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.2
windows添加静态路由
route add 10.8.0.0 mask 255.255.255.0 172.16.11.196

0x02 一些调试与排错技巧

        配置文件快速查看
            grep "^[^#;]" server.conf 
 
        vpn调试工具
            在指定接口下抓限定条件的数据包
            tcpdump -i tun0 -n dst 10.8.1.11
            tcpdump -i tun0 -n src 172.16.11.198
 
         linux下的openvpn客户端
              apt-get install openvpn
              openvpn --config ali.ovpn
              注意:openvpn --config config/ali.ovpn 这样会有问题,不能启动
              只能到指定文件夹下去加载配置文件,才不会出错

        查看证书的命令
               openssl x509 -noout -text -in xxname.crt

        根据证书的common name,里面有五个信息可以看
       Issuer   --  CA的信息
       subject  --  项目或者用户的信息
       signature Algorithm  -- 签名算法
       Validity   --  证书有效期
       Public-Key Length  -- 公钥长度
主要根据subject的common name,即CN

0x03 完成两边网络互访的关键配置项

       首先我把server.conf里面的注释内容翻译了一下
# 分配指定的ip地址给指定的客户端
# 或者连接的客户端后面有私有子网也需要有VPN访问
# 使用子目录名“ccd”为指定客户端添加配置文件
# (详细内容请看man page)

# 举例: (CN: Common Name)
# 假设客户端证书的CN是“Thelonious”
# 有一个小型子网在他连接VPN的电脑后面
# 比如 192.168.40.128/255.255.255.248.
# 首先,把下面两行注释掉
;client-config-dir ccd
;route 172.16.11.0 255.255.255.0
# 然后创建一个ccd/Thelonious的文件,写入一行:
#   iroute 192.168.40.128 255.255.255.248
# 这将允许Thelonious后面的私有子网去访问VPN
# 这个例子将只会工作在路由模式而不是桥接模式
# [i.e.] 也就是,你使用的是 “dev tun” 与 “server” 指令

# 举例:
# 假设你想给Thelonious一个固定的VPN IP地址:10.9.0.1
# 首先,把下面两行注释掉
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# 然后把下面内容加入 ccd/Thelonious
#   ifconfig-push 10.9.0.1 10.9.0.2
注意文件的命名必须严格按照证书里面CN来命名