2008年11月18日星期二

Ubuntu Linux系统下的两个网络扫描工具

Nbtscan---从Windows网络上收集NetBIOS信息

工具名称:nbtscan-1.5.1a
应用环境:Linux  
工具介绍:这是一款用于扫描Windows网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地址。

nmap---网络扫描和嗅探工具包
工具名称:nmap-3.50 
应用环境:Linux  
工具介绍:NMap是Linux下的网络扫描和嗅探工具包。可以帮助网管人员深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有 探测结果记录到各种格式的日志中,为系统安全服务。NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包,其基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。但了nmap被发现存在DOS攻击, 针对这类攻击,可采取如下措施:安装系统卖方的最新补丁;用未受影响的系统做防火墙。 

示例:

适用于内外网的探测,以内网操作为示例(外网参数同)

简单端口扫描: nmap -vv -sT(sS、sF、sU、sA) 192.168.0.1 -D 127.0.0.1(-D伪造的地址)
OS检测: nmap -vv -sS -O 192.168.0.1

RPC鉴别: nmap -sS -sR 192.168.0.1 Linux上的portmap就是一个简单的RPC服务,监听端口为111(默认),测试网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。
官方下载及文档地址:http://insecure.org/nmap/

使用

进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):

nmap -sP 192.168.1.0/24

仅列出指定网络上的每台主机,不发送任何报文到目标主机:

nmap -sL 192.168.1.0/24

探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):

nmap -PS 192.168.1.234

使用UDP ping探测主机:

nmap -PU 192.168.1.0/24

使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:

nmap -sS 192.168.1.0/24

当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:

nmap -sT 192.168.1.0/24

UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:

nmap -sU 192.168.1.0/24

确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):

nmap -sO 192.168.1.19

探测目标主机的操作系统:

nmap -O 192.168.1.19

nmap -A 192.168.1.19

另外,nmap官方文档中的例子:

nmap -v scanme.nmap.org

这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口。选项-v启用细节模式。

nmap -sS -O scanme.nmap.org/24

进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

nmap -v -iR 100000 -P0 -p 80

随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

host -l company.com cut -d -f 4 nmap -v -iL -

进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。

其他选项:

-p (只扫描指定的端口)

单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。

-F (快速 (有限的端口) 扫描)

Tcpdump:Linux下基于命令行的抓包工具

Linux操作系统维护常用工具Sysstat介绍

sysstat这个工具,可以说是linux &Unix 以及Freebsd最常用的工具。它的主要用途就是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。
对于这个工具,如何使用呢??如果您想看即时 服务器的CPU,内存,网络使用率的命令,比如:mpstat iostat ,您可以简单的用下面的命令,如果更复杂一点,您可以用man来查看所有命令的用法。

比如:

[beinan@S11 beinan]$ iostat
Linux 2.4.22-2f (S11) 2004年10月30日

avg-cpu: %user %nice %system %iowait %idle
8.64 0.00 0.95 0.00 90.41
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
dev3-0 2.97 55.28 38.84 213314 149856

[beinan@S11 beinan]$ mpstat
Linux 2.4.22-2f (S11) 2004年10月30日

03时13分56秒 CPU %user %nice %sys %iowait %irq %soft %idle intr/s
03时13分56秒 all 8.56 0.00 0.94 0.00 0.00 0.00 90.50 84.32

比如观察磁盘的读写速度:

[beinan@S11 beinan]$ iostat -p
Linux 2.4.22-2f (S11) 2004年10月30日

avg-cpu: %user %nice %system %iowait %idle
33.54 0.00 4.95 0.86 60.65

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 26.26 186.57 481.17 16117015 41564960
hda1 3.29 1.33 26.01 115138 2246456
hda2 19.86 26.49 149.65 2288449 12927104
hda3 40.16 158.57 305.51 13697580 26391400
hda5 0.00 0.00 0.00 8 0

在每个命令中都有好多选项,这需要我们来实践,不是吗??

如果是想让服务器自动运行,并且想每个小时都有一个数据反馈,我们可以用cron 来让执行sa1 sa2,这样就有一份日志文件存在/var/log/sa/目录中。我们到时运行sar就能知道所有过去时间每个小时运行情况:

可以写一个命令到一个文件中。。。把这个文件设置为755的执行权限,放在/etc/cron.hourly目录中。

[root@S11 root]# cd /etc/cron.hourly/ 进入目录
[root@S11 cron.hourly]# touch sa1ho 创建文件,这个文件名可以自己来命名
[root@S11 cron.hourly]# chmod 755 sa1ho
然后在这个文件中写入下面的一行

/usr/local/lib/sa/sa1&

这样每一个小时,就有日志文件写入/var/log/sa/目录中了,当然还有一个/usr/local/lib/sa/sa2的命令,也可以写一个文件到 在/etc/cron.weekly/目录中,sa2是做什么用的呢?自己先看看帮助文件,当然也可以写入/etc/cron.hourly/ ,这样就每小时一次。

Linux操作系统下Oracle主要监控工具介绍

1.top
top命令可实时地显示Linux系统的进程、CPU、内存、负载等的信息。它是我们了解系统整体状态最好的工具。
top命令的运行状态是一个实时的显示过程,我们可在这个界面监控系统运行情况。我们可通过几个按键来控制top命令,如按q可退出top命令状态,按s可输入信息的更新频率等。这些命令可按h帮助键查询。
2.Ps
ps命令可查询系统的进程状态,常用的命令参数是ps -aux,该命令可显示所有用户的进程,如果进程的命令太长,则显示的进程信息会不全。我们可用ps -auxw命令来加长显示,w参数可多加几个,最多可加三个,以显示更长的进程信息。
3.Kill
kill命令可终止进程,后接进程号即可。
4.Free
free可显示系统的内存使用情况。-b、-k、-m三个参数表示以bytes,kilobytes和megabytes为单位显示内存的使用情况。
5.Vmstat
使用vmstat 2 命令可每隔2秒显示一行系统信息,这些信息包括CPU占用效、内存使用情况和磁盘IO等。通过它我们可实时监控系统的资源使用情况,进行系统优化。
6.sar
sar工具可帮我们收集动态的系统信息,它的参数很丰富,功能强大。sar工具的特点是可通过计数器和计数间隔来定期、定量地输出系统状态信息。
7.watch
watch命令可重复执行某个命令,监控命令的执行状态。下面这个命令可让我们监控Z2.log文件的大小变化。
debian:~# watch -n 3 du /home/Jims/zope/log/Z2.log
-n 3表示每隔3秒执行一次du /home/Jims/zope/log/Z2.log。
8.Sysctl
使用sysctl -a可显示所有运行中的内核参数,用sysctl -w fs.file-max=10240 命令可修改fs.file-max内核参数的值,并使参数马上生效。但重启系统后,参数设置会失效,因为命令行只能修改运行中的内核参数。如果我们要把参数设置固定下来,可把内核参数写入/etc/sysctl.conf文件。该文件的格式如下:

# /etc/sysctl.conf - Configuration file for setting system variables
# See sysctl.conf (5) for information.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

9.Ulimit
使用ulimit -a可显示系统的资源限制情况。
10.Netstat
netstat -nal可显示所有的网络连接。
11.Pppstat
使用pppstats可得到ppp连接的状态信息。

watch -- 监测命令的运行结果

watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。
举例来说,Linux 系统有一个基础命令 w,可以显示当前的 uptime、负载还有登录的用户,非常方便,但是如果我想监测这些数据,看看有没有新用户登入,看看某段的时间的负载是不是太大之类的,就得手动一遍遍的运行这个命令,然后查看结果,虽然命令只有一个字母,但是还是很郁闷……
watch 就是干这个用的,直接在 watch 后面接你想运行的命令,watch 就会帮你重复运行,并把每次的结果都更新在屏幕上~
要想监测 w 命令的运行结果,只要 watch w 就可以了:
默认 watch 会以 2s 的间隔重复运行命令,你也可以用 -n 参数指定时间间隔~
还有一个实用的参数是 -d,这样 watch 会帮你高亮显示变化的区域,这样更加一目了然了~
Ctrl+c 就可以退出~
你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了~
如果你的发行版中不幸没有这个命令,可以到这里下载安装,watch 属于 procps 这个软件包。

实用技巧:如何有效率的操作Linux命令行

bash有两种输入模式vi模式和emacs模式,其中emacs是默认模式,而且操作起来也比vi模式要快捷。可以通过 set -o vi和set -o emacs来转换。

1.在命令历史中查找
强烈推荐使用 Ctrl+r, 这个键组合是反向增量查找消息历史。很好用。 比如你很久以前输入过某个命令如。 gcc -c -DKKT - Dnnn 等等,一长串, 用上下方向键来找比较困难,这时候可以Ctrl+r,然后输入gcc很快找到该命令,重复按Ctrl+r将查找更早的历史。

其实还有 Ctrl+s 是正向增量查找的,但是由于这个快捷键被终端预设成锁屏幕了,没有效果。不过可以使用命令 stty -ixon -ixoff来解除绑定.再举一个Ctrl+r和Ctrl+s的应用吧.

比如我打入了如下命令,
echo aa bb cc d ee ff gg kk qq

然后我发现我要修改一下,把d修改成dd,这时候只要Ctrl+r 输入d,就立刻定位到d所在的位置,然后Ctrl+f一下,再输入d即可

2.命令行中移动
Ctrl+f Ctrl+b 分别是前后移动一个字符的距离
Alt+f Alt+b 是前后移动一个单词的距离这个很快比如你输入了
$grep -e funtion file1 file2 file3

然后你发现funtion错了,要移动回来修改,则可以Alt+b三下就移动回来了,很快。

Ctrl+a Ctrl+e 移动到行首和行尾。这个也很好用,如果输入了一长串命令行,发现第一个单词拼错了,可以Ctrl+a到开头再进行修改。

3.删除
Alt+d 往右边删除一个单词
Alt+Backspace 往左删除一个单词
Ctrl+u 往左删除到行首
Ctrl+k 往右删除到行末

其中这些删除都放入了删除环里面,可以使用Ctrl+y找回,Alt+y在删除环里面移动也就是说命令行里面可以使用剪切和粘贴了。

上面的几条如果用熟练了效率能提高很多。

而如果还想了解更多的快捷键绑定,敲如下命令
bind -P

发现有些你需要的功能而没有快捷键绑定的话可以如下绑定,比如我绑定了两个函数
bind -m emacs '"\M-w": kill-region'
bind -m emacs '"\M-W": copy-region-as-kill'

Mirage -- 又一款轻量图片浏览器

原来介绍过 Gimmage 和 Ristretto 这两款轻量的图像浏览器,类似于 Windows 下的图片和传真查看器,简单快速,适合一般性的图片浏览。
今天再介绍一个相似的软件 Mirage,Mirage 基于 PyGtk,并且只依赖 PyGtk 和 Gtk,不依赖其他的复杂软件包和桌面环境。
同时,Mirage 也支持幻灯片放映、图片大小调整、图片切割和旋转等功能。