cowrie/INSTALL.md

224 lines
6.3 KiB
Markdown
Raw Normal View History

2015-05-12 15:17:42 +00:00
2018-06-27 22:30:38 +00:00
# Installing Cowrie in seven steps.
2015-05-12 15:22:15 +00:00
2018-06-27 21:09:55 +00:00
* [Step 1: Install dependencies](#step-1-install-dependencies)
2018-06-27 22:30:38 +00:00
* [Step 2: Create a user account](#step-2-create-a-user-account)
* [Step 3: Checkout the code](#step-3-checkout-the-code)
* [Step 4: Setup Virtual Environment](#step-4-setup-virtual-environment)
* [Step 5: Install configuration file](#step-5-install-configuration-file)
* [Step 6: Generate a DSA key (OPTIONAL)](#step-6-generate-a-dsa-key)
* [Step 7: Starting Cowrie](#step-7-turning-on-cowrie)
* [Step 8: Port redirection (OPTIONAL)](#step-8-port-redirection-optional)
* [Running within supervisord (OPTIONAL)](#running-using-supervisord)
* [Configure Additional Output Plugins (OPTIONAL)](#configure-additional-output-plugins-optional)
* [Troubleshooting](#troubleshooting)
2016-02-04 05:40:28 +00:00
2018-06-27 22:30:38 +00:00
## Step 1: Install dependencies
2018-06-27 20:53:15 +00:00
2018-06-27 22:30:38 +00:00
First we install system-wide support for Python virtual environments and other dependencies.
Actual Python packages are installed later.
2018-06-27 20:53:15 +00:00
2018-06-27 22:30:38 +00:00
On Debian based systems (last verified on Debian 9, 2017-07-25):
2018-06-27 20:53:15 +00:00
```
2018-06-27 22:30:38 +00:00
$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
2018-06-27 20:53:15 +00:00
```
2018-06-27 20:35:16 +00:00
2018-06-27 22:30:38 +00:00
## Step 2: Create a user account
2018-06-27 20:35:16 +00:00
2018-06-27 22:30:38 +00:00
It's strongly recommended to run with a dedicated non-root user id:
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
$ sudo adduser --disabled-password cowrie
Adding user `cowrie' ...
Adding new group `cowrie' (1002) ...
Adding new user `cowrie' (1002) with group `cowrie' ...
Changing the user information for cowrie
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
2018-06-27 20:35:16 +00:00
2018-06-27 22:30:38 +00:00
$ sudo su - cowrie
2018-06-27 21:41:34 +00:00
```
2018-06-27 22:30:38 +00:00
## Step 3: Checkout the code
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
$ git clone http://github.com/micheloosterhof/cowrie
Cloning into 'cowrie'...
remote: Counting objects: 2965, done.
remote: Compressing objects: 100% (1025/1025), done.
remote: Total 2965 (delta 1908), reused 2962 (delta 1905), pack-reused 0
Receiving objects: 100% (2965/2965), 3.41 MiB | 2.57 MiB/s, done.
Resolving deltas: 100% (1908/1908), done.
Checking connectivity... done.
$ cd cowrie
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
## Step 4: Setup Virtual Environment
Next you need to create your virtual environment:
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
$ pwd
/home/cowrie/cowrie
$ virtualenv cowrie-env
New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel...done.
2018-06-27 20:35:16 +00:00
```
Alternatively, create a Python3 virtual environment (under development)
```
2018-06-27 22:30:38 +00:00
$ virtualenv --python=python3 cowrie-env
New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel...done.
2018-06-27 20:35:16 +00:00
```
Activate the virtual environment and install packages
```
2018-06-27 22:30:38 +00:00
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install --upgrade pip
(cowrie-env) $ pip install --upgrade -r requirements.txt
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
## Step 5: Install configuration file
The configuration for Cowrie is stored in cowrie.cfg.dist and
cowrie.cfg. Both files are read on startup, where entries from
2018-06-27 20:35:16 +00:00
cowrie.cfg take precedence. The .dist file can be overwritten by
upgrades, cowrie.cfg will not be touched. To run with a standard
configuration, there is no need to change anything. To enable telnet,
2018-06-27 22:30:38 +00:00
for example, create cowrie.cfg and input only the following:
2018-06-27 20:35:16 +00:00
```
[telnet]
enabled = true
```
2018-06-27 22:30:38 +00:00
## Step 6: Generate a DSA key (OPTIONAL)
2018-06-27 20:35:16 +00:00
This step should not be necessary, however some versions of Twisted
are not compatible. To avoid problems in advance, run:
```
2018-06-27 22:30:38 +00:00
$ cd data
$ ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key
$ cd ..
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
## Step 7: Starting Cowrie
2018-06-27 20:35:16 +00:00
2018-06-27 22:30:38 +00:00
Start Cowrie with the cowrie command. You can add the cowrie/bin
2018-06-27 20:35:16 +00:00
directory to your path if desired. An existing virtual environment
is preserved if activated, otherwise Cowrie will attempt to load
the environment called "cowrie-env"
```
2018-06-27 22:30:38 +00:00
$ bin/cowrie start
Activating virtualenv "cowrie-env"
Starting cowrie with extra arguments [] ...
2018-06-27 20:35:16 +00:00
```
2018-06-27 22:30:38 +00:00
## Step 8: Port redirection (OPTIONAL)
2018-06-27 20:35:16 +00:00
2018-06-27 22:30:38 +00:00
All port redirection commands are system-wide and need to be executed as root.
Cowrie runs by default on port 2222. This can be modified in the configuration file.
The following firewall rule will forward incoming traffic on port 22 to port 2222.
2018-06-27 20:35:16 +00:00
```
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
```
2018-06-27 22:30:38 +00:00
2018-06-27 20:35:16 +00:00
Note that you should test this rule only from another host; it
doesn't apply to loopback connections. Alternatively you can run
authbind to listen as non-root on port 22 directly:
```
$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/22
$ sudo chown cowrie:cowrie /etc/authbind/byport/22
$ sudo chmod 770 /etc/authbind/byport/22
```
2018-06-27 22:30:38 +00:00
2018-06-27 20:35:16 +00:00
Or for telnet:
```
$ apt-get install authbind
$ sudo touch /etc/authbind/byport/23
$ sudo chown cowrie:cowrie /etc/authbind/byport/23
$ sudo chmod 770 /etc/authbind/byport/23
```
2018-06-27 22:30:38 +00:00
* Edit bin/cowrie and modify the AUTHBIND_ENABLED setting
* Change listen_port to 22 in cowrie.cfg
2018-06-27 22:30:38 +00:00
## Running using Supervisord (OPTIONAL)
2017-12-26 06:18:07 +00:00
On Debian, put the below in /etc/supervisor/conf.d/cowrie.conf
```
[program:cowrie]
2017-03-07 19:17:30 +00:00
command=/home/cowrie/cowrie/bin/cowrie start
directory=/home/cowrie/cowrie/
user=cowrie
autorestart=true
redirect_stderr=true
```
2018-06-27 22:30:38 +00:00
Update the bin/cowrie script, change:
```
DAEMONIZE=""
```
to:
```
DAEMONIZE="-n"
```
2017-12-13 09:09:36 +00:00
2018-06-27 22:30:38 +00:00
## Configure Additional Output Plugins (OPTIONAL)
2017-12-26 06:18:07 +00:00
Cowrie automatically outputs event data to text and JSON log files
in ~/cowrie/log. Additional output plugins can be configured to
record the data other ways. Supported output plugins include:
* Cuckoo
* ELK (Elastic) Stack
* Graylog
* Kippo-Graph
* Splunk
* SQL (MySQL, SQLite3, RethinkDB)
See ~/cowrie/doc/[Output Plugin]/README.md for details.
## Troubleshooting
2016-09-04 17:23:49 +00:00
* If you see `twistd: Unknown command: cowrie` there are two
possibilities. If there's a python stack trace, it probably means
there's a missing or broken dependency. If there's no stack trace,
2016-09-04 17:23:49 +00:00
double check that your PYTHONPATH is set to the source code directory.
* Default file permissions
2016-04-27 08:38:05 +00:00
To make Cowrie logfiles public readable, change the ```--umask 0077``` option in start.sh into ```--umask 0022```
2016-04-27 08:38:05 +00:00
2017-12-13 09:09:36 +00:00
# Updating Cowrie
2018-06-27 22:30:38 +00:00
Updating is an easy process. First stop your honeypot. Then fetch updates from GitHub, as a next step upgrade your Python dependencies.
2017-12-13 09:09:36 +00:00
```
bin/cowrie stop
git pull
pip install --upgrade -r requirements.txt
bin/cowrie start
```
2018-06-23 17:06:51 +00:00
# Modifying Cowrie
The pre-login banner can be set by creating the file `honeyfs/etc/issue.net`.
The post-login banner can be customized by editing `honeyfs/etc/motd`.