本文共 6916 字,大约阅读时间需要 23 分钟。
[root@znix test]# head -1 secure-20161219 access.log==> secure-20161219 <==Dec 11 03:49:25 localhost sshd[27087]: Failed password for invalid user support from 123.31.34.190 port 55493 ssh2==> access.log <==101.226.61.184 - - [22/Nov/2015:11:02:00 +0800] "GET /mobile/sea-modules/gallery/zepto/1.1.3/zepto.js HTTP/1.1" 200 24662 "http://m.oldboyedu.com.cn/mobile/theme/oldboy/home/index.html" "Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; HUAWEI CRR-UL00 Build/HUAWEICRR-UL00) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025478 Mobile Safari/533.1 MicroMessenger/6.3.7.51_rbb7fa12.660 NetType/3gnet Language/zh_CN"
Failed 是用户登陆失败,连续多次的登陆失败,就是在暴力破解密码。
/Failed/ 关键词查找
$ (NF-3) 表示倒数第四列
fa[$(NF-3)]++ 使用数组,对不同的ip分类累加
for(pol in fa) for循环 使用pol 变量,逐个的取出fa[$(NF-3)] 数组中的内容。
print pol,fa[pol] 显示数组的内容,以及pol的次数,即统计.
[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t218.65.30.126 17163218.65.30.61 17163125.16.71.175 4169.46.38.74 9183.136.238.78 30218.2.0.16 10122.228.238.66 1……
sort排序,把一样的都放在一起,uniq去重经常合并 -c 参数是计数.
[root@znix test]# awk '/Failed/{print $(NF-3)}' secure-20161219 |sort|uniq -c|sort -n
[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t|wc -l88
使用数组对不同的ip进行统计
与第一题类似,这里只是统计的位置改变,变为$1.
[root@znix test]# awk '{hotel[$1]++}END{for(pol in hotel)print pol,hotel[pol]}' access.log |head -3101.226.125.115 284180.154.137.177 516101.226.125.116 127
统计总数较为简单
i=i+$10可以写为 i+=$10
i累计相加,然后再输出最后一个i的值即可。
[root@znix test]# awk '{i=i+$10}END{print i}' access.log2478496663
统计ip使用的流量,将每个ip归类,与上一题不同的是,上一题是统计次数,这是统计他的流量
hotel[$1]+=$10 可以写为 hotel[$1]=hotel[$1]+$10 让循环的时候相加的不是1,而是$10的数字,进而就可以得出每个ip使用的流量.
[root@znix test]# awk '{hotel[$1]+=$10}END{for(pol in hotel)print pol,hotel[pol]}' access.log |sort -rnk2|head114.83.184.139 31362956117.136.66.10 22431302116.216.30.47 21466000223.104.5.197 21464856116.216.0.60 19145329114.141.164.180 17219553114.111.166.22 17121524223.104.5.202 16911512116.228.21.187 15969887112.64.171.98 15255013
查看数组元素里面的内容 数组的名字+数组元素的下标
下标相同的数组,能够一起使用.
两个有关的数组,只要有一个共同使用的元素,可以在一个循环中使用.
awk '{count[$1]++;sum[$1]+=$10}END{for(pol in sum)print pol,count[pol],sum[pol]}' access.log
[root@znix test]# awk '{count[$1]++;sum[$1]=sum[$1]+$10}END{for(pol in sum)print pol,count[pol],sum[pol]}' access.log |sort -nrk2 |column -t |head 114.83.184.139 1982 31362956117.136.66.10 1662 22431302116.216.30.47 506 21466000223.104.5.197 961 21464856116.216.0.60 957 19145329114.141.164.180 695 17219553114.111.166.22 753 17121524223.104.5.202 871 16911512116.228.21.187 596 15969887112.64.171.98 10856 15255013
[root@znix test]# awk '{count[$1]++;sum[$1]+=$10}END{for(pol in sum)print "ip:"pol,"次数:"count[pol],"流量:"sum[pol]}' access.log |sort -rnk3|head |column -tip:70.39.157.199 次数:1 流量:16049ip:70.39.157.198 次数:1 流量:15965ip:70.39.157.195 次数:1 流量:1569ip:68.180.230.250 次数:5 流量:40644ip:66.249.82.96 次数:30 流量:40254ip:66.249.82.93 次数:36 流量:358729ip:66.249.82.90 次数:61 流量:1640266ip:66.249.82.185 次数:1 流量:1569ip:66.249.82.181 次数:3 流量:258284ip:66.249.82.177 次数:6 流量:374716
对与数字来说,sort命令将他一视同仁,按照顺序进行排序
[root@znix test]# seq 20|sort1101112131415161718192203456789
-n 表示,将内容视为数字,能按照数字顺序进行排列
-r 表示逆序排列
-k 指定按照哪一列的顺序进行排列。
[root@znix test]# seq 20|sort -rnk12019181716151413121110987654321
假如现在有个文本,格式如下:
a 1b 3c 2d 7b 5a 3g 2f 6d 9
即左边是随机字母,右边是随机数字,要求写个脚本使其输出格式为:
a 4b 8c 2d 16f 6g 2
即将相同的字母后面的数字加在一起,按字母的顺序输出。
数组会进行分类计数,显示的时候可以显示数据统计的结果,与数组的名字,即结果.
[root@znix files]# awk '{a[$1]=a[$1]+$2}END{for(i in a)print i,a[i]}' w.txta 4b 8c 2d 16f 6g 2
这里将变量写为数组而已.
{i=i+$2}{hotel[$1]=hotel[$1]+$2}
一些式子的简写:
i++ ====>> i=i+1i+=2 ====>> i=i+2i+=$1 ====>> i=i+$1
再awk里面使用 |" " 里面加上命令即可
sort 命令放在后面进行排序会将BEGIN的内容也会排序
在awk循环中进行排序,就不会贵BEGIN 的内容产生影响
[root@znix test]# awk 'BEGIN{print "ip","count"}{count[$1]++}END{for(pol in count)print pol,count[pol]|"sort -rnk2"}' access.log |head |column -tip count58.220.223.62 12049112.64.171.98 10856114.83.184.139 1982117.136.66.10 1662115.29.245.13 1318223.104.5.197 961116.216.0.60 957180.111.48.14 939223.104.5.202 871
使用方法 telnet [ip] [port]
[f:\~]$ telnet 10.0.0.201 22 Connecting to 10.0.0.201:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.SSH-2.0-OpenSSH_5.3
[root@znix ~]# ss -lntup|grep 22tcp LISTEN 0 128 :::22 :::* users:(("sshd",1140,4))tcp LISTEN 0 128 *:22 *:* users:(("sshd",1140,3))
[root@znix test]# nmap -p22 10.0.0.201 Starting Nmap 5.51 ( http://nmap.org ) at 2017-09-22 11:10 CSTNmap scan report for 10.0.0.201Host is up (0.000072s latency).PORT STATE SERVICE22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
[root@znix ~]# lsof -i:22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1140 root 3u IPv4 10300 0t0 TCP *:ssh (LISTEN)sshd 1140 root 4u IPv6 10302 0t0 TCP *:ssh (LISTEN)sshd 1334 root 3u IPv4 11050 0t0 TCP 10.0.0.201:ssh->10.0.0.1:42256 (ESTABLISHED)sshd 1700 root 3u IPv4 12198 0t0 TCP 10.0.0.201:ssh->10.0.0.1:42772 (ESTABLISHED)
使用方法: nc ip port
[root@znix ~]# nc 10.0.0.201 22SSH-2.0-OpenSSH_5.3
[root@clsn6 ~]# yum install telnet tree lrzsz nmap nc dos2unix -y[root@clsn6 ~]# yum install htop iotop iftop atop nethogs -y
telnet 远程连接服务,可以进行测试
tree 让文件,目录以树的形式显示
lrzsz linux与windows文件相互传递
nmap 强大的扫描工具
nc 网络探测工具
dos2unix 将dos格式的文本转换为unix格式
ip r 与ip route 相同
[root@znix test]# ip r10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.201169.254.0.0/16 dev eth0 scope link metric 1002default via 10.0.0.2 dev eth0
ip address show eth0 与 ip a s eth0 相同。
[root@znix test]# ip address show eth02: eth0:mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:a8:e4:14 brd ff:ff:ff:ff:ff:ff inet 10.0.0.201/24 brd 10.0.0.255 scope global eth0 inet6 fe80::20c:29ff:fea8:e414/64 scope link valid_lft forever preferred_lft forever
vsz 虚拟内存(物理+swap)rss 是物理内存