Linux-shell脚本-MAC记录与端口扫描检测FTP匿名登录脚本

一 . 需求描述:

■需求描述
编写名为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 匿名登录成功 

四. 技术无巅峰,后期继续优化,欢迎交流进步!

猜你喜欢

转载自blog.csdn.net/BIGmustang/article/details/107698637