---
title: 'Running an SSH honeypot to troll skids'
date: 2025-01-03T11:10:19+02:00
draft: false
---

If you've ever looked at a public server's SSH logs, you would have probably found tens of failed connections from IP addresses you are not associated with. Those are bots that are trying to bruteforce their way into your Linux bots. An easy way you can change this is by changing the SSH port, but that's just lame. What you should do is do a *little bit of trolling*. So today, we'll be configuring `sshesame` to listen on port 22 and some other common ssh ports.

## Prerequisites
* A public Linux server running a *nix distribution
* Some moderate CLI experience
* Patience

## Obtaining the binaries
If you're using Debian, like me, you can easily install sshesame, as [there is a package for it](https://packages.debian.org/bookworm/sshesame) (that apparently is terribly out of date but it is fine enough), but on other distributions, you might have to follow other instructions. Other distros might have to compile it from source, which I was going to do anyway.

```sh
git clone https://github.com/jaksi/sshesame
cd sshesame
go build
mv sshesame /usr/local/bin # You don't have to use this path if you don't want to
```

## Moving SSH from port 22
This can be easily done by editing `/etc/ssh/sshd_config`. Uncomment the 14th line and replace 22 with any port you want. Personally, I use 69 because it's very funny number!!! Make sure to restart the `sshd` service after changing the port.

## Configuring sshesame
Now that we've got sshesame, we can get to configuring it. For advanced users, you should probably edit the sample configuration file from [here](https://github.com/jaksi/sshesame/blob/master/sshesame.yaml), which contains a lot more options, but personally, I think most of the people reading my ramblings would get away with the basic configuration I will share below. Feel free to write the configuration wherever you want, but I prefer having it in /etc/sshesame.yaml

**sshesame.yaml**
```yaml
server:
  listen_address: 0.0.0.0:22
  host_keys: null

logging:
  file: null
  json: false
  timestamps: true
  debug: false
  metrics_address: null
  split_host_port: false

auth:
  no_auth: false
  max_tries: 0

  password_auth:
    enabled: true
    accepted: true

  public_key_auth:
    enabled: false
    accepted: false

ssh_proto:
  version: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
  banner: Hewwo skids :3
  rekey_threshold: 0
  key_exchanges: null
  ciphers: null
  macs: null
```

Now you can just execute `sshesame -config /etc/sshesame.yaml` and you will have a honeypot, but you probably want this to run whenever your system starts, for this we can use systemd.

## Sshesame as a Systemd service
Create a new file, `/etc/systemd/system/sshesame.service`, and populate it with the following contents.
```ini
[Unit]
Description=SSH honeypot
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/sshesame -config /etc/sshesame.yaml
Restart=always

[Install]
WantedBy=multi-user.target
```

```sh
systemctl daemon-reload
systemctl enable --now sshesame
```

And now you can have skids waste their time hacking your box. Yay!

P.S. Happy 2025
