Add security configuration documentation
- Comprehensive security configuration guide for nanobot - Production deployment security checklist - Channel access control configuration - API key and credential management - Workspace and file system security settings
This commit is contained in:
parent
c46b0a7e37
commit
9c9c4e3ebf
290
SECURITY_CONFIGURATION.md
Normal file
290
SECURITY_CONFIGURATION.md
Normal file
@ -0,0 +1,290 @@
|
||||
# Nanobot Security Configuration Guide
|
||||
|
||||
This guide provides step-by-step instructions for securing your nanobot installation.
|
||||
|
||||
## Quick Security Setup
|
||||
|
||||
### 1. Secure Configuration File
|
||||
|
||||
```bash
|
||||
# Set proper permissions on config file
|
||||
chmod 600 ~/.nanobot/config.json
|
||||
|
||||
# Set proper permissions on nanobot directory
|
||||
chmod 700 ~/.nanobot
|
||||
```
|
||||
|
||||
### 2. Configure Channel Access Control
|
||||
|
||||
**CRITICAL**: Empty `allowFrom` lists allow ALL users. Always configure this in production!
|
||||
|
||||
#### Telegram Example
|
||||
```json
|
||||
{
|
||||
"channels": {
|
||||
"telegram": {
|
||||
"enabled": true,
|
||||
"token": "YOUR_BOT_TOKEN",
|
||||
"allowFrom": ["123456789", "987654321"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
To find your Telegram user ID:
|
||||
1. Message `@userinfobot` on Telegram
|
||||
2. Copy your user ID
|
||||
3. Add it to the `allowFrom` list
|
||||
|
||||
#### WhatsApp Example
|
||||
```json
|
||||
{
|
||||
"channels": {
|
||||
"whatsapp": {
|
||||
"enabled": true,
|
||||
"allowFrom": ["+1234567890", "+0987654321"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Use full phone numbers with country code (e.g., `+1` for US).
|
||||
|
||||
#### Email Example
|
||||
```json
|
||||
{
|
||||
"channels": {
|
||||
"email": {
|
||||
"enabled": true,
|
||||
"allowFrom": ["user@example.com", "admin@example.com"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Enable Workspace Restrictions
|
||||
|
||||
Restrict file operations to a specific directory:
|
||||
|
||||
```json
|
||||
{
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"restrictToWorkspace": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This ensures nanobot can only access files within `~/.nanobot/workspace`.
|
||||
|
||||
### 4. Run as Non-Root User
|
||||
|
||||
**NEVER run nanobot as root!**
|
||||
|
||||
```bash
|
||||
# Create dedicated user
|
||||
sudo useradd -m -s /bin/bash nanobot
|
||||
|
||||
# Switch to nanobot user
|
||||
sudo -u nanobot bash
|
||||
|
||||
# Run nanobot
|
||||
python3 -m nanobot.cli.commands agent -m "hello"
|
||||
```
|
||||
|
||||
### 5. Configure Command Timeouts
|
||||
|
||||
Limit command execution time:
|
||||
|
||||
```json
|
||||
{
|
||||
"agents": {
|
||||
"defaults": {
|
||||
"execConfig": {
|
||||
"timeout": 30
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Default is 60 seconds. Reduce for stricter security.
|
||||
|
||||
## Advanced Security Configuration
|
||||
|
||||
### 1. Custom Command Blocking
|
||||
|
||||
You can add custom blocked command patterns by modifying the ExecTool initialization, but this requires code changes. The default patterns block:
|
||||
- `rm -rf`, `rm -r`, `rm -f`
|
||||
- `format`, `mkfs.*`
|
||||
- `dd if=`
|
||||
- `shutdown`, `reboot`, `poweroff`
|
||||
- Fork bombs
|
||||
|
||||
### 2. Network Security
|
||||
|
||||
#### Restrict Outbound Connections
|
||||
|
||||
Use a firewall to restrict what nanobot can access:
|
||||
|
||||
```bash
|
||||
# Example: Only allow HTTPS to specific domains
|
||||
sudo ufw allow out 443/tcp
|
||||
sudo ufw deny out 80/tcp # Block HTTP
|
||||
```
|
||||
|
||||
#### WhatsApp Bridge Security
|
||||
|
||||
The WhatsApp bridge binds to `127.0.0.1:3001` (localhost only) by default. For additional security:
|
||||
|
||||
```json
|
||||
{
|
||||
"channels": {
|
||||
"whatsapp": {
|
||||
"enabled": true,
|
||||
"bridgeToken": "your-secret-token-here"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Set a `bridgeToken` to enable shared-secret authentication between Python and Node.js components.
|
||||
|
||||
### 3. Log Monitoring
|
||||
|
||||
Set up log monitoring to detect security issues:
|
||||
|
||||
```bash
|
||||
# Monitor access denials
|
||||
tail -f ~/.nanobot/logs/nanobot.log | grep "Access denied"
|
||||
|
||||
# Monitor blocked commands
|
||||
tail -f ~/.nanobot/logs/nanobot.log | grep "blocked by safety guard"
|
||||
|
||||
# Monitor all tool executions
|
||||
tail -f ~/.nanobot/logs/nanobot.log | grep "ExecTool:"
|
||||
```
|
||||
|
||||
### 4. Regular Security Audits
|
||||
|
||||
#### Check Dependencies
|
||||
|
||||
```bash
|
||||
# Python dependencies
|
||||
pip install pip-audit
|
||||
pip-audit
|
||||
|
||||
# Node.js dependencies (for WhatsApp bridge)
|
||||
cd bridge
|
||||
npm audit
|
||||
npm audit fix
|
||||
```
|
||||
|
||||
#### Review Logs
|
||||
|
||||
```bash
|
||||
# Check for suspicious activity
|
||||
grep -i "error\|denied\|blocked" ~/.nanobot/logs/nanobot.log | tail -100
|
||||
|
||||
# Check file operations
|
||||
grep "write_file\|edit_file" ~/.nanobot/logs/nanobot.log | tail -100
|
||||
```
|
||||
|
||||
### 5. API Key Rotation
|
||||
|
||||
Rotate API keys regularly:
|
||||
|
||||
1. Generate new API keys from your provider
|
||||
2. Update `~/.nanobot/config.json`
|
||||
3. Restart nanobot
|
||||
4. Revoke old keys after confirming new ones work
|
||||
|
||||
### 6. Environment Isolation
|
||||
|
||||
Run nanobot in a container or VM for better isolation:
|
||||
|
||||
```bash
|
||||
# Using Docker (if Dockerfile exists)
|
||||
docker build -t nanobot .
|
||||
docker run --rm -it \
|
||||
-v ~/.nanobot:/root/.nanobot \
|
||||
-v ~/.nanobot/workspace:/root/.nanobot/workspace \
|
||||
nanobot
|
||||
```
|
||||
|
||||
## Security Checklist
|
||||
|
||||
Before deploying nanobot in production:
|
||||
|
||||
- [ ] Config file permissions set to `0600`
|
||||
- [ ] Nanobot directory permissions set to `700`
|
||||
- [ ] All channels have `allowFrom` lists configured
|
||||
- [ ] Running as non-root user
|
||||
- [ ] `restrictToWorkspace` enabled
|
||||
- [ ] Command timeout configured
|
||||
- [ ] API keys stored securely (not in code)
|
||||
- [ ] Logs monitored for security events
|
||||
- [ ] Dependencies updated and audited
|
||||
- [ ] Firewall rules configured (if needed)
|
||||
- [ ] Backup and disaster recovery plan in place
|
||||
|
||||
## What Nanobot Cannot Do (Built-in Protections)
|
||||
|
||||
Nanobot has built-in protections that prevent:
|
||||
|
||||
1. **Destructive Commands**: `rm -rf /`, `format`, `mkfs`, `dd`, `shutdown`, etc.
|
||||
2. **Path Traversal**: `../` and `..\\` are blocked when workspace restrictions are enabled
|
||||
3. **System File Access**: When restricted, cannot access files outside workspace
|
||||
4. **Unlimited Execution**: Commands timeout after configured limit (default 60s)
|
||||
5. **Unlimited Output**: Command output truncated at 10KB
|
||||
6. **Unauthorized Access**: Channels check `allowFrom` lists before processing messages
|
||||
|
||||
## Incident Response
|
||||
|
||||
If you suspect a security breach:
|
||||
|
||||
1. **Immediately revoke compromised API keys**
|
||||
```bash
|
||||
# Update config.json with new keys
|
||||
nano ~/.nanobot/config.json
|
||||
```
|
||||
|
||||
2. **Review logs for unauthorized access**
|
||||
```bash
|
||||
grep "Access denied" ~/.nanobot/logs/nanobot.log
|
||||
```
|
||||
|
||||
3. **Check for unexpected file modifications**
|
||||
```bash
|
||||
find ~/.nanobot/workspace -type f -mtime -1 -ls
|
||||
```
|
||||
|
||||
4. **Rotate all credentials**
|
||||
- Update API keys
|
||||
- Update channel tokens
|
||||
- Update bridge tokens (if using WhatsApp)
|
||||
|
||||
5. **Update to latest version**
|
||||
```bash
|
||||
pip install --upgrade nanobot-ai
|
||||
```
|
||||
|
||||
6. **Report the incident**
|
||||
- Email: xubinrencs@gmail.com
|
||||
- Include: Description, steps to reproduce, potential impact
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [SECURITY.md](SECURITY.md) - Full security policy and best practices
|
||||
- [SETUP_GUIDE.md](SETUP_GUIDE.md) - Setup and configuration guide
|
||||
- [README.md](README.md) - General documentation
|
||||
|
||||
## Questions?
|
||||
|
||||
If you have security concerns or questions:
|
||||
- Review [SECURITY.md](SECURITY.md)
|
||||
- Check nanobot logs for errors
|
||||
- Contact maintainers: xubinrencs@gmail.com
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user