Windows 日志高级筛选实践

Windows 日志高级筛选实践

yoke88 关注 0人评论 3249人阅读 2018-11-22 11:08:06

背景

经常需要查看日志,不仅是用来排错,有些时候我还需要监控系统来抓取特定日志来帮助减少我的工作负担,以及时监控到异常出现,并作出通知及响应,那么从大量日志中快速并精确筛选出想要的日志,并且精确提取信息,是一个必备的技能。我曾经用内置的事件查看器的筛选器进行事件筛选,然后保存视图,或者使用powershell get-winevent 进行筛选,也使用logparser, 或者第三方的日志查看工具比如eventexplorer 进行日志筛选。但是总是遇到几个主要的问题:

  1. 从大量日志中过滤出极个别日志,每次执行的事件总是太长。

  2. 不能灵活的或者更精确的进行筛选。一般只能大概的匹配,然后再做一步处理。通常又遇到1的问题。

尝试和比较

经过一些尝试和使用,个人觉得powershell 的get-winevent 最方便,因为毕竟是一个脚本语言,可以进一步进行处理,而且可以很灵活的处理。logparser 很快,但是如果精确提取某些日志的字段,就没有那么容易了,windows 日志的EventData中的数据复杂多样,靠几个常规字段是没有办法灵活进行处理的。

论速度的话,除了logparser,使用xml 筛选是最快速的。但是xml 筛选需要使用复杂的、受限的xpath 1.0 (被微软实现后,有更多限制),虽然有点蹩脚又难懂,但是和时间节省算起,还是划的来的,特别是重复任务。

一个比较好的开始是从下面链接开始。

https://blogs.technet.microsoft.com/askds/2011/09/26/advanced-xml-filtering-in-the-windows-event-viewer/

正式实践

一个比较常用场景是,我经常需要精确过滤到哪个账号最近锁定了,哪台计算机锁定的,什么时候。我需要很快速的能查询到锁定日志。过去虽然我用get-winevent  –filterhashtable 可以做到这些,但是速度实在太慢了,虽然我的域控只有4台。我经常和用户说,如果你想知道你在哪台计算机上锁定了,请等待一段时间,我会把查询结果用邮件发给你。不过现在使用xpath 过滤时,我基本上可以在用户打电话过来时,告诉他这些信息。

下面XML 过滤AD安全日志中的最近一天的某个用户名的锁定日志

<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[EventID=4740 and TimeCreated[timediff(@SystemTime) &lt;= 86400000] and Provider[@Name='Microsoft-Windows-Security-Auditing']]]
and
*[EventData[Data[@Name='TargetUserName']='somebody']]
</Select>
</Query>
</QueryList>

如果你只想过滤最近一天所有用户的锁定日志,那么这样写

<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[EventID=4740 and TimeCreated[timediff(@SystemTime) &lt;= 86400000] and Provider[@Name='Microsoft-Windows-Security-Auditing']]]
</Select>
</Query>
</QueryList>

上面过滤XML可以在 事件查看器的 筛选当前日志–》XML—》手动编辑查询中进行测验。

image

OK ,为了方便使用,我们做成一个powershell function ,方便日常使用,直接上例子。

function get-lockedEvent{     <#     .SYNOPSIS         Function to filter user locked event which id=4740     .DESCRIPTION         This function search user locked events in DC security logs, this function need the domain admin priv.     .EXAMPLE         get-lockedEvent -loginname oaoperator -show     .EXAMPLE         PS C:\> get-lockedEvent -loginname oaoperator -summary         Count Name         ----- ----         457 Oaoperator, OA     .EXAMPLE         PS C:\> get-lockedEvent -loginname oaoperator         Username   LockedPC Datetime           EventLocation         --------   -------- --------           -------------         Oaoperator OA       2018/9/27 10:27:40 dc02         Oaoperator OA       2018/9/27 10:32:40 dc02     #>          [cmdletbinding()]     param(         [parameter(Mandatory=$false)]         [string]         $loginname,         [Parameter(Mandatory=$false)]         [switch]         $summary,         [Parameter(Mandatory=$false)]         [switch]         $show     )
# filter Locked Events generated in 1 day and username eq loginname     $f2=@'     <QueryList>     <Query Id="0" Path="Security">       <Select Path="Security">       *[System[EventID=4740  and TimeCreated[timediff(@SystemTime) &lt;= 86400000] and Provider[@Name='Microsoft-Windows-Security-Auditing']]]        and        *[EventData[Data[@Name='TargetUserName']='{0}']]       </Select>     </Query>     </QueryList>
'@
# filter Locked Events generated in 1 day      $f1=@'     <QueryList>     <Query Id="0" Path="Security">       <Select Path="Security">       *[System[EventID=4740  and TimeCreated[timediff(@SystemTime) &lt;= 86400000] and Provider[@Name='Microsoft-Windows-Security-Auditing']]]       </Select>     </Query>     </QueryList>
'@     if($loginname){         $f=$f2 -f $loginname     }else{         $f=$f1     }     $DCs=Get-ADDomainController -Filter *|%{$_.hostname}     $r=Invoke-Command -ComputerName $DCs -ArgumentList @($f) -Command{         param(             $filter         )         $events=Get-WinEvent -FilterXml  $filter         $events|%{             $e=[xml]$_.toxml()             [PSCustomObject]@{                 'Username'=$e.Event.EventData.Data.where({$_.Name -eq 'TargetUserName'})."#text"                 'LockedPC'=$e.Event.EventData.Data.where({$_.Name -eq 'TargetDomainName'})."#text"                 'Datetime'=[datetime]$e.Event.System.TimeCreated.SystemTime                 'EventLocation'=$e.Event.System.Computer             }         }     }|Sort-Object -Property Datetime |select -Property 'UserName','LockedPC','Datetime','EventLocation'     if($summary){         $r=$r|Group-Object -Property Username,LockedPC -NoElement     }          if($show){         $r|Out-GridView     }else{         $r     }
}

另外一个实践

由于最近有一些计划任务的状态需要监控,而且考虑到这应该是一个非常通用的需求,所以我想过滤计划任务名称匹配\qq_ent 开头的,然后任务执行结果不为0的日志,尽管我参考着下面的一些blog 链接,也让我尝试了好一会,我想应该记录下这些过程。

我们先来看看计划任务日志的xml 内容:

<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event">
<System>
  <Provider Name="Microsoft-Windows-TaskScheduler" Guid="{DE7B24EA-73C8-4A09-985D-5BDADCFA9017}" /> 
  <EventID>201</EventID> 
  <Version>2</Version> 
  <Level>4</Level> 
  <Task>201</Task> 
  <Opcode>2</Opcode> 
  <Keywords>0x8000000000000000</Keywords> 
  <TimeCreated SystemTime="2018-11-18T05:00:02.058811400Z" /> 
  <EventRecordID>144817</EventRecordID> 
  <Correlation ActivityID="{110529FD-DBFD-4E59-B207-83DF8CC779B8}" /> 
  <Execution ProcessID="1508" ThreadID="24392" /> 
  <Channel>Microsoft-Windows-TaskScheduler/Operational</Channel> 
  <Computer>ComputerName.xxx.com</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
<EventData Name="ActionSuccess">
  <Data Name="TaskName">\qq_ent\store_to_db</Data> 
  <Data Name="TaskInstanceId">{110529FD-DBFD-4E59-B207-83DF8CC779B8}</Data> 
  <Data Name="ActionName">C:\Users\UserName\AppData\Local\Programs\Python\Python37\python3.exe</Data> 
  <Data Name="ResultCode">2147942401</Data> 
  <Data Name="EnginePID">22172</Data> 
  </EventData>
  </Event>

说下我们的任务:

  1. 匹配 EventData 中Data 名称为TaskName的,它的值应该是\qq_ent\xxxx

  2. 匹配 EventData中 Data 名称为ResultCode的,它的值应该是>0 或者不等于0的

  3. EventID=201

  4. Provider Name=Microsoft-Windows-TaskScheduler

最后成型的过滤,和微软的之前的例子不一样。

 <QueryList>
    <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
      <Select Path="Microsoft-Windows-TaskScheduler/Operational">
      *[System/EventID=201]
       and 
      *[EventData[
                    (
                        Data[@Name='TaskName']='\qq_ent\download_images' 
                    or 
                        Data[@Name='TaskName']='\qq_ent\store_to_db_offline'
                    or 
                        Data[@Name='TaskName']=='\qq_ent\gatherQQmsg' 
                    or 
                        Data[@Name='TaskName']=='\qq_ent\store_to_db'
                    )
                    and
                        Data[@Name='ResultCode'] !=0
        ]]
      </Select>
    </Query>
    </QueryList>

我之前按照微软的例子是这样写的,结果不对的。

    <QueryList>
    <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
      <Select Path="Microsoft-Windows-TaskScheduler/Operational">
      *[System/EventID=201]
       and 
      *[
            EventData[
                    (
                        Data[@Name='TaskName'] 
                        and 
                        (
                            Data='\qq_ent\download_images' 
                            or 
                            Data='\qq_ent\store_to_db_offline'
                            or 
                            Data='\qq_ent\gatherQQmsg' 
                            or 
                            Data='\qq_ent\store_to_db'
                        )
                    ) 
                    and
                    (
                        Data[@Name='ResultCode'] and Data !='0'
                    )
            ]
        ]
      </Select>
    </Query>
    </QueryList>

注意事项

  1. event log 中的Xpath 受限,能使用的函数有限,因此如果你想筛选字符串,你会发现starts-with contains 这些xpath 函数都不支持。尽量使用其他条件筛选,然后再使用powershell内置过滤功能进行过滤,当然这要牺牲一些处理时间。

  2. Xpath中的一些字符串要进行转义,比如你想比较一个数字,可能写Data>0,那么> 要转义成&gt;

参考资料

https://blogs.technet.microsoft.com/heyscriptingguy/2011/01/24/use-powershell-cmdlet-to-filter-event-log-for-easy-parsing/

https://blogs.technet.microsoft.com/heyscriptingguy/2014/06/04/data-mine-the-windows-event-log-by-using-powershell-and-xml/

https://blogs.technet.microsoft.com/heyscriptingguy/2014/06/03/use-filterhashtable-to-filter-event-log-with-powershell/

https://blogs.technet.microsoft.com/askds/2011/09/26/advanced-xml-filtering-in-the-windows-event-viewer/

©著作权归作者所有:来自51CTO博客作者yoke88的原创作品,如需转载,请注明出处,否则将追究法律责任

服务器 Windows Server

1

分享

收藏

上一篇:网络命令初步排错 下一篇:使用 Advanced Inst…

yoke88

54篇文章,31W+人气,17粉丝

关注

Ctrl+Enter 发布

发布

取消

推荐专栏更多

VMware vSAN中小企业应用案例

掌握VMware超融合技术
共41章 | 王春海
¥51.00 436人订阅

订   阅

带你玩转高可用

前百度高级工程师的架构高可用实战
共15章 | 曹林华
¥51.00 508人订阅

订   阅

负载均衡高手炼成记

高并发架构之路
共15章 | sery
¥51.00 577人订阅

订   阅

基于Kubernetes企业级容

86岁国宝级中医两次患癌,两次抗癌成功,一直在用此法

齐鲁壹点

发布时间:04-0811:41齐鲁晚报齐鲁壹点官方帐号

他是一代医宗,从医60余年,把中医领进太空:研制防治太空病中药“太空养心丸”,早在神五发射时,就采用中医方法为杨利伟调养身体。他义捐九世祖传秘方制成王氏保赤丸,造福了千家万户(以上内容据《中国中医药报》2009年6月22日第三版及《南通网》报道)……他是名扬天下的国医大师、王氏中医世家第19代传人王绵之。

王绵之教授

但大多数人都不知道,王老自己曾患过结肠癌、肺癌,但都被一一化解,康复得很好(据《老同志之友》2012年16期)。可能您会好奇,觉得王老一定有什么抗癌秘方吧?要说秘方,那还真有,而且非常简单!

盘腿一坐,养心抗癌

常年的养生实践和两次抗癌经历中,王老最喜欢一件事:打坐。他认为,打坐可以让人心无杂念,让大脑得以充分休息,是极好的养心方法;养好了心,在面对疾病甚至癌症时,就能心态平和地战胜疾病,“快乐是最好的抗癌药”。

王氏打坐法具体方法

1、坐姿不强求。坐于高椅、板凳自便,双腿交叉。最好于毯状物上盘腿而坐,五指张开,放于膝或大腿上。

2、全身处于微微绷紧中的放松状态,挺胸、展肩、收腰、收颌,头顶像放了一碗水或一本书的感觉。

3、双眼睁开,看所有的一切都逐渐进入广阔状态,刚开始不习惯,可先闭一会儿眼睛,再看自己的鼻尖,慢慢凝神后再抬眼。

4、深呼吸,即腹式呼吸,这是王老的养生窍门。此法简单易行:向外呼气时瘪肚子,向内吸气时鼓肚子,按照正常的呼吸频率即可。一边呼吸,一边进入大脑空白的状态,可以想象大海、森林等清新宜人的画面,帮助放松身心。他说这样可以将身体里的废气呼出去,然后再将新鲜的空气吸入体内,起到吐故纳新的作用。

5、刚开始打坐10-20分钟即可,当双腿和脚掌麻胀感增强,可将双腿收起后交叉,双手相交,抱膝而坐,深呼吸至双腿麻胀感消失后再起立。

6、如果盘腿的时候,发现自己根本静不下心来,而且腿也疼。那么,此时,您就可以定下心来,先找到腿疼的地方,如果是胆经,可以先顺着胆经揉一揉,等它不怎么疼了再盘。

没打坐的时候,可能不知道自己哪里不舒服,但是一打坐,就知道了自己哪里酸、哪里痛,应该从哪里开始疏通。揉着揉着,就会感觉到由痛变酸,由酸转正常的滋味了。您只要每天这样修复一点点,您的身体就会越来越强壮。

7、一定要每天坚持,打坐时觉得疼就干脆放弃了,或者今天练一下,明天就不练了,打坐也就失去了它的灵性。

抗癌国医的抗癌菜

除了打坐,王老还推荐了两种食物:打霜的茄子和苦瓜,夏天吃正好。

1

霜打茄子常入药

中药许多方剂中,就经常使用“霜打茄子”作为一味药。

茄子的全身:茄花、茄根、茄汁都是良药,古代就有秋茄根治疗肿瘤的记载。

现代医学也证明,茄子中所含有龙葵碱、葫芦素是具有抗癌能力的。茄子可以放心吃,抗癌,延寿。

提醒

在茄子的所有吃法中,拌茄泥是最健康的。

首先,拌茄泥加热时间最短,只需大火蒸熟即可,因此营养损失最少。其次,拌茄泥用油最少,蒸好茄子捣成泥后,只需稍微淋一些调味汁即可。最后,拌茄泥的吃法营养吸收最完全,因为它不用削去茄子皮,而茄子皮中含有大量的生物活性物质。

2

苦瓜:李时珍口中的“一等瓜”

由于味道苦涩,很多人不喜欢吃苦瓜,这是错误的!明代神医李时珍将它成为“一等瓜”。

西医证明:苦瓜中含有一种类奎宁蛋白的东西,能将癌细胞或其他不正常的细胞杀掉。

此外,苦瓜的种子中含有一种蛋白酶抑制剂,是可以抑制肿瘤细胞分泌蛋白酶,从而遏制癌细胞的扩散。

H3C S5720交换机系统文件丢失一直重启的解决办法

转载 weixin_33814685 最后发布于2017-08-23 14:09:55 阅读数 715 收藏

展开

一、故障描述:

    公司买了两台交换机H3C S5120,由于小兄弟没经验,把flash:给格式化了,交换机不停的在重启,无法进入系统。

二、解决思路:

    1.下载tftp软件。

    2.从另外一台交换机的flash中下载一份系统文件。

    3.装系统文件上传致故障交换机的flash中,重启交换机,故障解决。


三.详细配置过程如下:

1.下载tftp软件。

链接:https://pan.baidu.com/s/1qYqfsle 密码:751q

(1)把电脑本地网卡配置:

                  IP地址:10.10.10.2

                 子网掩码: 255.255.255.0   


(2)打开tftp软件:


    下载的软件目录data中已存有交换机的系统文件(s5720li-v200r010c00spc600.c)

    如果在遇到相同型号的设备,可省略第2步。直接上传到故障交换机即可。

2.从另外一台交换机的flash中下载一份系统文件(s5720li-v200r010c00spc600.cc)。

(1)查看另一台交换机flash:

<HUAWEI>dir

Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName

    0  drw-              –  Aug 23 2016 03:00:52   dhcp

    1  drw-              –  Aug 23 2016 03:00:24   user

    2  drw-              –  Aug 23 2016 03:01:03   logfile

    3  drw-              –  Aug 23 2016 03:00:12   $_install_mod

    4  -rw-            836  Aug 23 2016 03:04:07   rr.bak

    5  -rw-            836  Aug 23 2016 03:04:07   rr.dat

    6  -rw-             28  Aug 23 2016 03:03:55   private-data.txt

    7  drw-              –  Aug 23 2016 03:00:52   localuser

    8  -rw-     64,011,164  Dec 15 2016 17:51:28   s5720li-v200r010c00spc600.cc

(2)配置交换机VLAN1 IP为10.10.10.1:

    #interface Vlanif1

    #ip address 10.10.10.1 255.255.255.0

(3)从交换机下载系统文件:

<HUAWEI>tftp 10.10.10.2 put s5720li-v200r010c00spc600.cc

Info: Transfer file in binary mode.

Uploading the file to the remote TFTP server. Please wait…

100%    

TFTP: Uploading the file successfully.

64011164 byte(s) sent in 1435 second(s).

<HUAWEI>

3.将系统文件上传致故障交换机的flash中,重启交换机,故障解决。


(1)机器重启生出现下面界面按Ctrl + B

INIT: version 2.88 booting

Starting udev

Starting Bootlog daemon: bootlogd.

Populating dev cache

INIT: Entering runlevel: 3ge = 5

Stopping Bootlog daemon: bootlogd.

Wind River Linux 6.0.0.30 localhost console

localhost login: root (automatic login)

login[1922]: root login on ‘console’

Jan 23 2017, 19:21:20

mknod: /dev/mvPP: File exists

BootLoad version : 020a.0001

Backup U-Boot ……………………………………………………. done

Press Ctrl+B or Ctrl+E to enter BootLoad menu:  2

(2)进入下面启动菜单:


1)选择4

Enter your choice(1-8):

BootLoad Menu

     1. Boot with default mode

     2. Enter serial submenu

     3. Enter startup submenu

4. Enter ethernet submenu

     5. Enter filesystem submenu

     6. Enter password submenu

     7. Clear password for console user

     8. Reboot

    (Press Ctrl+E to enter diag menu)

Enter your choice(1-8): 4


2)选择4

        ETHERNET  SUBMENU

     1. Update BootROM system

     2. Download file to Flash through ethernet interface

     3. Upload Configuration file to Ftp through ethernet interface

4. Modify ethernet interface boot parameter

     5. Return to main menu

Enter your choice(1-5): 4

3)选择1,配置下载文件,指定交换机的IP,及tftp服务器也就是电脑的IP

        BOOTLINE  SUBMENU

1. Set TFTP protocol parameters

     2. Set FTP protocol parameters

     3. Return to ethernet menu

Enter your choice(1-3): 1

‘.’ = clear field;  ‘-‘ = go to previous field;  ‘Ctrl+D’ = quit

Load File name      : s5720li-v200r010c00spc600.cc

Switch IP address   : 10.10.10.1

Server IP address   : 10.10.10.2

Starting to write BOOTLINE into flash … done


4)选择3 返回

        BOOTLINE  SUBMENU

     1. Set TFTP protocol parameters

     2. Set FTP protocol parameters

3. Return to ethernet menu

Enter your choice(1-3): 3

5)选择2 下载文件到flash中

        ETHERNET  SUBMENU

     1. Update BootROM system

2. Download file to Flash through ethernet interface

     3. Upload Configuration file to Ftp through ethernet interface

     4. Modify ethernet interface boot parameter

     5. Return to main menu

Enter your choice(1-5): 2

Use tftp to download file : s5720li-v200r010c00spc600.cc , please wait for a moment.

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….

Download file successfully.


6)选择5 返回

        ETHERNET  SUBMENU

     1. Update BootROM system

     2. Download file to Flash through ethernet interface

     3. Upload Configuration file to Ftp through ethernet interface

     4. Modify ethernet interface boot parameter

5. Return to main menu

    Enter your choice(1-5): 5


6)选择1 设置默认启动模式

        BootLoad Menu

1. Boot with default mode

     2. Enter serial submenu

     3. Enter startup submenu

     4. Enter ethernet submenu

     5. Enter filesystem submenu

     6. Enter password submenu

     7. Clear password for console user

     8. Reboot

    (Press Ctrl+E to enter diag menu)

Enter your choice(1-8): 1

Now, the current startup file is flash:/s5720li-v200r010c00spc600.cc

Info: Check signature, please wait…………

System total memory is 0x15200000

Start to initialize the LSW …

Initializing the LSW ……………………………………………… done

Initializing netlink ……………………………………………… done

Initializing fast netlink …………………………………………. done

Backup BootLoad ………………………………………………….. done

Backup Kernel ……………………………………………………. done

Backup RamDisk …………………………………………………… done

Stack status : enable

ECM Stack status : run

Initializing FSP task begin …

Initializing DEV module …………………………………………… done

Initializing hardware system ………………………………………. done

Begin to start the system …

Registering IPC and VP callback to platform …………………………. done

Initializing VFS ………………………………. Done

Checking startup system-software …………………………………… done

Reading PAF file …………………………………………………. done

Initializing VOS monitor ……………………….. Done

CFM initialization advance ……………………… done

Initializing PAT ………………………………. Done

Initializing HA ……………………………….. done

VFS registering to HA ………………………….. Done

VRP root begin …

VRP root end

CFG initialization begin ……………………….. done

CFM initialization begin ……………………….. done

CLI initialization begin ……………………….. done

Registering VRP all link command begin …………… Done

Creating task begin …

Creating task end

Task initialization begin …

Task initialization end

ECMM status : run

Cmd registering begin …

Cmd registering end

Task awake begin …

Task awake end

Recover configuration begin …

Recover configuration end

Press ENTER to get started.

Login authentication

Username:admin

Password:

7)启动到输入用户名和密码的界面,证明交换机系统恢复完成。输入默认用户名和密码登录交换机:

用户名:admin

密码:admin@huawei.com

转载于:https://blog.51cto.com/fengyunshan911/1958631

让你的 Firefox 飞起来(Firefox超速绝密方法)

让你的 Firefox 飞起来(Firefox超速绝密方法)

分类: 系统运维

2010-04-23 12:03:29

首先,在URL栏输入“about:config”, 将打开一个参数的命令行清单,这就是我们以下进行编辑的第一步。
Firefox 加速技巧:修改参数- -让灵动的Firefox跑得更快 1.network.http.pipelining
在 Filter 中输入 network.http.pipelining,双击赋值为 true,默认为 false。如果没有找到这个键值,可以右键新建一个 Boolean,把她赋值为 true 就 OK 了。
还是像我在从前解释过的那样,激活这个键值之后,Pipelining同时发出成倍数的连接请求,从而达到提升连接速度的效果。网络上的大多数网站都是基于 HTTP 协议,而 HTTP1.1可以支持多线程的连接请求,通过这个操作可以减少Firefox载入网页的时间。不过并不是所有网页所在的服务器都支持这种操作,所以当你修改键值之后却看不到一点实际效果的时候,请不要对我破口大骂。
2.network.http.pipelining.maxrequests
在 Filter 中输入 network.http.pipelining.maxrequests,双击并赋值为 8,默认键值为 4。
3.network.http.proxy.pipelining
在 Filter 中输入 network.http.proxy.pipelining,双击并赋值为 true。
这两条优化的道理同上,这里就不再多解释了。
4.network.dns.disableIPv6
在 Filter 中输入 network.dns.disableIPv6,双击并赋值为 true。
IPv6 把 IP 地址由 32 位增加到 128 位,从而能够支持更大的地址空间,当用户在终端向一个IPv6-capableDNS服务器发送连接请求时,也许服务器端会错误的返回给用户一个 IPv4 地址。而 Firefox可以对这一切明察秋毫,不过在Firefox纠错的同时也必然会导致信号的延迟,所以这里我们把她赋值为 true,禁用掉她。
5.content.interrupt.parsing
右键新建 Boolean 值,键名为 content.interrupt.parsing,赋值 true。
默认这个键值并不存在。我们激活这个键值之后,当目标网页载入时,Firefox会根据一定频率打断解析的过程,不断的向用户反馈她所收集到的网页信息,有点像流媒体的意思。这时的 Firefox很聪明,不会一根筋的一直钻牛角。在下面的内容中我还会具体讲一下这个键值的魅力所在。
6.content.max.tokenizing.time
右键新建 Integer 值,键名为 content.max.tokenizing.time,赋值 2250000。
这个键值的作用其实就是指定一个循环事件的处理周期,这里的单位是微秒,要是我没有算错的话。理论上当我们将这个值取的越小,网页就会从视觉上载入的越流畅,因为Firefox会在很短的单位时间里反馈回解析到的网页信息。可是这样无疑延迟了网页整体载入的时间,所以在这里我们不妨将这个周期取的大一些,理论上可以加速网页的载入。
7.content.notify.interval
右键新建 Integer 值,键名为 content.notify.interval,赋值 750000。
载入一个网页其实也是一门很大的学问。让我们来放一个慢动作,我们姑且先把在终端第一次收到的网页信息很不专业的叫做预载入页面吧,这个页面有可能是不完整的图片或者文字,或者别的媒体文件。从我们第一次向远端主机发出连接请求到我们在终端收到这个预载入页面花费的时间,就是这里我们要定义的键值。理论上当我们将这个时间设置的很低时,肯定会更快的拿到所谓的预载入页面,可这是一种杀鸡取卵的做法,这样无形中反而增加了我们整体页面的载入时间。按照官方的说法,低于 100,000 将会降低 Firefox 的性能,那好吧,那我们把她彪到 750000 吧。
8.content.notify.ontimer
右键新建 Boolean 值,键名为 content.notify.ontimer,赋值 true。
为了使我们上面设置的 750000 微秒生效,还需要把这个键值激活。只有这两个键值配合,才会起作用。
9.content.notify.backoffcount
右键新建 Integer 值,键名为 content.notify.backoffcount,赋值 5。
这个键值控制Firefox的内置计数器在归零之前载入页面返回的次数。我们将目标网页分成好多个部分进行下载,每下载完一个部分,计数器归零一次。-1就是没有限制,值为0时这项功能被禁用。这里我们将她设置成5,当返回的次数达到五次而这部分网页还没有完全下载完时,那么剩下的没有下载完的网页内容将不会再按照我们预告设置的周期,像之前的五次那样一点一点的搬运回来,而是会一次性的下载完。也就是说在这个部分的网页下载过程中,Firefox 一共向我们反馈了 6次信息,前5次的时间间隔是我们在上面的键值中设置的周期 2250000微秒,而第6次也就是最后一次则没有时间限制,什么时候把剩下的下完了,什么时候反馈回来。
只有当我们在上面提到的 content.notify.ontimer 键值为 true 的时候,这里的设置才会生效。
10.content.switch.threshold
右键新建 Integer 值,键名为 content.switch.threshold ,赋值 750000,也就是四分之三秒。
在前面我们提到了一个键值content.interrupt.parsing,通过激活她实际上我们可以在载入页面的过程中跟Firefox产生互动,毕竟我们每一个人的心里都充满了爱。把 content.interrupt.parsing激活后当页面载入时Firefox会有两种操作模式:高频和低频中断模式。使用高频模式时,网页回馈的频率也很高,我们坐在显示器前看到的网页载入过程也会更加的平滑。低频时网页回馈的频率相对比较低,可是这时反而加快了网页载入的时间。当我们移动鼠标或者触击键盘时,高频模式被激活。在经过某一段时间我们没有碰鼠标和键盘,程序没有接到鼠标和键盘发出的任何指令时,Firefox就会自动进入低频模式工作,而这所谓的某一段时间,就是我们这里要指定的值。
11.nglayout.initialpaint.delay
右键新建 Integer 值,键名为 nglayout.initialpaint.delay,赋值 0。
这里实际上延迟了整个网页的显示速度,但是因为用户更喜欢在整个网页完全截入之前就开始阅读网页 (就像流媒体那样),所以在这里可以把值调为零,加速用户阅读网页的速度,有时候阅读速度和载入速度并不是成正比的。
在网络状况稳定的情况下这些优化的确是会起到一些效果的,并不光是心理作用,大家在为自己的浏览器提速时,也可以稍微参考一下。
备注:如果不是原版只需要修改前四项即可。

CentOS7.1 VNC Server服务配置

CentOS7.1 VNC Server服务配置
原创 jim_hwg 最后发布于2016-03-08 16:23:48 阅读数 28191 收藏
展开
一、安装VNC相关包

yum -y install tigervnc tigervnc-server tigervnc-server-module

二、复制配置模板文件为vncserver@:1.service

cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service

三、修改/lib/systemd/system/vncserver@:1.service配置文件

[root@kvm01 ~]# cat /lib/systemd/system/vncserver\@\:1.service | grep -v ^# | grep -v ^$
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/usr/sbin/runuser -l root -c “/usr/bin/vncserver %i”
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

四、设置VNC用户密码

vncpasswd

输入两次密码,完成密码设置
五、重新载入system配置

systemctl daemon-reload

六、启动vncserver@:1.service服务,并设置开机自启

systemctl start vncserver@:1.service && systemctl enable vncserver@:1.service

注:若系统无法正常关机,则再次启动,此服务无法启动,解决办法参照步骤七

七、问题解决

1.报错:Job for vncserver@:1.service failed because the control process exited with error code. See “systemctl status vncserver@:1.service” and “journalctl -xe” for details.

处理方法:

rm -rf /tmp/.X11-unix/*
————————————————
版权声明:本文为CSDN博主「jim_hwg」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hnhuangyiyang/java/article/details/50827670

Centos7配置Apache实现HTTPS

Centos7配置Apache实现HTTPS

clip_image001

王非雨关注0人评论11510人阅读2018-10-15 16:35:54

HTTP简介

Web服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷。任何”中间人”,通过精心防止的数据包嗅探器,是能够看到任何经过的数据包内容。更进一步,恶意用户甚至可以在传输路径设置一个假冒的WEB服务器冒名顶替实际的目标Web服务器。在这种情况下,最终用户可能实际上与假冒者服务器,而不是真正的目的服务器进行通信。这样,恶意用户可以通过精心设计的表单欺骗终端用户获取到敏感信息,如用户名密码。

为了处理这些类型的漏洞,大多数供应商往往在他们的web服务器应用HTTPS协议。对于只读类型的网站,用户只能读取内容,并没有实际提交任何信息,HTTP仍然是一个可行的选择。但是,对于保存敏感信息的网站,比如:用户需要登录来获得网站的服务,那么HTTPS是必须的。

HTTPS能够为一个网站提供以下能力。

1、确保所有经过服务器传输的数据包都是经过加密的。

2、建立了一个官方数字证书证书,使得假冒服务器无法冒充真正的服务器。

HTTPS证书获取途径

1、自签名证书被推荐用于测试目的和个人项目。自签名证书,也可以用于服务提供商,不过一般适用于用户互相信任的情形。另外,自签名证书不用花钱购买。

2、证书可以由社区为基础的认证供应商如StartSSL和CACERT办法。这些证书也不需要花钱,但建议为个人项目。

3、对于全球性商业网站,建议从值得信赖的知名证书颁发机构购买证书。这些证书需要花钱,但他们增加了网络服务提供商的信誉。

实验环境:

系统版本:centos7x3.10.0-514.el7.x86_64

Apache版本:Apache/2.4.6

关闭防火墙并禁止开机自启

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux

修改主机名

vi /etc/hostname
apache.xyc.com

域名绑定IP

vi /etc/hosts
192.168.152.170 apache.xyc.com

重启 reboot

安装apache服务

1、安装apache环境依赖

yum -y install mod_ssl openssl httpd

2、创建CA证书存放目录

mkdir /etc/httpd/ca

3、修改配置文件

vi /etc/httpd/conf.d/ssl.conf
clip_image002
clip_image003
clip_image004

创建ApacheCA证书

1、进入存放证书的目录

cd /etc/httpd/ca/

2、创建自己的CA证书

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 1000 -out ca.crt
clip_image005
注:可以看到截图我写的是1000天,也就是大概三年的时间,自己可以随意设置!

3、生成CA证书签名请求

openssl req -newkey rsa:4096 -nodes -sha256 -keyout apache.xyc.com.key -out apache.xyc.com.csr
clip_image006

4、生成注册主机的证书

openssl x509 -req -days 365 -in apache.xyc.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apache.xyc.com.crt
clip_image007
注:可以看到以上截图写的是365天,有的童鞋可能不太理解,简单说一下,现在代表的意思是证书三年有效期,而客户端使用认证期限是一年,当然了写1000天就和证书一样三年后失效。

5、将证书拷贝到配置文件中路径相对应的目录

//进入证书目录

cd /etc/httpd/ca/

//拷贝证书到默认指定目录

cp apache.xyc.com.crt /etc/pki/tls/certs/
cp apache.xyc.com.key /etc/pki/tls/private/

6、重启Apache服务

systemctl restart httpd

访问测试(最好使用Firefox浏览器)

1、访问网页地址https://apache.xyc.com/

clip_image008
注:因为本地电脑无法识别自己写的域名,所以需要添加网站主机IP和域名绑定,实现方式如下:

//打开本地C盘,搜索路径C:\Windows\System32\drivers\etc
clip_image009

//用文本格式编辑第二行的hosts文件,添加一行web的IP和域名即可
clip_image010

2、再次访问网页地址https://apache.xyc.com/

clip_image011
注:看到这样的截图,基本上也算是成功了!

//点击高级
clip_image012

//点击添加列外
clip_image013

//点击确认安全列外
clip_image014
注:如上截图,说明apache的https搭建完成了!

©著作权归作者所有:来自51CTO博客作者王非雨的原创作品,如需转载,请注明出处,否则将追究法律责任

如果文章对你有帮助,请赞赏!

Cisco AP IOS升级:

方法一, 此方法也可以用于瘦AP到胖AP的升级, 可以是胖AP IOS 系统本身的版本升级:

                前提准备: Console线和网线接AP和笔记本,设置笔记本IP 10.0.0.2/8,打开TFTP设置  AP’s IOS路径(.default文件)

然后按住Mode键, 直到提示释放按键再释放Mode键,这时候AP会自动去查找TFTP的IOS路径然后升级或者替换当前的IOS.

方法二,此方法用于胖AP IOS 系统版本的升级:

ap# archive download-sw /overwrite /force-reload tftp://[IP地址]/[IOS文件名].tar IOS映像文件名区分大小写,且应完整拼写。

ap(config)# boot system flash:/xxx.bin”命令在“sh run”中不显示。“sh boot”会显示它指定的IOS。 ·不要在思科AP上使用“copy tftp flash:”。它不起作用!

各种网线线序,交叉线,千兆线,

568B线序:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕

568A线序:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕

直通线:两端同为568B线序

百兆交叉线:一端为568B,另端为568A线序 

千兆交叉线:一段位568B,另端为:绿白,绿,橙白,棕白,棕,橙,蓝,蓝白

同层设备用交叉线 

不同层用直连线 

或:同种设备用交叉线,不同种设备用纸连线 

原因:同种设备一个为信号发送,一个为信号接收

普通网线,做法备忘:   

一端: 

橙白/橙/绿白/蓝/蓝白/绿/棕白/棕(12345678)   

一端: 

橙白/橙/绿白/蓝/蓝白/绿/棕白/棕(12345678) 

双机直连网线,做法实际上就是普通网线做法的

1→3 2→6

四根线交叉,其两头的排列方式分别为:   

一端: 

橙白/橙/绿白/蓝/蓝白/绿/棕白/棕(12345678) 

1 2 3 4 5 6 7 8    

一端: 

绿白/绿/橙白/蓝/蓝白/橙/棕白/棕(36145278) 

3 6 1 4 5 2 7 8 

如果是使用简易网线测量仪,其灯跳顺序应为:

12→45→78→36→12 

你也可以把4578

四根线也交叉,即:   

1 2 3 4 5 6 7 8    

3 6 1 7 8 2 4 5

网线里的八根线各有什么作用

八根铜导线,为了减少电磁信号的相互干扰,每两根按一定的密度缠绞在一起。这样,在传输电信号时相互之间辐身出的电波就会相互抵消,有效的消除干扰。双绞线这个名字也是因为这样的结构而引伸出来的。 在外部,有一层韧性及高的保护外皮保护。
双绞线最早的使用是被用于电话信号的传输,后来才被渐渐引入到数字信号的传输当中,在很久以前,我们基本上都是使用的3类双绞线,最大只能达到16Mbps的带宽,而现在我们在计算机网络中广泛使用的都是超五类双绞线及六类双绞线。最大能达到1000Mbps的带宽。
双绞线唯一的缺点就是传输距离较短,只能达到100米,所以在布线的时候,如果使用星型拓朴结构,覆盖的范围只能达到200*200米
1000M网卡数据传输是双向的,需要使用四对线,即8根芯线。
100M以下,一般使用1、2、3、6,四根线。按标准是橙色、绿色共四根线。其中1、3一组,2、6一组 4、5为备用线 7、8则为电话线
T568A标准连线顺序从左到右依次为:1-绿白、2-绿、3-橙白、4-蓝、5-蓝白、6-橙、7-棕白、8-棕。
   T568B标准连线顺序从左到右依次为:1-橙白、2-橙、3-绿白、4-蓝、5-蓝白、6-绿、7-棕白、8-棕。
1 输出数据 (+)
2 输出数据 (-)
3 输入数据 (+)
4 保留为电话使用
5 保留为电话使用
6 输入数据 (-)
7 保留为电话使用
8 保留为电话使用
由此可见,虽然双绞线有8根芯线,但在目前广泛使用的百兆网络中,实际上只用到了其中的4根,即第1、第2、第3、第6,它们分别起着收、发信号的作用。于是有了新奇的4芯网线的制作,也可以叫做1-3、2-6交叉接法,这种交叉网线的芯线排列规则是:网线一端的第1脚连另一端的第3脚,网线一端的第2脚连另一端的第6脚,其他脚一一对应即可,也就是在上面介绍的交叉线缆制作方法中把多余的4根线抛开不要。