Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
b073f47
build(deps): bump pytest-mock from 3.15.0 to 3.15.1 in /install
dependabot[bot] Oct 28, 2025
abc5597
build(deps): bump matplotlib from 3.10.1 to 3.10.7 in /install
dependabot[bot] Oct 28, 2025
a4f3739
build(deps): bump certifi from 2025.8.3 to 2025.10.5 in /install
dependabot[bot] Oct 28, 2025
baca182
docs: Add zeek v8.0.0 as slips dependency
AlyaGomaa Nov 1, 2025
213a36b
config_parser: fix the usage msg
AlyaGomaa Nov 1, 2025
936f650
require the used slips command in the bug report template
AlyaGomaa Nov 1, 2025
b94fe58
dont use netifaces for getting the evidence interface unless slips is…
AlyaGomaa Nov 1, 2025
d54e0bf
db: cache the used interface if it's only 1 intead of detecting it ev…
AlyaGomaa Nov 1, 2025
29223ee
add debugging prints
AlyaGomaa Nov 1, 2025
a3ed725
better error handling of errors in dict_to_evidence()
AlyaGomaa Nov 1, 2025
107db8c
when detecting the default interface (when -g is given) check both ip…
AlyaGomaa Nov 1, 2025
57f29f9
Merge pull request #1684 from stratosphereips/alya/fix_starting_slips…
AlyaGomaa Nov 1, 2025
63ea1ff
require a dir with -g
AlyaGomaa Nov 2, 2025
4949975
stop slips if it started with -g without -i <interface>
AlyaGomaa Nov 2, 2025
97f70d7
input: dont infer the used interface when -g is give, use the one giv…
AlyaGomaa Nov 2, 2025
26e6a91
require a dir with -g
AlyaGomaa Nov 2, 2025
4a68777
stop slips if it started with -g without -i <interface>
AlyaGomaa Nov 2, 2025
02b12f1
input: dont infer the used interface when -g is give, use the one giv…
AlyaGomaa Nov 2, 2025
9a7cc17
Merge remote-tracking branch 'origin/alya/require_an_interface_with_-…
AlyaGomaa Nov 2, 2025
b55168b
host_ip_manager: don't use the default interface when -g is give, use…
AlyaGomaa Nov 2, 2025
391cc5e
host_ip_manager: don't require a host ip to start slips
AlyaGomaa Nov 2, 2025
df078ce
fix printing used local network more than once
AlyaGomaa Nov 2, 2025
2e1de5a
host_ip: prioritize ipv4 of host ips
AlyaGomaa Nov 2, 2025
aa52091
utils: when -g is given return the interface given with -i when get_a…
AlyaGomaa Nov 2, 2025
d45df02
update host_ip_manager.py unit tests
AlyaGomaa Nov 2, 2025
ae535b7
update the docs about how to use -g
AlyaGomaa Nov 2, 2025
612f6f5
integration tests: use -i with -g
AlyaGomaa Nov 2, 2025
7b50467
update checker.py unit tests
AlyaGomaa Nov 2, 2025
3a1ac7b
Merge pull request #1685 from stratosphereips/alya/require_an_interfa…
AlyaGomaa Nov 2, 2025
b2317cd
Merge pull request #1678 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 2, 2025
e27b57e
Merge pull request #1676 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 2, 2025
cbd1b06
Merge pull request #1674 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 2, 2025
3c9cbb9
db: delete unused functions
AlyaGomaa Nov 2, 2025
de5e498
add immune summarization dataset documentation
harpomaxx Nov 2, 2025
5b0432b
Update summary_dataset.md
harpomaxx Nov 3, 2025
0dccb3d
build(deps): bump psutil from 7.1.2 to 7.1.3 in /install
dependabot[bot] Nov 3, 2025
d4c65b3
build(deps): bump termcolor from 3.1.0 to 3.2.0 in /install
dependabot[bot] Nov 3, 2025
c374199
build(deps): bump black from 24.10.0 to 25.9.0 in /install
dependabot[bot] Nov 3, 2025
e8ea5fb
Merge pull request #1687 from stratosphereips/alya/small_db_refactor
AlyaGomaa Nov 3, 2025
d099af1
db: add extra confirmation that redis is up and listening on the give…
AlyaGomaa Nov 3, 2025
8debdd7
p2p: dont return the used redis port as available to the p2p binary
AlyaGomaa Nov 3, 2025
64e4167
Merge pull request #1694 from stratosphereips/alya_handle_conn_rrefus…
AlyaGomaa Nov 3, 2025
eb31186
Merge pull request #1691 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 4, 2025
ec5cac8
Merge pull request #1689 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 4, 2025
1d66d70
Merge pull request #1688 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 4, 2025
f267fef
build(deps): bump ruff from 0.14.2 to 0.14.3 in /install
dependabot[bot] Nov 4, 2025
7534735
p2p: refactor starting the p2p pigeon
AlyaGomaa Nov 4, 2025
7f509c1
db: bind the redis server slips starts to localhost
AlyaGomaa Nov 4, 2025
74c0560
update latest p2p4slips version
AlyaGomaa Nov 4, 2025
cdb6819
update submodules
AlyaGomaa Nov 4, 2025
af3c58b
p2ptrust: reduce the time slips waits for the pigeon to start
AlyaGomaa Nov 4, 2025
b2897a5
Merge pull request #1695 from stratosphereips/alya/fix_p2p_bin_unable…
AlyaGomaa Nov 4, 2025
236eaa1
dont set eviidence on connection to ip outside local network when the…
AlyaGomaa Nov 4, 2025
d9a41f1
add an evidence logger thread that prints evidence to alerts.* logfil…
AlyaGomaa Nov 4, 2025
11cec01
shutdown evidence logger thread gracefully when evidence handler is done
AlyaGomaa Nov 4, 2025
6e4c3de
add an evidence logger thread that prints evidence to alerts.* logfil…
AlyaGomaa Nov 4, 2025
c637156
shutdown evidence logger thread gracefully when evidence handler is done
AlyaGomaa Nov 4, 2025
3aac0cb
Merge remote-tracking branch 'origin/alya/fix-latency/speedup_latency…
AlyaGomaa Nov 4, 2025
ab9aaf8
Drop support for the dynamic reloading of whitelists
AlyaGomaa Nov 4, 2025
6265434
init org bloom filters whether slips reloaded the org files or not
AlyaGomaa Nov 4, 2025
f663e6d
init IPs, domains, macs and orgs bloom filters on startup
AlyaGomaa Nov 4, 2025
e597c5d
use the bloom filter when checking whitelisted ips, macs and domains
AlyaGomaa Nov 4, 2025
6a3b3f3
organization_whitelist.py: use org bloom filters
AlyaGomaa Nov 4, 2025
60f4a43
Explain the zeek used filter and the ethernet interface
AlyaGomaa Nov 5, 2025
9f7ac30
Only check ipv4 for conn outside of localnet
AlyaGomaa Nov 5, 2025
cc2e19b
Merge pull request #1696 from stratosphereips/alya/fix_fp_evidence_ab…
AlyaGomaa Nov 5, 2025
2495e03
add a bloom filters manager to init the filters once for all modules …
AlyaGomaa Nov 6, 2025
3a87d2b
pass the bloom filters manager instance to all modules and core files
AlyaGomaa Nov 6, 2025
5196e13
use the bloom filters manager in all whitelist helpers
AlyaGomaa Nov 6, 2025
10bdb4b
keep track of bloom filter's FPs, TN, and TP
AlyaGomaa Nov 6, 2025
a2cd284
delete whitelist dead code
AlyaGomaa Nov 6, 2025
65242bd
update_manager: more efficient storing of tranco domains
AlyaGomaa Nov 6, 2025
5b09a1e
db: better storing of whitelist IoCs so they can be retrieved in O(1)
AlyaGomaa Nov 6, 2025
db795e7
whitelist: search for IoCs in redis in O(1)
AlyaGomaa Nov 6, 2025
0dadf19
whitelist: search IoCs using a single is_whitelisted() func in redis …
AlyaGomaa Nov 6, 2025
d20120b
whitelist_parser: remove handling dynamic whitelist updates
AlyaGomaa Nov 6, 2025
6c3b64a
org_whitelist: cache whitelisted organizations instead of queries the…
AlyaGomaa Nov 6, 2025
f4f04a5
whitelist alerts from the whois domain *nic.co by default
AlyaGomaa Nov 6, 2025
106931b
Add a default medallion server configuration
eldraco Nov 8, 2025
30c00eb
Update export module to export to STIX v2
eldraco Nov 8, 2025
815dd17
Default creds for exporting must be changed
eldraco Nov 8, 2025
ad5d64b
Update the medallion config to load basic API from a second configura…
eldraco Nov 8, 2025
01d1aaf
Update the conf of data to include the endpoints
eldraco Nov 8, 2025
d833bb6
Update the requirements for taxii
eldraco Nov 8, 2025
eaf2cae
Add the docs for visualization
eldraco Nov 8, 2025
25ce4de
Update the docs for export
eldraco Nov 8, 2025
1ea54a8
Update the libraries excluded
eldraco Nov 8, 2025
e24d1e6
Fix sendind the data to a taxii server correctly
eldraco Nov 8, 2025
becd63b
Add the new stratosphereweb as a submodule
eldraco Nov 9, 2025
533bab4
Fix the config to export correctly to STIX when enabled
eldraco Nov 9, 2025
eeca0cb
Add the web visualization of alerts doc
eldraco Nov 9, 2025
097aba0
Improve installation instructions
eldraco Nov 9, 2025
ecd63c9
Refactor ExportingAlerts module to improve export target checks and s…
eldraco Nov 9, 2025
b2f844b
Refactor StixExporter to enhance evidence handling and streamline STI…
eldraco Nov 9, 2025
6ce576f
Update exporting_alerts configuration for TAXII 2 endpoints and clari…
eldraco Nov 9, 2025
b6a555f
Remove medallion configuration file and remove default data file
eldraco Nov 9, 2025
3cacbef
Add documentation for Stratosphere Web Visualization and Medallion TA…
eldraco Nov 9, 2025
3f93e98
Remove medallion configuration file to streamline setup process
eldraco Nov 9, 2025
340f123
Re-register StratosphereWeb submodule with new SlipsWeb URL
eldraco Nov 9, 2025
a493659
Rename submodule folder to SlipsWeb
eldraco Nov 9, 2025
f8d08e6
Update TAXII configuration instructions to clarify HTTPS support and …
eldraco Nov 9, 2025
44d2f43
Update SlipsWeb submodule to latest commit
eldraco Nov 9, 2025
ecc61c0
Fix documentation: Update section headers and clarify TAXII server in…
eldraco Nov 9, 2025
18942bc
Refactor _build_custom_properties to include date_added parameter and…
eldraco Nov 9, 2025
4433370
Update the SlipsWeb commit of the submodule
eldraco Nov 9, 2025
e837e47
Add logging for evidence reception in ExportingAlerts module
eldraco Nov 9, 2025
0ad571e
Enhance STIX export functionality: ensure bundle file creation, track…
eldraco Nov 9, 2025
7938a33
Enhance evidence export functionality: add logging for evidence expor…
eldraco Nov 9, 2025
bc41814
Increase log verbosity for evidence export and streaming operations
eldraco Nov 9, 2025
8949feb
update all whitelist unit tests
AlyaGomaa Nov 10, 2025
56c2233
pass bloom filters manager to all instances in module_factory.py
AlyaGomaa Nov 10, 2025
f88a8a5
Increase log verbosity for received evidence in ExportingAlerts module
eldraco Nov 10, 2025
0d13315
Increase log verbosity for STIX export operations
eldraco Nov 10, 2025
e1d182b
fix instance creation in module_factory.py and use kwargs instead of …
AlyaGomaa Nov 10, 2025
9ee0bdb
update evidence handler unit tests
AlyaGomaa Nov 10, 2025
c9d3a7c
update process_manager unit tests
AlyaGomaa Nov 10, 2025
a3582c7
fix profiler creation
AlyaGomaa Nov 10, 2025
a7b14de
Merge pull request #1690 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Nov 10, 2025
eaefa93
Merge pull request #1709 from stratosphereips/alya/fix-latency/speedu…
AlyaGomaa Nov 10, 2025
74ce316
add Slips-tools to related repos
AlyaGomaa Nov 10, 2025
4193df3
document that whitelists now use bloom filters
AlyaGomaa Nov 10, 2025
b8f148f
Update summary_dataset.md
harpomaxx Nov 10, 2025
3d86ad9
Add a default medallion server configuration
eldraco Nov 8, 2025
166d11f
Update export module to export to STIX v2
eldraco Nov 8, 2025
a3d0feb
Default creds for exporting must be changed
eldraco Nov 8, 2025
cce2f62
Update the medallion config to load basic API from a second configura…
eldraco Nov 8, 2025
8f85ae0
Update the conf of data to include the endpoints
eldraco Nov 8, 2025
b184d8a
Update the requirements for taxii
eldraco Nov 8, 2025
fe515b6
Add the docs for visualization
eldraco Nov 8, 2025
b67a329
Update the docs for export
eldraco Nov 8, 2025
143d8b4
Update the libraries excluded
eldraco Nov 8, 2025
5a49c48
Fix sendind the data to a taxii server correctly
eldraco Nov 8, 2025
6b1f0ee
Add the new stratosphereweb as a submodule
eldraco Nov 9, 2025
5b678b2
Fix the config to export correctly to STIX when enabled
eldraco Nov 9, 2025
3bd90fb
Add the web visualization of alerts doc
eldraco Nov 9, 2025
c9a3afa
Improve installation instructions
eldraco Nov 9, 2025
ab01ffa
Refactor ExportingAlerts module to improve export target checks and s…
eldraco Nov 9, 2025
cfed524
Refactor StixExporter to enhance evidence handling and streamline STI…
eldraco Nov 9, 2025
cb03fa0
Update exporting_alerts configuration for TAXII 2 endpoints and clari…
eldraco Nov 9, 2025
6f4e981
Remove medallion configuration file and remove default data file
eldraco Nov 9, 2025
80be52b
Add documentation for Stratosphere Web Visualization and Medallion TA…
eldraco Nov 9, 2025
3ca1f2d
Remove medallion configuration file to streamline setup process
eldraco Nov 9, 2025
b9f5e75
Re-register StratosphereWeb submodule with new SlipsWeb URL
eldraco Nov 9, 2025
7854637
Rename submodule folder to SlipsWeb
eldraco Nov 9, 2025
f1e18fe
Update TAXII configuration instructions to clarify HTTPS support and …
eldraco Nov 9, 2025
e85e248
Update SlipsWeb submodule to latest commit
eldraco Nov 9, 2025
9677279
Fix documentation: Update section headers and clarify TAXII server in…
eldraco Nov 9, 2025
1a0cb17
Refactor _build_custom_properties to include date_added parameter and…
eldraco Nov 9, 2025
350bcfc
Update the SlipsWeb commit of the submodule
eldraco Nov 9, 2025
94d1b84
Add logging for evidence reception in ExportingAlerts module
eldraco Nov 9, 2025
03e3b00
Enhance STIX export functionality: ensure bundle file creation, track…
eldraco Nov 9, 2025
7d8b0f3
Enhance evidence export functionality: add logging for evidence expor…
eldraco Nov 9, 2025
38781be
Increase log verbosity for evidence export and streaming operations
eldraco Nov 9, 2025
072ec7b
Increase log verbosity for received evidence in ExportingAlerts module
eldraco Nov 10, 2025
0ede263
Increase log verbosity for STIX export operations
eldraco Nov 10, 2025
c0dd4df
Merge remote-tracking branch 'origin/sebas-alert-local-visualizer' in…
AlyaGomaa Nov 12, 2025
ac14de2
.gitmodules: store SlipsWeb submodule in SlipsWeb/, not StratosphereWeb
AlyaGomaa Nov 12, 2025
f0c6803
Fix zeek v8.0 in slips requirements, install.sh, workflows, etc. for …
AlyaGomaa Nov 12, 2025
170ea4d
use --fix-missing when installing zeek
AlyaGomaa Nov 12, 2025
ccdcbed
CI: use wget if apt fails to download zeek
AlyaGomaa Nov 12, 2025
2e179b5
CI: reset to CI from origin/develop
AlyaGomaa Nov 12, 2025
abc8ee4
Merge pull request #1716 from stratosphereips/sebas-alert-local-visua…
AlyaGomaa Nov 12, 2025
5550bb2
Add a failover handler to register slips service in systemd, create a…
AlyaGomaa Nov 14, 2025
5cea1d8
add a template slips service
AlyaGomaa Nov 14, 2025
ffa90d1
add a .sh script for slips runner to run via the systemd service
AlyaGomaa Nov 14, 2025
76c9d07
dockerfile: use apt_dependencies instead of duplicate hardcoding of d…
AlyaGomaa Nov 14, 2025
9ddc7f4
Fix Unable to start slips with -ap
AlyaGomaa Nov 14, 2025
4e6a2f2
failover_handler.sh: tell the user what slips does with the created o…
AlyaGomaa Nov 14, 2025
d260989
slips-runner: increase cpu shares and add NET_ADMIN capabilities to t…
AlyaGomaa Nov 14, 2025
f4b898b
Add a systemd .path and a .service for auto save on any iptables rule…
AlyaGomaa Nov 14, 2025
c2a83ab
failover_handler.sh: setup systemd persistence units
AlyaGomaa Nov 14, 2025
b320235
User a service that monitors rule changes every 10s for iptables rule…
AlyaGomaa Nov 14, 2025
7287e4d
add a .sh script to save the iptables rule whenever a change in the r…
AlyaGomaa Nov 14, 2025
b100fe6
failover_handler.sh: register the timer and iptables-watcher.service …
AlyaGomaa Nov 14, 2025
a8e4e3f
better logging of killing th eAP process when slips fails
AlyaGomaa Nov 19, 2025
6de6454
reorder apt dependencies with important libs first
AlyaGomaa Nov 24, 2025
0cd441d
increase timeouts for slips runner to start and cleanup
AlyaGomaa Nov 24, 2025
7530f5b
Don't rm the docker container when it's killed, or when the runner fi…
AlyaGomaa Nov 24, 2025
67df833
slips-runner: kill the container when slips stops
AlyaGomaa Nov 24, 2025
d89e627
more verbose prints about whats happening
AlyaGomaa Nov 24, 2025
52aaff7
Dockerfile: when doing apt update: retry on timeout, enforce https an…
AlyaGomaa Nov 24, 2025
e330ead
Add failover mechanisms docs
AlyaGomaa Nov 25, 2025
c1ba616
don't start docker with rm to be able to debug the failing container …
AlyaGomaa Nov 25, 2025
8159bab
Add a failover handler to register slips service in systemd, create a…
AlyaGomaa Nov 14, 2025
dfd871f
add a template slips service
AlyaGomaa Nov 14, 2025
72e5e0d
add a .sh script for slips runner to run via the systemd service
AlyaGomaa Nov 14, 2025
90a8d5b
dockerfile: use apt_dependencies instead of duplicate hardcoding of d…
AlyaGomaa Nov 14, 2025
f4da6d9
Fix Unable to start slips with -ap
AlyaGomaa Nov 14, 2025
d57d93b
failover_handler.sh: tell the user what slips does with the created o…
AlyaGomaa Nov 14, 2025
bb7a4dc
slips-runner: increase cpu shares and add NET_ADMIN capabilities to t…
AlyaGomaa Nov 14, 2025
70a67e3
Add a systemd .path and a .service for auto save on any iptables rule…
AlyaGomaa Nov 14, 2025
4d6bf36
failover_handler.sh: setup systemd persistence units
AlyaGomaa Nov 14, 2025
e73b10b
User a service that monitors rule changes every 10s for iptables rule…
AlyaGomaa Nov 14, 2025
8890603
add a .sh script to save the iptables rule whenever a change in the r…
AlyaGomaa Nov 14, 2025
47cdc13
failover_handler.sh: register the timer and iptables-watcher.service …
AlyaGomaa Nov 14, 2025
bb728db
better logging of killing th eAP process when slips fails
AlyaGomaa Nov 19, 2025
9499f50
reorder apt dependencies with important libs first
AlyaGomaa Nov 24, 2025
aa6427f
increase timeouts for slips runner to start and cleanup
AlyaGomaa Nov 24, 2025
9725122
Don't rm the docker container when it's killed, or when the runner fi…
AlyaGomaa Nov 24, 2025
4bfefae
slips-runner: kill the container when slips stops
AlyaGomaa Nov 24, 2025
c3ace1e
more verbose prints about whats happening
AlyaGomaa Nov 24, 2025
c8a4f0f
Dockerfile: when doing apt update: retry on timeout, enforce https an…
AlyaGomaa Nov 24, 2025
9229299
Add failover mechanisms docs
AlyaGomaa Nov 25, 2025
13c0b8c
don't start docker with rm to be able to debug the failing container …
AlyaGomaa Nov 25, 2025
0409d8c
Merge remote-tracking branch 'origin/alya/immune/failover_mechanisms'…
AlyaGomaa Nov 25, 2025
14946fb
Merge pull request #1737 from stratosphereips/alya/immune/failover_me…
AlyaGomaa Nov 25, 2025
aaab41c
update dataset for summarization finetuning
harpomaxx Nov 27, 2025
2acc595
add an entry for failover mechanisms docs in immune.md
AlyaGomaa Nov 25, 2025
0a425ae
update changelog
AlyaGomaa Dec 1, 2025
180962a
Fix stopping the daemon
AlyaGomaa Dec 1, 2025
4e0728b
Fix problem killing the daemon's children
AlyaGomaa Dec 1, 2025
3874540
bump slips version to 1.1.16
AlyaGomaa Dec 1, 2025
e6db165
update slips.gif
AlyaGomaa Dec 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ assignees: ''
**Describe the bug**
A clear and concise description of what the bug is.


**Used Slips command**

The used Slips command that trigged this bug.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to branch '...'
Expand Down
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@
path = feel_project
url = https://github.com/stratosphereips/feel_project
branch = main

[submodule "SlipsWeb"]
path = SlipsWeb
url = https://github.com/stratosphereips/SlipsWeb.git
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
1.1.16 (Dec 1st, 2025)
- Fix problem reporting evidence when Slips is monitoring one interface
- Change the usage of -g option, now Slips requires the interface name to monitor when using -g.
- Fix P2P unable to connect to the redis database when using -m.
- Fix false positive setting evidence on connection to IP outside local network when the IP is multicast.
- Evidence handler and whitelist speedup by using bloom filters.
- Drop support for the dynamic reloading of whitelists
- Add an alerts visualiser web interface for TAXII servers.
- Handle Slips and iptables failovers when running Slips as an access point in the Raspberry Pi.


1.1.15 (Oct 31st, 2025)
- Fix FP connection to port 0 for IGMP flows.
- Support monitoring two interfaces when Slips is running as an access point.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<h1 align="center">
Slips v1.1.15
Slips v1.1.16
</h1>


Expand Down
1 change: 1 addition & 0 deletions SlipsWeb
Submodule SlipsWeb added at 131238
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.1.15
1.1.16
19 changes: 6 additions & 13 deletions config/slips.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ exporting_alerts:

# Configuer all the methods Slips will export data with
# Available options are slack or stix
# export_to : [stix]
# export_to : [stix] (And a TAXII server)
# export_to : [slack]
export_to: []

Expand All @@ -373,12 +373,11 @@ exporting_alerts:
# For Stix, if Slips should use TLS
use_https: false

# TAXII
discovery_path: /services/discovery-a
inbox_path: /services/inbox-a
# TAXII 2 discovery endpoint (relative path or full URL)
discovery_path: /taxii2/

# Collection on the server you want to push stix data to
collection_name: collection-a
# Collection (ID or title) on the server you want to push STIX data to
collection_name: Alerts

# This value is only used when Slips is running non-stop (e.g with -i )
# push_delay is the time to wait before pushing STIX data to server
Expand All @@ -390,13 +389,7 @@ exporting_alerts:

# TAXII server credentials
taxii_username: admin
taxii_password: admin

# URL used to obtain JWT token. set this to '' if you don't want to use it
# is required for JWT based authentication.
# (JWT based authentication is Optional)
# It's usually /management/auth
jwt_auth_path: /management/auth
taxii_password: changeme_before_installing_a_medallion_server

#############################
CESNET:
Expand Down
1 change: 1 addition & 0 deletions config/whitelist.conf
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,4 @@ organization,google,both,alerts
organization,apple,both,alerts
organization,twitter,both,alerts
domain,markmonitor.com,both,alerts
domain,whois.nic.co,both,alerts
44 changes: 16 additions & 28 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,54 +29,43 @@ ENV NVM_DIR=/root/.nvm
# use bash instead of sh
SHELL ["/bin/bash", "-c"]

# Switch to Slips installation dir on login.
WORKDIR ${SLIPS_DIR}

COPY . $SLIPS_DIR

RUN apt update && apt install -y --no-install-recommends \
wget \
ca-certificates \
git \
curl \
gnupg \
RUN apt-get update -o Acquire::Retries=5 -o Acquire::https::No-Cache=True \
&& apt-get install -y --no-install-recommends --fix-broken --fix-missing \
$(cat install/apt_dependencies.txt) \
lsb-release \
software-properties-common \
build-essential \
file \
lsof \
iptables \
iproute2 \
nfdump \
tshark \
whois \
yara \
net-tools \
vim \
less \
unzip \
golang \
python3-certifi \
python3-dev \
python3-tzlocal \
python3-pip \
nano \
tree \
tmux \
arp-scan \
&& echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_22.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list \
&& curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_22.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null \
&& apt update \
&& apt install -y --no-install-recommends --fix-missing \
zeek \
&& apt-get install -y --no-install-recommends --fix-missing \
zeek-8.0 \
npm \
&& ln -s /opt/zeek/bin/zeek /usr/local/bin/bro \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - \
&& export NVM_DIR="$HOME/.nvm" \
&& [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \
&& nvm install 22
&& nvm install 22 \
&& apt purge -y redis-server redis # we'll be compiling it manually



# why are we compiling redis instead od just using apt?
# to support running slips on the rpi (arm64). the rpi uses jemmalloc by default, which expects a different page size
# than the default on x86_64
WORKDIR /
RUN pip3 install --no-cache-dir --upgrade pip \
&& curl -O https://download.redis.io/redis-stable.tar.gz \
&& tar xzf redis-stable.tar.gz \
Expand All @@ -87,11 +76,9 @@ RUN pip3 install --no-cache-dir --upgrade pip \
ENV PATH="$PATH:/redis-stable/src"


# Switch to Slips installation dir on login.
WORKDIR ${SLIPS_DIR}

COPY . $SLIPS_DIR

WORKDIR ${SLIPS_DIR}
# Retrieve Iris
COPY --from=build /iris/iris ./modules/irisModule

Expand All @@ -110,4 +97,5 @@ ENV PATH="$PATH:/StratosphereLinuxIPS/p2p4slips/"

WORKDIR ${SLIPS_DIR}


CMD /bin/bash
2 changes: 1 addition & 1 deletion docker/light/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ RUN set -eux; \
| tee /etc/apt/sources.list.d/security:zeek.list \
&& curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_22.04/Release.key \
| gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null \
&& apt-get update && apt-get install -y --no-install-recommends --fix-missing zeek \
&& apt-get update && apt-get install -y --no-install-recommends --fix-missing zeek-8.0 \
&& ln -s /opt/zeek/bin/zeek /usr/local/bin/bro \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Expand Down
1 change: 0 additions & 1 deletion docker/light/excluded_libs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ scikit_learn
slackclient
matplotlib
stix2
cabby
pandas
setuptools
numpy
Expand Down
44 changes: 21 additions & 23 deletions docs/exporting.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,46 +40,44 @@ You can do this by going to the channel, then clicking on the channel's name. Th

## STIX

If you want to export alerts to your TAXII server using STIX format, change ```export_to``` variable to export to STIX, and Slips will automatically generate a
```STIX_data.json``` containing all alerts it detects.
If you want to export alerts to your TAXII 2 server using STIX 2.1 format,
set ```export_to``` to ```stix``` and Slips will automatically generate a
```STIX_data.json``` bundle containing the indicators it detects and push it to
your collection.


[ExportingAlerts]
export_to = [stix]


You can add your TAXII server details in the following variables:
Configure the TAXII client by editing the following variables:

```TAXII_server```: link to your TAXII server
```TAXII_server```: host name or IP address of the TAXII server.

```port```: port to be used
```port```: TCP port (optional, defaults to 80/443).

```use_https```: use https or not.
```use_https```: set to true to connect over HTTPS (be careful that the default TAXII server in SlipsWeb, Medallion, do not support HTTPS yet)

```discovery_path``` and ```inbox_path``` should contain URIs not full urls. For example:
```discovery_path```: TAXII discovery endpoint path or full URL
(for example ```/taxii2/```).

```python
discovery_path = /services/discovery-a
inbox_path = /services/inbox-a
```

```collection_name```: the collection on the server you want to push your STIX data to.

```push_delay```: the time to wait before pushing STIX data to server (in seconds).
It is used when slips is running non-stop (e.g with -i )
```collection_name```: ID or title of the TAXII collection that should receive your indicators. Be default `Alerts`.

```taxii_username```: TAXII server user credentials
```push_delay```: time between automatic pushes (in seconds) when Slips is
running continuously.

```taxii_password```: TAXII server user password
```taxii_username``` / ```taxii_password```: credentials used for HTTP Basic authentication.

```jwt_auth_path```: auth path if JWT based authentication is used. It's usually /management/auth. this is what we
use to get a token.
**Change the default config password of the TAXII servers you are going to export to in ```config/medallion_config.yaml```**


if your TAXII server is a remote server, you can set the ```port``` to 443 or 80.
Slips stores the generated bundle for each run in the output directory of that
execution (for example `output/<run_id>/STIX_data.json`), so you can inspect the
exact STIX objects that were pushed.

If running on a file, Slips will export to server after analysis is done.
If running on an interface, Slips will export to server every push_delay seconds. by default it's 1h.
If running on a file, Slips will export once before shutdown.
If running on an interface, Slips will export to the server every
```push_delay``` seconds (default 1 hour).

## JSON format

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/slips.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions docs/immune/Immune.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ This is the main guide to the documentation related to the changes done to Slips
- [LLM Research and Selection](https://stratospherelinuxips.readthedocs.io/en/develop/immune/research_and_selection_of_llm_candidates.html)
- [LLM RPI Performance](https://stratospherelinuxips.readthedocs.io/en/develop/immune/research_rpi_llm_performance.html)
- [LLM RPI Finetuning Frameworks](https://stratospherelinuxips.readthedocs.io/en/develop/immune/finetuning_frameworks_rpi_5.html)
- [LLM Summarization Dataset](https://stratospherelinuxips.readthedocs.io/en/develop/immune/summary_dataset.html)
- [ARP Poisoning](https://stratospherelinuxips.readthedocs.io/en/develop/immune/arp_poisoning.html)
- [ARP Poisoning Risks](https://stratospherelinuxips.readthedocs.io/en/develop/immune/arp_poisoning_risks.html)
- [Blocking with Slips as an Access Point](https://stratospherelinuxips.readthedocs.io/en/develop/immune/blocking_in_slips.html)
- [IDS-in-the-middle Traffic routing](https://stratospherelinuxips.readthedocs.io/en/develop/immune/ids_in_the_middle_traffic_routing.html)
- [RPI Failover Mechanisms](https://stratospherelinuxips.readthedocs.io/en/develop/immune/failover_mechanisms.html)
101 changes: 101 additions & 0 deletions docs/immune/failover_mechanisms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Failover Mechanisms

The project has a few failure points listed below that we explicitly want to control instead and try to recover from.

Our goal if something breaks, is to try to recover automatically where possible, but if recovery is not possible or the failure is critical, the user must lose internet so they are forced to debug and restart Slips manually instead of staying connected without Slips protection.


All failure points are handled by the ```failover_handler.sh``` script located in ```StratosphereLinuxIPS/rpi_scripts/```.

## Prerequisites

- Raspberry Pi with docker installed
- StratosphereLinuxIPS cloned. (or just the rpi_scripts/ directory)
- Root access to the Raspberry Pi.
- A [running access point](https://stratospherelinuxips.readthedocs.io/en/develop/immune/installing_slips_in_the_rpi.html#protect-your-local-network-with-slips-on-the-rpi).


## How to use

Run the following command from Slips main directory as root:

```bash
sudo ./rpi_scripts/failover_handler.sh <wifi_interface>,<ethernet_interface>
```

**Where**

- ```<wifi_interface>``` is the name of the wifi interface used by the access point (e.g. ```wlan0```, etc).

- ```<ethernet_interface>``` is the name of the ethernet interface connected to the router (e.g. ```eth0```, etc).

**You should see output similar to the image below:**

![](../images/immune/a8/failovers_script_output.jpg)


**Output:**

The script will
- Log Slips docker container status, used command, and any errors to ```slips_container.log``` for debugging purposes. This file should be checked in case you notice any issues with the AP or Slips.
- Start Slips and iptables watcher services through systemd so they start automatically on reboot and on failure.
- Start slips inside a docker container monitring your ethernet and wifi interfaces.
- Mount your local ```StratosphereLinuxIPS/output``` to ```/StratosphereLinuxIPS/output``` inside the started Slips container so any output generated by Slips will be available on the host machine.



## How Failovers are Handled

Slips in the Raspberry Pi has 3 main failure points that we want to handle:
1. The access point dies
2. Slips dies
3. The Raspberry Pi reboots

### The access point dies

If the AP dies, clients get disconnected. There's nothing to handle here. Slips keeps monitoring the ethernet interface and when the AP is back up, clients can reconnect and Slips continues protecting them.


### Slips dies

Failovers when Slips dies consist of:

* **Iptables firewall rules persistence**: The iptables firewall rules are saved periodically by the systemd unit that watches for iptables changes and saves them using ```netfilter-persistent``` whenever a change is detected.
* **Shutting down the AP process**: If Slips crashes we do not want the AP to keep running without Slips protection so we intentionally shut down the access point for the user to notice, debug and restart Slips manually instead of staying connected without Slips protection.
* **Restarting Slips automatically through systemd:** Slips restarts automatically through systemd on failure and on reboot.
* **Logging Slips container status to a file for debugging**: Slips container logs are places in ```slips_container.log``` for debugging purposes.



### The Raspberry Pi reboots

Failovers consist of:

* **Iptables firewall rules persistence**
* **Automatic start of Slips service through systemd**


When the Pi reboots, we want Slips to start automatically, and we want the iptables rules added by Slips to persist. The automatic restart is handled by systemd through the generated ```slips.service``` file, and firewall persistence is handled using the custom iptables watcher through the generated ```iptables-watcher.service```.


Both units are generated and started and added to the user's ```/etc/systemd/system``` by the ```failover_handler.sh``` script.

---

## File Descriptions

All the files involved in failover mechanisms are placed in ```StratosphereLinuxIPS/rpi_scripts/``` and are described in the table below:


| File | What it does |
|-------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| failover_handler.sh | The central orchestrator that checks AP status, ensures root access, prepares directories, sets up iptables persistence, builds the Slips runner script, generates the systemd unit, and enforces all failover behavior. This is the piece that links every component together and decides how the system should react when something breaks. |
| iptables_autosave/check-iptables-hash.sh | Keeps track of the hash of the current iptables rules and triggers a save when change is detected. |
| iptables_autosave/iptables-watcher.service | The systemd service that runs check-iptables-hash.sh (because we can't run the script directly by the timer), this is triggered by the iptables-watcher.timer every 10s to check for iptables changes. |
| iptables_autosave/iptables-watcher.timer | A systemd timer that periodically runs iptables-watcher.service so iptables rule changes are captured and saved automatically. |
| slips_container.log | A runtime log collecting Docker container output, commands, and status. useful for investigating restarts, failures, or unexpected behavior. |
| slips-runner-template.sh | The script that launches Slips container and launches slips inside of it in a tmux. This runner keeps the container up as long as Slips is running. |
| slips.service.template | The systemd unit that starts slips on reboot and on failure, it runs the slips-runner-template.sh. |


---
Loading
Loading