基于Linux的ARP攻击检测与防护软件设计与实现

本项目旨在设计并实现一款基于Linux的ARP攻击检测与防护软件,软件包含用户登录注册功能,并提供友好的交互界面。软件能够扫描局域网内的活动主机,记录其IP地址和MAC地址,并能识别ARP欺骗攻击,记录攻击源的IP地址和MAC地址,将所有记录保存在数据库中。

软件功能

  • 用户登录与注册
  • 局域网活动主机扫描
  • ARP欺骗攻击检测
  • 攻击源记录
  • 记录数据存储到数据库

技术实现

由于题目中的要求比较复杂,需要使用多个模块来实现各种功能,因此我们需要使用一些第三方库来完成这个项目,包括:

  • Flask: 用于搭建Web应用程序的框架
  • Scapy: 用于网络数据包的捕获、发送和分析
  • SQLAlchemy: 用于操作数据库

代码实现

下面是一个简单的后端代码,包括登录、注册、ARP欺骗攻击检测和记录活动主机的功能:

from flask import Flask, render_template, request, redirect, url_for
from scapy.all import *
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 创建Flask应用程序
app = Flask(__name__)

# 创建数据库引擎和会话
engine = create_engine('sqlite:///arp_attack.db')
Session = sessionmaker(bind=engine)
Base = declarative_base()

# 定义数据库模型
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String(50), unique=True)
    password = Column(String(50))

class Host(Base):
    __tablename__ = 'hosts'
    id = Column(Integer, primary_key=True)
    ip_address = Column(String(15), unique=True)
    mac_address = Column(String(17))

class Attack(Base):
    __tablename__ = 'attacks'
    id = Column(Integer, primary_key=True)
    attack_type = Column(String(50))
    source_ip = Column(String(15))
    source_mac = Column(String(17))

# 创建数据库表格
Base.metadata.create_all(engine)

# 定义登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 获取表单数据
        username = request.form['username']
        password = request.form['password']
        # 查询用户是否存在
        session = Session()
        user = session.query(User).filter_by(username=username, password=password).first()
        if user:
            # 登录成功,跳转到主页
            return redirect(url_for('index'))
        else:
            # 登录失败,返回错误信息
            return render_template('login.html', error='用户名或密码错误')
    else:
        # 显示登录页面
        return render_template('login.html', error='')

# 定义注册页面
@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        # 获取表单数据
        username = request.form['username']
        password = request.form['password']
        # 添加用户到数据库
        session = Session()
        user = User(username=username, password=password)
        session.add(user)
        session.commit()
        # 注册成功,跳转到登录页面
        return redirect(url_for('login'))
    else:
        # 显示注册页面
        return render_template('register.html')

# 定义主页
@app.route('/')
def index():
    # 获取局域网内的活动主机
    hosts = {}
    ans, unans = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst='192.168.1.0/24'), timeout=2, verbose=False)
    for s, r in ans:
        hosts[r[ARP].psrc] = r[Ether].src
    # 显示主页
    return render_template('index.html', hosts=hosts)

# 定义ARP欺骗攻击检测页面
@app.route('/arp_attack')
def arp_attack():
    # 检测ARP欺骗攻击
    source_ip = ''
    source_mac = ''
    arp_packets = sniff(filter='arp', count=10, timeout=5)
    for packet in arp_packets:
        if packet[ARP].op == 2:
            if source_ip == '':
                source_ip = packet[ARP].psrc
                source_mac = packet[ARP].hwsrc
            else:
                if source_ip != packet[ARP].psrc and source_mac != packet[ARP].hwsrc:
                    # 记录攻击源到数据库
                    session = Session()
                    attack = Attack(attack_type='ARP欺骗攻击', source_ip=packet[ARP].psrc, source_mac=packet[ARP].hwsrc)
                    session.add(attack)
                    session.commit()
                    # 显示攻击类型和攻击源
                    return render_template('arp_attack.html', attack_type='ARP欺骗攻击', source_ip=packet[ARP].psrc, source_mac=packet[ARP].hwsrc)
    # 没有检测到ARP欺骗攻击
    return render_template('arp_attack.html', attack_type='', source_ip='', source_mac='')

if __name__ == '__main__':
    app.run(debug=True)

后续改进

  • 可以添加更多类型的攻击检测,例如ICMP Flood攻击、TCP SYN Flood攻击等
  • 可以将数据记录到更强大的数据库中,例如MySQL或PostgreSQL
  • 可以添加图形化界面,方便用户查看攻击记录和配置软件
  • 可以添加报警机制,在检测到攻击时及时通知用户
基于Linux的ARP攻击检测与防护软件设计与实现

原文地址: https://www.cveoy.top/t/topic/jnPJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录