mirror of
https://github.com/drakkan/sftpgo.git
synced 2024-11-24 16:40:26 +00:00
FTP: always generate a defender event if the client does not authenticate
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
parent
531ed852f5
commit
d2acc6f5c1
4 changed files with 14 additions and 10 deletions
|
@ -12,6 +12,7 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Package command provides command configuration for SFTPGo hooks
|
||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -862,6 +862,15 @@ func (conns *ActiveConnections) Remove(connectionID string) {
|
||||||
metric.UpdateActiveConnectionsSize(lastIdx)
|
metric.UpdateActiveConnectionsSize(lastIdx)
|
||||||
logger.Debug(conn.GetProtocol(), conn.GetID(), "connection removed, local address %#v, remote address %#v close fs error: %v, num open connections: %v",
|
logger.Debug(conn.GetProtocol(), conn.GetID(), "connection removed, local address %#v, remote address %#v close fs error: %v, num open connections: %v",
|
||||||
conn.GetLocalAddress(), conn.GetRemoteAddress(), err, lastIdx)
|
conn.GetLocalAddress(), conn.GetRemoteAddress(), err, lastIdx)
|
||||||
|
if conn.GetProtocol() == ProtocolFTP && conn.GetUsername() == "" {
|
||||||
|
ip := util.GetIPFromRemoteAddress(conn.GetRemoteAddress())
|
||||||
|
logger.ConnectionFailedLog("", ip, dataprovider.LoginMethodNoAuthTryed, conn.GetProtocol(),
|
||||||
|
dataprovider.ErrNoAuthTryed.Error())
|
||||||
|
metric.AddNoAuthTryed()
|
||||||
|
AddDefenderEvent(ip, HostEventNoLoginTried)
|
||||||
|
dataprovider.ExecutePostLoginHook(&dataprovider.User{}, dataprovider.LoginMethodNoAuthTryed, ip,
|
||||||
|
conn.GetProtocol(), dataprovider.ErrNoAuthTryed)
|
||||||
|
}
|
||||||
Config.checkPostDisconnectHook(conn.GetRemoteAddress(), conn.GetProtocol(), conn.GetUsername(),
|
Config.checkPostDisconnectHook(conn.GetRemoteAddress(), conn.GetProtocol(), conn.GetUsername(),
|
||||||
conn.GetID(), conn.GetConnectionTime())
|
conn.GetID(), conn.GetConnectionTime())
|
||||||
return
|
return
|
||||||
|
@ -950,19 +959,11 @@ func (conns *ActiveConnections) checkIdles() {
|
||||||
isUnauthenticatedFTPUser := (c.GetProtocol() == ProtocolFTP && c.GetUsername() == "")
|
isUnauthenticatedFTPUser := (c.GetProtocol() == ProtocolFTP && c.GetUsername() == "")
|
||||||
|
|
||||||
if idleTime > Config.idleTimeoutAsDuration || (isUnauthenticatedFTPUser && idleTime > Config.idleLoginTimeout) {
|
if idleTime > Config.idleTimeoutAsDuration || (isUnauthenticatedFTPUser && idleTime > Config.idleLoginTimeout) {
|
||||||
defer func(conn ActiveConnection, isFTPNoAuth bool) {
|
defer func(conn ActiveConnection) {
|
||||||
err := conn.Disconnect()
|
err := conn.Disconnect()
|
||||||
logger.Debug(conn.GetProtocol(), conn.GetID(), "close idle connection, idle time: %v, username: %#v close err: %v",
|
logger.Debug(conn.GetProtocol(), conn.GetID(), "close idle connection, idle time: %v, username: %#v close err: %v",
|
||||||
time.Since(conn.GetLastActivity()), conn.GetUsername(), err)
|
time.Since(conn.GetLastActivity()), conn.GetUsername(), err)
|
||||||
if isFTPNoAuth {
|
}(c)
|
||||||
ip := util.GetIPFromRemoteAddress(c.GetRemoteAddress())
|
|
||||||
logger.ConnectionFailedLog("", ip, dataprovider.LoginMethodNoAuthTryed, c.GetProtocol(), "client idle")
|
|
||||||
metric.AddNoAuthTryed()
|
|
||||||
AddDefenderEvent(ip, HostEventNoLoginTried)
|
|
||||||
dataprovider.ExecutePostLoginHook(&dataprovider.User{}, dataprovider.LoginMethodNoAuthTryed, ip, c.GetProtocol(),
|
|
||||||
dataprovider.ErrNoAuthTryed)
|
|
||||||
}
|
|
||||||
}(c, isUnauthenticatedFTPUser)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Package httpclient provides HTTP client configuration for SFTPGo hooks
|
||||||
package httpclient
|
package httpclient
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Package version defines SFTPGo version details
|
||||||
package version
|
package version
|
||||||
|
|
||||||
import "strings"
|
import "strings"
|
||||||
|
|
Loading…
Reference in a new issue