From 2a46230b3864b86b1735e799f6270b1b05a7858f Mon Sep 17 00:00:00 2001 From: Bhasher Date: Tue, 26 Dec 2023 17:11:51 +0100 Subject: [PATCH] Log to custom file and listen custom port --- go.mod | 2 +- main.go | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 8b4db35..f8a4a1b 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,4 @@ go 1.21.5 require golang.org/x/crypto v0.17.0 -require golang.org/x/sys v0.15.0 +require golang.org/x/sys v0.15.0 // indirect diff --git a/main.go b/main.go index c688ee7..9659835 100644 --- a/main.go +++ b/main.go @@ -8,15 +8,29 @@ import ( "fmt" "log" "net" - "strconv" + "os" "time" "golang.org/x/crypto/ssh" ) func main() { + path := os.Getenv("PATH") + if path == "" { + path = "./ssh-honeypot.log" + } - port := 22 + logFile, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + if err != nil { + log.Fatalf("Unable to open log file: %v", err) + } + defer logFile.Close() + log.SetOutput(logFile) + + port := os.Getenv("PORT") + if port == "" { + port = "22" + } key, err := generateKeyPair() if err != nil { @@ -36,12 +50,11 @@ func main() { config.AddHostKey(key) - // Listen on port 22 - listener, err := net.Listen("tcp", "0.0.0.0:"+strconv.Itoa(port)) + listener, err := net.Listen("tcp", "0.0.0.0:"+port) if err != nil { - log.Fatalf("Failed to listen on port %d: %v", port, err) + log.Fatalf("Failed to listen on port %s: %v", port, err) } - log.Printf("Listening on port %d...", port) + log.Printf("Listening on port %s...", port) for { conn, err := listener.Accept() @@ -55,19 +68,16 @@ func main() { } func generateKeyPair() (ssh.Signer, error) { - // Generate a new RSA private key privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { return nil, err } - // Encode the private key to PEM format privateKeyPEM := pem.EncodeToMemory(&pem.Block{ Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey), }) - // Parse the PEM encoded private key to get an ssh.Signer signer, err := ssh.ParsePrivateKey(privateKeyPEM) if err != nil { return nil, err