# Cis Cassandra40 V110 5.2

> Cis Cassandra40 V110 5.2 is an Agent Skill for devops & security published in the CyberStrikeus/CyberStrike repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Client Encryption

- Skill name: `cis-cassandra40-v110-5.2`
- Category: [DevOps & Security](https://www.openparable.com/skill/devops-security/1)
- Source: https://github.com/CyberStrikeus/CyberStrike/blob/HEAD/.cyberstrike/skill/CIS_benchmarks/Server_Software/Apache_Cassandra/CIS_Apache_Cassandra_4.0_Benchmark_v1.1.0/cis-cassandra40-v110-5.2/SKILL.md
- Repository: CyberStrikeus/CyberStrike (1,211 GitHub stars when collected)

## SKILL.md

# 5.2 Client Encryption

## Profile Applicability

- Level 1 - Cassandra on Linux

## Description

Cassandra offers the option to encrypt data in transit between the client and nodes on the cluster. By default client encryption is turned off.

## Rationale

Data in transit between the client and node on the cluster should be encrypted to avoid network snooping, whether legitimate or not.

## Audit

The Cassandra configuration files can be found in the conf directory of tarballs. For packages, the configuration files will be located in `/etc/cassandra`.

Open up the `cassandra.yaml` file, look for `client_encryption_options` section.

Look for `enabled:` and `optional:`:

```yaml
enabled: true

optional: false
```

If neither is true, then all client connections are unencrypted which makes this a finding.

If enabled is true and optional is false, then all client connections must be encrypted which makes this not a finding.

If enabled is false and optional is true, then enabled wins and all client connections are unencrypted which makes this a finding.

If both are set to true, then both unencrypted and encrypted connections are allowed on the same port which makes this not a finding.

## Remediation

The client encryption should be implemented before anyone accesses the Cassandra server.

To enable the client encryption mechanism:

1. Stop the Cassandra database.
2. If not done so already, build out your keystore and truststore.
3. Modify `cassandra.yaml` file to modify/add entries under `client_encryption_options`:

```yaml
set enabled: true

set optional: false
```

This will force all connections to be encrypted between client and node on the cluster.

4. Start the Cassandra database.

## Default Value

```yaml
enabled: false

optional: false
```

## References

1. http://cassandra.apache.org/doc/latest/operating/security.html

## CIS Controls

**v8:**

- 3.10 Encrypt Sensitive Data in Transit - Encrypt sensitive data in transit. Example implementations can include: Transport Layer Security (TLS) and Open Secure Shell (OpenSSH).

**v7:**

- 14.4 Encrypt All Sensitive Information in Transit - Encrypt all sensitive information in transit.

## Profile

- Level 1 | Automated

---

Source: https://www.openparable.com/skill/devops-security/cis-cassandra40-v110-5-2 (OpenParable). Cite the canonical URL above.
