Jumpserver开启MFA认证,SecureCRT自动输入登录

1、JumpServer开启MFA认证

开启MFA认证:   

  

开启后效果:

2、使用浏览器登录堡垒机,配置MFA

按需下载对应app进行绑定

到此手机绑定成功,登录时候可以在手机app查看动态码。

但是每次登录,都需要打开手机,找到动态码,手动输入很麻烦

使用SecureCRT可实现自动输入,很方便快捷。

3、生成动态码python脚本内容如下:

需要将google_secret改为你的Secret

import sys
import calendar
import datetime
import hashlib
import time
import base64
import hmac
import codecs
import re

class OTP(object):
    def __init__(self, s, digits=6, digest=hashlib.sha1, name=None, issuer=None):
        self.digits = digits
        self.digest = digest
        self.secret = s
        self.name = name or 'Secret'
        self.issuer = issuer

    def generate_otp(self, input):
        if input < 0:
            raise ValueError('input must be a positive integer')
        hasher = hmac.new(self.byte_secret(), self.int_to_bytestring(input), self.digest)
        hmac_hash = bytearray(hasher.digest())
        offset = hmac_hash[-1] & 0xf
        code = ((hmac_hash[offset] & 0x7f) << 24 |
                (hmac_hash[offset + 1] & 0xff) << 16 |
                (hmac_hash[offset + 2] & 0xff) << 8 |
                (hmac_hash[offset + 3] & 0xff))

        str_code = str(code % 10 ** self.digits)
        while len(str_code) < self.digits:
            str_code = '0' + str_code
        return str_code

    def byte_secret(self):
        secret = self.secret
        missing_padding = len(secret) % 8
        if missing_padding != 0:
            secret += '=' * (8 - missing_padding)
        return base64.b32decode(secret, casefold=True)

    @staticmethod
    def int_to_bytestring(i, padding=8):
        result = bytearray()
        while i != 0:
            result.append(i & 0xFF)
            i >>= 8
        return bytes(bytearray(reversed(result)).rjust(padding, b'\0'))


class TOTP(OTP):
    def __init__(self, s, digits=6, digest=hashlib.sha1, name=None, issuer=None, interval=30):
        self.interval = interval
        super(TOTP, self).__init__(s=s, digits=digits, digest=digest, name=name, issuer=issuer)

    def now(self):
        return self.generate_otp(self.timecode(datetime.datetime.now()))

    def timecode(self, for_time):
        if for_time.tzinfo:
            return int(calendar.timegm(for_time.utctimetuple()) / self.interval)
        else:
            return int(time.mktime(for_time.timetuple()) / self.interval)

def Main():
    google_secret = '此处替换为刚才记录的Secret'
    code = TOTP(s=google_secret,interval=30).now()
    tab = crt.GetScriptTab()
    if tab.Session.Connected != True:
        crt.Dialog.MessageBox("Session Not Connected")
        return
    tab.Screen.Synchronous = True
    tab.Screen.WaitForStrings(['Please Enter MFA Code.[OTP Code]: '])
    tab.Screen.Send("{code}\r".format(code=code))
    return

Main()

4、配置SecureCRT

  • 设置自动输入密码
  • 引用刚才的python脚本

5、验证

双击左侧刚才配置的主机进行登录

6、已自动登录完美,很省事方便

对于自定义登录认证,有多种方法可以确保安全性。以下是一些常见的安全措施和建议: 1. 强密码策略:要求用户选择强密码,并使用密码策略来确保密码的复杂性。建议密码长度不少于8个字符,并包含大写字母、小写字母、数字和特殊字符。 2. 多因素身份验证(MFA):采用多因素身份验证可以增加登录的安全性。除了使用用户名和密码进行验证外,还可以要求用户进行其他身份验证方式,例如短信验证码、指纹或面部识别等。 3. 防止暴力破解:实施防止暴力破解的措施,例如限制登录尝试次数、增加登录延迟或者启用验证码等。 4. 输入验证:在服务器端对用户输入进行验证,确保输入的合法性和安全性。避免使用已知的容易受到攻击的输入,例如 SQL 注入、跨站脚本攻击等。 5. 安全协议和加密:使用安全协议(如HTTPS)来保护登录过程中的数据传输,并使用适当的加密算法对存储在数据库中的密码进行加密。 6. 会话管理:有效管理用户会话,包括设置适当的会话超时时间、定期更新会话密钥等。 7. 安全日志和监控:记录登录活动,包括登录尝试、成功登录和失败登录等,并进行监控以便及时发现异常登录行为。 8. 安全培训和教育:为用户提供有关安全措施和最佳实践的培训,使他们能够识别和应对潜在的安全风险。 以上仅是一些常见的建议,具体的实施应根据您的应用程序和业务需求进行调整。此外,还建议定期进行安全审计和漏洞扫描,以确保系统的安全性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值