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服务