feat(security): modernize SSH key algorithm support with Ed25519
Replace deprecated DSA key support with modern SSH key algorithms, prioritizing Ed25519 as the most secure option. Changes: - Add load_ssh_private_key() helper function in common.py - Support Ed25519 (preferred), ECDSA, and RSA key types - Remove deprecated and insecure DSA key support - Update all SSH key loading across backup drivers: * common.py: do_preexec, do_postexec, run_remote_command * backup_mysql.py * backup_pgsql.py * backup_sqlserver.py * backup_oracle.py * backup_samba4.py - Add ssh_port parameter to preexec/postexec connections - Update README.md with SSH key generation instructions - Document supported algorithms and migration path Algorithm priority: 1. Ed25519 (most secure, modern, fast, timing-attack resistant) 2. ECDSA (secure, widely supported) 3. RSA (legacy support, requires 2048+ bits) Security improvements: - Eliminates vulnerable DSA algorithm (1024-bit limit, FIPS deprecated) - Prioritizes elliptic curve cryptography (Ed25519, ECDSA) - Provides clear error messages for unsupported key types - Maintains backward compatibility with existing RSA keys Documentation: - Add SSH key generation examples to README.md - Update expected directory structure to show Ed25519 keys - Add migration notes in SECURITY_IMPROVEMENTS.md - Include key generation commands for all supported types Breaking change: - DSA keys are no longer supported and will fail with clear error message - Users must migrate to Ed25519, ECDSA, or RSA (4096-bit recommended) Migration: ```bash # Generate new Ed25519 key ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 # Copy to remote servers ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -29,8 +29,8 @@ Expected structure
|
||||
├── tisbackup-config.ini <-- backups config
|
||||
└── tisbackup_gui.ini <-- tisbackup config
|
||||
└─ssh/
|
||||
├── id_rsa <-- SSH Key
|
||||
└── id_rsa.pub <-- SSH PubKey
|
||||
├── id_ed25519 <-- SSH Private Key (Ed25519 recommended)
|
||||
└── id_ed25519.pub <-- SSH Public Key
|
||||
compose.yaml
|
||||
```
|
||||
|
||||
@@ -72,8 +72,30 @@ services:
|
||||
|
||||
## Configuration
|
||||
|
||||
* Provide an SSH key and store it in `./ssh`
|
||||
### SSH Keys
|
||||
|
||||
* **Generate SSH keys** (Ed25519 recommended):
|
||||
```bash
|
||||
# Ed25519 (most secure, recommended)
|
||||
ssh-keygen -t ed25519 -f ./ssh/id_ed25519 -C "tisbackup@yourserver"
|
||||
|
||||
# Or ECDSA (also secure)
|
||||
ssh-keygen -t ecdsa -b 521 -f ./ssh/id_ecdsa -C "tisbackup@yourserver"
|
||||
|
||||
# Or RSA (legacy, minimum 2048 bits)
|
||||
ssh-keygen -t rsa -b 4096 -f ./ssh/id_rsa -C "tisbackup@yourserver"
|
||||
```
|
||||
**⚠️ Note:** DSA keys are no longer supported due to security vulnerabilities
|
||||
|
||||
* Copy public key to remote servers:
|
||||
```bash
|
||||
ssh-copy-id -i ./ssh/id_ed25519.pub root@remote-server
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
|
||||
* Setup config files in the `./config` directory
|
||||
|
||||
* **SECURITY**: Generate and set a secure Flask secret key:
|
||||
```bash
|
||||
# Generate a secure random secret key
|
||||
@@ -99,7 +121,8 @@ server_name=srvads.poudlard.lan
|
||||
remote_dir=/var/lib/samba/
|
||||
compression=True
|
||||
;exclude_list="/proc/**","/sys/**","/dev/**"
|
||||
private_key=/config_ssh/id_rsa
|
||||
# Use Ed25519 key (recommended), or ECDSA/RSA (DSA not supported)
|
||||
private_key=/config_ssh/id_ed25519
|
||||
ssh_port = 22
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user