Skip to content

Commit 96ebee1

Browse files
authored
Merge pull request #2547 from sebix/doc-apt
docs: deb install: signed-by and wget, update postgres/eventdb docs
2 parents e73563d + 2cee36f commit 96ebee1

File tree

3 files changed

+57
-57
lines changed

3 files changed

+57
-57
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
- Add a deprecation warning (PR#2544 by Sebastian Wagner)
4343

4444
### Documentation
45+
- `docs/admin/installation/linux-packages`: Add `[signed-by=]` options, add wget command as alternative to curl (PR#2547 by Sebastian Wagner).
4546

4647
### Packaging
4748

docs/admin/database/postgresql.md

Lines changed: 46 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,21 @@ The EventDB is a database (usually [PostgreSQL](https://postgresql.org/)) that
99
gets filled with with data from IntelMQ using the SQL Output
1010
Bot.
1111

12-
## intelmq_psql_initdb
12+
## Setup
13+
14+
You have two basic choices to run PostgreSQL:
15+
16+
1. on the same machine as intelmq, then you could use Unix sockets if available on your platform
17+
2. on a different machine. In which case you would need to use a TCP connection and make sure you give the right
18+
connection parameters to each psql or client call. On the networking side, make sure the connections are allowed, postgresql-server is listening on the correct interface and the user is allowed to connect (`pg_hba.conf`).
19+
20+
### PostgreSQL Server Version
21+
22+
Any supported version of PostgreSQL should work (v>=13 as of January 2025) [[1]](https://www.postgresql.org/support/versioning/).
23+
### events table definition (`intelmq_psql_initdb`)
1324

1425
IntelMQ comes with the `intelmq_psql_initdb` command line tool designed to help with creating the
15-
EventDB. It creates in the first line:
26+
EventDB tabls. It generates these SQL commands for you:
1627

1728
- A `CREATE TABLE events` statement with all valid IntelMQ fields as columns and correct types
1829
- Several indexes as examples for a good read & search performance
@@ -21,16 +32,45 @@ Having an `events` table as outlined in the SQL file, IntelMQ's SQL Output Bot c
2132

2233
In addition, the script supports some additional features supporting use cases described later in this document:
2334

24-
- `--partition-key` - for generating schema aligned with TimescaleDB or partitioned tables,
25-
- `--separate-raws` - for generating views and triggers needed to `eventdb_raws_table` (works also together with adjustments for partitioning).
35+
- `--partition-key` - for generating schema aligned with TimescaleDB or partitioned tables
36+
- `--separate-raws` - for generating views and triggers needed to `eventdb_raws_table` (works also together with adjustments for partitioning). This can increase the performance by separating data in two tables. See section [Separating raw values in PostgreSQL using view and trigger](#separating-raw-values-in-postgresql-using-view-and-trigger) below for more information.
2637

2738
For a full list of supported parameters, call the script help using `-h` parameter.
2839

2940
All elements of the generated SQL file can be adapted and extended before running the SQL file against a database, especially the indexes. Please review the generated script before applying.
3041

3142
Be aware that if you create tables using another DB user that is used later by the output bot, you may need to adjust ownership or privileges in the database. If you have problems with database permissions,
32-
refer to `PostgreSQL documentation <https://www.postgresql.org/docs/current/ddl-priv.html>`.
43+
refer to [PostgreSQL documentation](https://www.postgresql.org/docs/current/ddl-priv.html).
44+
45+
### Installation
46+
47+
First, install the PostgreSQL on your server using system packages or using any installation variant supported by the project: [PostgreSQL server installation](https://www.postgresql.org/download/)
3348

49+
You need a PostgreSQL database-user to own the resulting database. The recommendation is to use the name `intelmq`
50+
. There may already be such a user for the PostgreSQL database-cluster to be used by other bots. (For example from
51+
setting up the expert/certbund_contact bot.)
52+
53+
Therefore if still necessary: create the database-user as postgresql superuser, which usually is done via the system
54+
user `postgres`:
55+
56+
```bash
57+
createuser --no-superuser --no-createrole --no-createdb --encrypted --pwprompt intelmq
58+
```
59+
60+
Create the new database:
61+
62+
```bash
63+
createdb --encoding='utf-8' --owner=intelmq intelmq-events --template template0
64+
```
65+
66+
The encoding parameter should ensure the right encoding on platform where this is not the default. Template `template1` has encoding `SQL_ASCII`, so in order to use UTF8, `template0` is required.
67+
68+
Now initialize it as database-user `intelmq` (in this example a network connection to localhost is used, so you would
69+
get to test if the user `intelmq` can authenticate):
70+
71+
```bash
72+
psql -h localhost intelmq-events intelmq < /tmp/initdb.sql
73+
```
3474
## EventDB Utilities
3575

3676
Some scripts related to the EventDB are located in the
@@ -181,55 +221,7 @@ The last steps brings us several advantages:
181221
The complete SQL script can be generated using the `intelmq_psql_initdb`. It does *not* cover step 2 to avoid accidental
182222
data loss - you need to do this step manually.
183223

184-
185-
### Other docs
186-
187-
You have two basic choices to run PostgreSQL:
188-
189-
1. on the same machine as intelmq, then you could use Unix sockets if available on your platform
190-
2. on a different machine. In which case you would need to use a TCP connection and make sure you give the right
191-
connection parameters to each psql or client call.
192-
193-
Make sure to consult your PostgreSQL documentation about how to allow network connections and authentication in case 2.
194-
195-
**PostgreSQL Version**
196-
197-
Any supported version of PostgreSQL should work (v>=9.2 as of Oct 2016) [[1]](https://www.postgresql.org/support/versioning/).
198-
199-
If you use PostgreSQL server v >= 9.4, it gives you the possibility to use the time-zone [formatting string](https://www.postgresql.org/docs/9.4/static/images/functions-formatting.html) "OF" for date-times and the [GiST index for the CIDR type](https://www.postgresql.org/docs/9.4/static/images/release-9-4.html#AEN120769). This may be useful depending on how you plan to use the events that this bot writes into the database.
200-
201-
**How to install**
202-
203-
Use `intelmq_psql_initdb` to create initial SQL statements from `harmonization.conf`. The script will create the
204-
required table layout and save it as `/tmp/initdb.sql`
205-
206-
You need a PostgreSQL database-user to own the result database. The recommendation is to use the name `intelmq`
207-
. There may already be such a user for the PostgreSQL database-cluster to be used by other bots. (For example from
208-
setting up the expert/certbund_contact bot.)
209-
210-
Therefore if still necessary: create the database-user as postgresql superuser, which usually is done via the system
211-
user `postgres`:
212-
213-
```bash
214-
createuser --no-superuser --no-createrole --no-createdb --encrypted --pwprompt intelmq
215-
```
216-
217-
Create the new database:
218-
219-
```bash
220-
createdb --encoding='utf-8' --owner=intelmq intelmq-events
221-
```
222-
223-
(The encoding parameter should ensure the right encoding on platform where this is not the default.)
224-
225-
Now initialize it as database-user `intelmq` (in this example a network connection to localhost is used, so you would
226-
get to test if the user `intelmq` can authenticate):
227-
228-
```bash
229-
psql -h localhost intelmq-events intelmq </tmp/initdb.sql
230-
```
231-
232-
**PostgreSQL and null characters**
224+
## PostgreSQL and null characters
233225

234226
While null characters (`0`, not SQL "NULL") in TEXT and JSON/JSONB fields are valid, data containing null characters can
235227
cause troubles in some combinations of clients, servers and each settings. To prevent unhandled errors and data which

docs/admin/installation/linux-packages.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,16 @@ Native packages are currently provided for the following Linux distributions:
2323

2424
### Debian 11 and 12
2525

26-
Add the repository to the package manager and install IntelMQ (packages `intelmq-api` and `intelmq-manager` are optional):
26+
1. First, add the APT repository to the package manager:
2727

2828
```bash
29-
echo "deb http://download.opensuse.org/repositories/home:/sebix:/intelmq/Debian_$(lsb_release -rs)/ /" | sudo tee /etc/apt/sources.list.d/intelmq.list
29+
echo "deb [signed-by=/etc/apt/trusted.gpg.d/intelmq.gpg] http://download.opensuse.org/repositories/home:/sebix:/intelmq/Debian_$(lsb_release -rs)/ /" | sudo tee /etc/apt/sources.list.d/intelmq.list
3030
curl -fsSL "https://download.opensuse.org/repositories/home:sebix:intelmq/Debian_$(lsb_release -rs)/Release.key" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/intelmq.gpg > /dev/null
31+
# if curl is not available:
32+
wget "https://download.opensuse.org/repositories/home:sebix:intelmq/xUbuntu_$(lsb_release -rs)/Release.key" -O - | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/intelmq.gpg > /dev/null
33+
```
34+
2. Install the IntelMQ (packages `intelmq-api` and `intelmq-manager` are optional)
35+
```bash
3136
sudo apt update
3237
sudo apt install intelmq intelmq-api intelmq-manager
3338
```
@@ -57,8 +62,10 @@ deb http://[...].archive.ubuntu.com/ubuntu/ focal main universe
5762

5863
3. Next, add the IntelMQ APT Repository for Ubuntu:
5964
```bash
60-
echo "deb http://download.opensuse.org/repositories/home:/sebix:/intelmq/xUbuntu_$(lsb_release -rs)/ /" | sudo tee /etc/apt/sources.list.d/intelmq.list
65+
echo "deb [signed-by=/etc/apt/trusted.gpg.d/intelmq.gpg] http://download.opensuse.org/repositories/home:/sebix:/intelmq/xUbuntu_$(lsb_release -rs)/ /" | sudo tee /etc/apt/sources.list.d/intelmq.list
6166
curl -fsSL "https://download.opensuse.org/repositories/home:sebix:intelmq/xUbuntu_$(lsb_release -rs)/Release.key" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/intelmq.gpg > /dev/null
67+
# if curl is not available:
68+
wget "https://download.opensuse.org/repositories/home:sebix:intelmq/xUbuntu_$(lsb_release -rs)/Release.key" -O - | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/intelmq.gpg > /dev/null
6269
```
6370

6471
3. Now update the list of available packages and install the IntelMQ packages:

0 commit comments

Comments
 (0)