Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › Artillery

How to Set Up an Artillery Honeypot on an Ubuntu VPS (Legacy Deployment Guide)

By Freedom251 Team · · 10 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Artillery can turn a Linux VPS into a low-interaction honeypot while also watching selected files and analyzing threats in real time. The practical setup is a disposable, segmented Ubuntu server with a separate administration path—not a production host. The commonly published installation dates from 5 December 2013, and the original repository now points to a moved project, so treat the commands below as a legacy procedure: verify the current BinaryDefense code, supported Ubuntu releases, Python requirements, installer behavior, and open issues before running them.

What Artillery does

Artillery is an open-source defensive tool for Linux and Windows. Its Linux deployment combines three related functions:

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Low-interaction honeypot: decoy listeners answer on ports that scanners commonly probe, including SSH, MSSQL and RPC/SMB, making a Linux host appear more Windows-like.
  • File-system monitoring: changes under directories you nominate can trigger alerts or investigation.
  • Threat and connection analysis: the service watches activity on the host and can ban addresses that repeatedly fail authentication or otherwise match its defensive rules.

The project description states: “The Artillery Project is an open-source blue team tool designed to protect Linux and Windows operating systems through multiple methods.” A honeypot is a detection and deception layer, not a replacement for patching, least privilege, backups, or a firewall.

Decide whether this legacy deployment fits

Use an isolated VPS

Choose a disposable instance or a separately segmented network. Do not install an unverified legacy security service on a server holding customer data, private keys, databases, or irreplaceable files. Give the VPS only the data and credentials required for the experiment, and keep administrative secrets off the monitored directories where possible.

Keep an out-of-band recovery path

Before changing SSH, firewall, or listening-port settings, confirm that your provider’s web console, serial console, rescue environment, or equivalent recovery channel works. This is the path you will use if a rule blocks the network or the service binds a port you still need.

Separate administration from deception

The real SSH daemon and Artillery’s decoy listener cannot share one address and port. Decide which port is the management SSH endpoint and keep that port out of the decoy list. If your daemon currently uses port 22, either leave 22 out of PORTS or move SSH to another port using a tested two-session procedure. Never close the first working session until a second session has authenticated successfully.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Record the baseline

Write down the Ubuntu release, kernel, public and private addresses, current SSH port, firewall rules, Python version, and listening sockets. Capture this information before installation so a later change can be distinguished from Artillery’s behavior.

Check the project before copying old commands

The original project page says that Project Artillery has moved to https://github.com/BinaryDefense/artillery. The older repository remains useful for understanding the historical procedure, but it is not evidence that the 2013 installer still works on a current Ubuntu release.

Open the moved repository and check its installation documentation, supported distributions, Python version, dependency files, service definition, update mechanism, and recent issue history. Confirm whether the installer still expects setup.py, whether it writes to /var/artillery, and whether its service is compatible with your init system. If the repository does not document your Ubuntu release or the required runtime, test in a disposable clone first and pin the commit you tested. Do not enable unattended updates until you understand what code is fetched, how it is verified, and how to roll back.

The historical source is https://github.com/trustedsec/artillery/. Its commands and file paths are reproduced below as compatibility references, not as a guarantee of current support.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install the historical build procedure

After the compatibility check, use a fresh administrative shell and keep your recovery console available. The 2013 procedure is:

  1. Refresh package metadata:
    sudo apt-get update
  2. Install Git:
    sudo apt-get install git
  3. Clone the repository used by the historical tutorial:
    sudo git clone https://github.com/trustedsec/artillery/ /artillery

    If the moved repository is the one you have validated, substitute its documented clone URL and branch instead of blindly using the old location.

  4. Enter the checkout:
    cd /artillery
  5. Run the installer:
    sudo ./setup.py

    The old tutorial describes three yes/no prompts and recommends answering yes. Read every prompt on your version; an installer can request firewall changes, startup behavior, or update settings that differ from the historical wording.

Do not treat a successful return to the shell as proof that the service is safe. Confirm which files were created, which user owns them, which ports were opened, and whether the service definition matches your operating system.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Database-file workaround documented by the old tutorial

The historical procedure reports an error when /var/artillery/database/temp.database is missing. Its workaround creates the directory and empty file, then restarts the service:

sudo mkdir -p /var/artillery/database
sudo touch /var/artillery/database/temp.database
sudo service artillery restart

Use this only if the version you installed expects that path. If a current checkout reports a different database location or schema, follow its own instructions instead of creating legacy files that the new code does not use.

Configure /var/artillery/config before exposing the VPS

The historical installer generates /var/artillery/config. Edit it before scanning the host from the internet. Make a dated backup of the original file so you can restore a known state.

Setting Purpose Safe way to choose a value
MONITOR_FOLDERS Directories whose file activity should be monitored. Add only sensitive paths that matter to this test, such as /var/www, /etc, or /root. Start small so expected package and log activity does not overwhelm the signal.
EXCLUDE Paths omitted from monitoring. Exclude locations with constant, known churn or generated data. Document every exclusion because it is also a blind spot.
WHITELIST_IP Addresses allowed to connect without being banned by defensive rules. Include loopback and the fixed addresses used by administrators, monitoring systems, and authorized scanners before testing.
PORTS Decoy ports that Artillery presents as open. Choose a believable, minimal set that does not collide with real services or expose protocols you cannot monitor.
AUTO_UPDATE Controls the historical automatic-update option. The old article recommends AUTO_UPDATE=ON; review current update behavior and pin or stage updates before enabling this on an internet-facing host.
ANTI_DOS_PORTS Ports covered by the anti-DoS feature. The historical example is 80,443,8080,8180,10000. Use only ports you intentionally expose and test.
ANTI_DOS Global switch for that protection. The old configuration uses ANTI_DOS=ON and says HTTP/HTTPS protection is enabled by default. Disable only after understanding the effect of ANTI_DOS=OFF in your version.

A conservative example

The historical article lists this decoy set:

PORTS=135,445,22,1433,3389,8080,21,5900,25,53,110,1723,1337,10000,5800,44443

It is a deception choice, not a firewall policy. Remove ports that conflict with your real SSH, web, mail, DNS, or management services; add no port merely because it appears in the example. A smaller list that matches the story you want the host to tell is easier to validate and less likely to create accidental exposure.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build the firewall and SSH safety net

Apply restrictions at both layers available to you: the VPS provider’s security group or network firewall and the operating system firewall. Permit the actual management SSH port, the recovery services you require, and only the decoy ports you deliberately intend to expose. Deny everything else by default where your platform supports that policy.

UFW is an interface to iptables; the important ordering rule is to allow the required service before enabling the firewall. Use the same ordering in a provider firewall: add and verify the management rule first, then apply the broader policy. If the decoy list contains port 22 while SSH also listens on 22, resolve that collision before starting Artillery.

Open a second SSH session from an allowlisted administrator address. Leave both sessions active while you reload firewall rules, start the service, and run the first scan. If the second session fails, stop and use the provider console rather than closing the original session.

Start, inspect, and verify the service

The historical installation registers Artillery as a service and is intended to start it after reboot. Control it with:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo service artillery start
sudo service artillery restart

Check that the process exists:

ps aux | grep artillery

The old tutorial also suggests watching the process with top -p PID, replacing PID with the numeric process ID shown by your system. For socket-level confirmation, use:

ss -lntup

Compare every listening socket with your intended design. Verify that the real SSH daemon remains reachable on its management port, that the decoy listeners correspond to the approved PORTS entries, and that no unexpected service appeared. A port shown as listening is not proof that the honeypot is receiving the traffic you expect; test from an external, authorized address.

Test without banning yourself

  1. Add the fixed administrator, monitoring, and scanner addresses to WHITELIST_IP and reload the configuration if your version requires it.
  2. From the authorized external scanner, connect only to the decoy ports you selected. Record banners, connection behavior, and timestamps without sending destructive payloads.
  3. Attempt one controlled failed SSH authentication from the test address if you need to confirm ban behavior. Do not use repeated guesses from an unallowlisted administrator address.
  4. Inspect Artillery’s logs and the system authentication logs to confirm which component made the decision.
  5. Remove the test exception only after you have a recovery path and have documented the expected result.

The source warns that an authorized user’s address can be banned after repeated failed SSH passwords. Allowlisting is therefore a prerequisite for testing, not an optional convenience.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recover from a ban

If an address is banned, use a console or another allowlisted session to reach the host. The historical installation includes reset-bans.py in /var/artillery:

cd /var/artillery
sudo ./reset-bans.py 203.0.113.10

203.0.113.10 is an example documentation address; replace it with the actual banned address. The published tutorial omits the separating space in its displayed command, so ensure your command has one between the script name and the IP address. Confirm that the ban is removed at the firewall layer as well as in Artillery’s own state, then correct the allowlist or test procedure that caused the lockout.

Validation checklist before leaving it online

  1. Confirm the moved repository, supported Ubuntu release, runtime, dependencies, and installer behavior.
  2. Verify the provider console or other out-of-band recovery channel.
  3. Establish a second SSH session before changing firewall or SSH settings.
  4. Run ss -lntup and compare listening sockets with the intended PORTS list.
  5. Verify that the real SSH daemon remains reachable on its management port.
  6. Test from an external, authorized scanner whose address is allowlisted.
  7. Inspect Artillery logs and ban behavior, then test the reset script using a controlled address.
  8. Record the exact Ubuntu release, repository commit, Python version, configuration, firewall rules, and test date.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common failures

The installer fails immediately

Check the moved repository’s dependency and Python requirements first. A 2013 setup.py workflow may assume packages, interpreter behavior, or an init system no longer present. Capture the complete error, test in a disposable snapshot, and avoid mixing files from two repository versions.

The database path error returns

Confirm that your installed version actually references /var/artillery/database/temp.database. If it does, create the directory and file using the documented workaround, then restart the service. If it uses another path, follow that version’s migration or initialization instructions instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

SSH stopped working

Keep the original session open, use the provider console, and inspect both firewall rules and listening sockets. Remove a colliding decoy port, restore the last known-good firewall policy, and add the administrator address to WHITELIST_IP before testing again.

Expected decoy ports are absent

Check the parsed configuration, service status, and ss -lntup output. A port can be absent because it conflicts with another daemon, was blocked upstream, or is not supported by the installed build. Resolve one cause at a time and retest from an authorized external address.

Monitoring produces too much noise

Narrow MONITOR_FOLDERS, add only well-understood high-churn paths to EXCLUDE, and document the resulting blind spots. Do not exclude a directory simply because it is noisy if it contains the evidence your investigation requires.

An update changes behavior

Disable unattended updating while you investigate, record the current commit and configuration, and compare the service definition and listening sockets with your baseline. Roll back to the tested snapshot if the update cannot be explained or reproduced.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Operational limits and security practices

Artillery’s decoys do not make an unpatched operating system safe. Keep Ubuntu security updates current, use least-privilege accounts, protect private keys, and restrict outbound traffic where practical. Treat every connection and file alert as evidence to preserve, not as proof that an attacker was fully contained.

Do not place production credentials, cloud metadata access, or unrestricted network routes on a honeypot. Segment it so a compromise cannot reach management networks. Forward logs to a separate system if you need durable evidence, and synchronize time so connection and file events can be correlated. Review disk usage because verbose logs and file-monitoring databases can fill a small VPS.

Is Artillery still maintained?

The evidence supports a cautious answer, not a current-maintenance claim. The original repository explicitly says the project moved to the BinaryDefense repository, but the 2013 tutorial does not establish which Ubuntu releases, Python versions, or security fixes are supported today. Before deployment, inspect the moved repository’s recent activity, release notes, dependency constraints, installer, and unresolved issues. If those checks do not cover your environment, treat Artillery as an experimental legacy tool and isolate it accordingly.

Bottom line for a safe deployment

Artillery is useful when you need a small deception layer combined with host-file monitoring, but the familiar installation is historical. Validate the moved code first, deploy only on an isolated VPS, keep a tested out-of-band path, separate real SSH from decoy ports, allowlist every administrator and scanner address, and verify sockets and bans from an external authorized test. The result should be a reproducible, documented experiment—not an assumption that old commands remain supported forever.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

ArtilleryhoneypotIntrusion detectionLinux securityserver hardeningUbuntu VPS

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.