文章目录
一 . 需求描述:
■需求描述
编写名为system.sh的脚本, 记录局域网中各主机的MAC
地址,保存到/etc/ethers文件中;若此文件已存在,应先
转移进行备份;每行一条记录,第1列为IP地址,第2列为
对应的MAC地址
●检查有哪些主机开启了匿名FTP服务,扫描对象为
/etc/ethers文件中的所有IP地址,扫描的端口为21
,将检测匿名登录的结果输出到 /etc/news.txt
二. 相关命令介绍
2.1 ping 命令 检查主机是否在线以及连通性
ping命令主要用来测试主机之间网络的连通性,也可以用于。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
不过值得我们注意的是:Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令;而Linux下不会自动终止,此时需要我们按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。
语法格式:ping [参数] [目标主机]
2.2 nmap 命令 扫描端口等检测网络服务
需要安装nmap 软件包
gonmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。
语法格式:nmap [参数]
三. 具体脚本内容
3.1 脚本内容及思路
首先判断 etc/ethers.txt (IP及对应MAC存放位置)是否存在,若存在,备份一下到其他路径备用,随后清空文件内容以及/etc/news.txt(开放了21端口,可以匿名FTP登录的主机名单)内容 。
ping所有主机的连通性,通了再统计其MAC,保存起来数据
检测数据的21端口有无开放,若开放,再检测器其FTP是否可以匿名登录
3.2 具体内容如下:
#!/bin/bash
#判断文件是否存在,存在的话备份到其他路径
[ -e /etc/ethers.txt ]
if [ $? -lt 1 ]
then
cp -p /etc/ethers.txt /opt/ethers.bak
cat /dev/null > /etc/ethers.txt
fi
#设定IP地址的取值范围
for ((i=1;i<255;i++))
do
#判断是否能PING通,通了再进行统计其MAC
ping 192.168.100.$i -c 1 -i 0.2 -W 1 > /dev/nul
if [ $? -eq 0 ] ;then
echo "192.168.100.$i $( arping -c 2 -I ens33 192.168.100.$i | awk 'NR==2{print $5}' )" >> /etc/ethers.txt
fi
done
#去掉MAC地址两边的括号
sed -i 's/\[/ /g' /etc/ethers.txt
sed -i 's/\]/ /g' /etc/ethers.txt
#检查哪些主机开启了21端口,以及匿名FTP登录服务
cat /dev/null > /etc/news.txt
#清空统计匿名登录名单的文件夹
ipdr=$( awk '{ print $1 }' /etc/ethers.txt )
#echo $ipdr
#定义IP地址为变量ipdr
for NMAP in $ipdr
do
[ $( nmap -p 21 $NMAP | awk 'NR==6{print $2}') = open ]
if [ $? -eq 0 ]
then
#echo $NMAP
#免交互匿名登录测试
/usr/bin/expect<<-EOF
log_user 0
log_file /etc/news.txt
spawn ftp $NMAP
expect {
"No route to host" {send "exit\r"}
"Name*" {send "ftp\r";exp_continue}
"to continue" {send "yes\r";exp_continue}
"password:" {send "\r";exp_continue}
"failed." {send"exit\r" }
}
expect "ftp>"
send "bye\r"
log_user 1
send_user "\n $NMAP 匿名登录成功 \n"
log_user 0
expect eof
EOF
fi
done
3.2 运行结果
[root@shanan ~]#chmod +x system.sh
[root@shanan ~]# ./system.sh
192.168.100.55 匿名登录成功
查看在线主机对应MAC地址列表
[root@shanan ~]# cat /etc/ethers.txt
192.168.100.1 00:50:56:C0:00:08
192.168.100.2 00:50:56:EC:E6:BC
192.168.100.48 broadcast(s))
192.168.100.55 00:0C:29:A1:A3:B3
192.168.100.100 00:0C:29:64:B5:BD
查看开启了匿名FTP登录的内容列表
[root@shanan ~]# cat /etc/news.txt
192.168.100.55 匿名登录成功