我正在做一个项目,我的任务是使用任何机器学习技术找到未经授权的访问。
让我清楚我的问题定义。
- UserA使用 chrome 浏览器从 windows PC 访问网站。
- UserB使用 Internet Explorer 从 Windows PC 访问网站。
- UserA从来没有使用 safari 访问网站,但突然间它使用 safari 从 mac 系统访问网站。
第 1 点和第 2 点是正常登录,但第 3 点可能会被攻击者使用,因为它与UserA的行为不匹配。
因此,我正在尝试在 python 中实现一个无监督模型,以首先学习所有用户的正常行为,以便通过其他功能访问网站,例如 -
- 用户名
- 国家
- service_key(唯一标识符)
- 系统
- app_type(客户端、服务器、企业等)
下面我分享我的示例数据集。
+==========+=========+=============+=========+==========+
| username | country | service_key | system | app_type |
+==========+=========+=============+=========+==========+
| userA | india | e08fe2d | windows | 2 |
| userA | india | e08fe2d | android | 2 |
| usreB | china | bb15d36 | windows | 3 |
| userB | india | bb15d36 | windows | 3 |
| userB | russia | bb15d36 | mac | 3 |
| userA | usa | e08fxxx | mac | 3 |
| userB | china | bb1xxxx | ios | 1 |
+==========+=========+=============+=========+==========+
以上5条记录是人工分析并标记为正常日志,并从不同用户系统收集。但是最后两条记录是异常的,应该被检测为异常值,因为它们在特征上不匹配。这里需要注意的是,登录可以有不同的国家和系统,但不能有不同的用户名、service_key 和 app_type。
任何人都可以建议我对此建模或可以在 python 中共享博客或示例吗?