From 1dfece37b4200e67041ca93865b05d9dbdb67d4e Mon Sep 17 00:00:00 2001 From: Michel Oosterhof Date: Thu, 19 Nov 2015 14:46:55 +0000 Subject: [PATCH] Login timeout now 2 minutes like openssh --- cowrie/core/ssh.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cowrie/core/ssh.py b/cowrie/core/ssh.py index da12636..d19c63b 100644 --- a/cowrie/core/ssh.py +++ b/cowrie/core/ssh.py @@ -27,6 +27,7 @@ from twisted.python import log, components from twisted.conch.openssh_compat import primes from twisted.conch.ssh.common import NS, getNS from twisted.internet import defer +from twisted.protocols.policies import TimeoutMixin from cowrie.core import credentials from cowrie.core import auth @@ -272,7 +273,7 @@ class HoneyPotSSHFactory(factory.SSHFactory): return t -class HoneyPotTransport(transport.SSHServerTransport): +class HoneyPotTransport(transport.SSHServerTransport, TimeoutMixin): """ """ @@ -293,6 +294,7 @@ class HoneyPotTransport(transport.SSHServerTransport): self.transport.write('%s\r\n' % (self.ourVersionString,)) self.currentEncryptions = transport.SSHCiphers('none', 'none', 'none', 'none') self.currentEncryptions.setKeys('', '', '', '', '', '') + self.setTimeout(120) def sendKexInit(self): # Don't send key exchange prematurely @@ -349,6 +351,18 @@ class HoneyPotTransport(transport.SSHServerTransport): return transport.SSHServerTransport.ssh_KEXINIT(self, packet) + def timeoutConnection(self): + log.msg( "Authentication Timeout reached" ) + self.transport.loseConnection() + + def setService(self, service): + """ + Remove login grace timeout + """ + if service.name == "ssh-connection": + self.setTimeout(None) + transport.SSHServerTransport.setService(self, service) + # this seems to be the only reliable place of catching lost connection def connectionLost(self, reason): for i in self.interactors: