# Network Scanner - Getting Started Checklist ## ✅ Pre-Installation Checklist - [ ] Linux system available - [ ] Python 3.8 or higher installed - [ ] Network access to devices you want to scan - [ ] Authorization to scan your network - [ ] SSH access to network devices (optional but recommended) ## ✅ Initial Setup ### 1. Verify System ```bash cd /home/rwiegand/Nextcloud/entwicklung/Werkzeuge/netzwerk_diagramm_scanner ./test_system.py ``` **Expected outcome:** All tests should pass ✓ ### 2. Configure SSH Access (Recommended) - [ ] **Generate SSH key** (if you don't have one): ```bash ssh-keygen -t ed25519 -f ~/.ssh/network_scanner -N "" ``` - [ ] **Copy SSH key to your devices**: ```bash # For each device you want to scan ssh-copy-id -i ~/.ssh/network_scanner.pub root@ # Example for pfSense ssh-copy-id -i ~/.ssh/network_scanner.pub root@192.168.1.1 ``` - [ ] **Test SSH connection**: ```bash ssh -i ~/.ssh/network_scanner root@ "echo Connection OK" ``` ### 3. Create Configuration - [ ] **Copy example config**: ```bash cp config.json.example config.json ``` - [ ] **Edit config.json** with your details: - [ ] Update `ssh_user` (usually "root" or your admin user) - [ ] Update `ssh_key_path` (e.g., `/home/username/.ssh/network_scanner`) - [ ] Add your network ranges to `additional_networks` - [ ] Add your pfSense/router IPs to `special_devices` **Example config.json:** ```json { "ssh_user": "root", "ssh_key_path": "/home/rwiegand/.ssh/network_scanner", "timeout": 2, "additional_networks": [ "192.168.1.0/24", "10.0.0.0/24", "10.8.0.0/24" ], "special_devices": { "192.168.1.1": { "name": "pfSense Main", "type": "firewall", "os": "pfSense" } } } ``` ## ✅ First Scan ### Option A: Interactive Mode - [ ] **Run quickstart**: ```bash ./quickstart.sh ``` Choose option 1 for a quick test scan. ### Option B: Direct Scan - [ ] **Run integrated scanner**: ```bash ./integrated_scanner.py -v -o first_scan.json ``` - [ ] **Check output**: ```bash cat first_scan.json | jq '.segments | length' ``` ### Option C: With SVG Diagram - [ ] **Run with diagram generation**: ```bash ./integrated_scanner.py -v -o scan.json --generate-svg ``` - [ ] **Open diagram**: ```bash firefox scan.svg # or xdg-open scan.svg ``` ## ✅ Verification Steps After your first scan: - [ ] **Check segment count**: ```bash cat first_scan.json | jq '.segments | length' ``` Expected: At least 1 network segment - [ ] **Check device count**: ```bash cat first_scan.json | jq '[.segments[].devices[]] | length' ``` Expected: Number of devices in your network - [ ] **List found devices**: ```bash cat first_scan.json | jq -r '.segments[].devices[].ip' ``` - [ ] **Check pfSense detection** (if applicable): ```bash cat first_scan.json | jq '.segments[].devices[] | select(.device_type=="firewall")' ``` ## ✅ Advanced Configuration ### For pfSense Users: - [ ] **Test pfSense scanner directly**: ```bash ./pfsense_scanner.py -u root -k ~/.ssh/network_scanner -o pfsense_test.json ``` - [ ] **Verify pfSense data**: ```bash # Check interfaces cat pfsense_test.json | jq '.interfaces' # Check VPN cat pfsense_test.json | jq '.vpn' # Check routes cat pfsense_test.json | jq '.routes | length' ``` ### For Multiple Networks: - [ ] **List all networks**: ```bash ip route show ``` - [ ] **Add each network to config.json**: - Local network (e.g., 192.168.1.0/24) - Guest network (e.g., 192.168.2.0/24) - VPN networks (e.g., 10.8.0.0/24) - WireGuard networks (e.g., 10.0.0.0/24) ### For VPN Networks: - [ ] **Check WireGuard**: ```bash # On pfSense or WireGuard server wg show ``` - [ ] **Add VPN networks** to config.json additional_networks - [ ] **Verify VPN is marked** in scan results: ```bash cat scan.json | jq '.segments[] | select(.is_vpn==true)' ``` ## ✅ Common Issues & Solutions ### Issue: No devices found - [ ] Check network connectivity: `ping ` - [ ] Verify ICMP is not blocked - [ ] Try with verbose mode: `-v` - [ ] Check if you're on the correct network ### Issue: SSH connection failures - [ ] Verify SSH service is running on target device - [ ] Check SSH key permissions: `chmod 600 ~/.ssh/network_scanner` - [ ] Test manual connection: `ssh -i ~/.ssh/network_scanner root@` - [ ] Verify key is in authorized_keys on target ### Issue: pfSense not detected - [ ] Verify pfSense SSH is enabled - [ ] Check pfSense is in special_devices config - [ ] Test direct pfSense scan: `./pfsense_scanner.py ` - [ ] Check pfSense firewall rules allow SSH from your IP ### Issue: Scan too slow - [ ] Reduce timeout in config.json - [ ] Limit network ranges in additional_networks - [ ] Increase max_workers (if you have powerful system) ## ✅ Next Steps Once basic scanning works: ### Documentation - [ ] Run full scan: `./integrated_scanner.py -o full_network.json --generate-svg` - [ ] Review SVG diagram - [ ] Generate markdown docs (see EXAMPLES.sh) - [ ] Save baseline scan for future comparison ### Automation - [ ] Set up scheduled scans (cron) - [ ] Create backup script for scan results - [ ] Set up alerts for network changes ### Customization - [ ] Customize device type detection - [ ] Adjust SVG styling and colors - [ ] Add custom port scanning - [ ] Create custom reports ### Integration - [ ] Export data to CSV - [ ] Integrate with monitoring system - [ ] Create dashboards - [ ] Set up change detection ## ✅ Quick Reference ### Most Common Commands ```bash # Quick scan ./network_scanner.py -v # Full scan with diagram ./integrated_scanner.py --generate-svg # Scan specific pfSense ./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa # Generate diagram from existing scan ./svg_generator.py scan.json -o diagram.svg # Interactive mode ./quickstart.sh # System test ./test_system.py ``` ### Useful jq Queries ```bash # List all IPs cat scan.json | jq -r '.segments[].devices[].ip' # List SSH-accessible devices cat scan.json | jq -r '.segments[].devices[] | select(.ssh_accessible==true) | .ip' # Count devices per segment cat scan.json | jq '.segments[] | "\(.name): \(.devices | length) devices"' # List routers and firewalls cat scan.json | jq -r '.segments[].devices[] | select(.device_type=="router" or .device_type=="firewall") | "\(.ip) - \(.hostname)"' ``` ## ✅ Getting Help - [ ] Read README.md for detailed documentation - [ ] Check EXAMPLES.sh for usage scenarios - [ ] Review PROJECT_SUMMARY.md for overview - [ ] Run `./quickstart.sh` for interactive help ## 🎉 Success Criteria You're ready to use the scanner when: - ✅ All system tests pass - ✅ SSH keys are set up and working - ✅ config.json is properly configured - ✅ First scan completes successfully - ✅ Devices are detected in your network - ✅ SVG diagram is generated - ✅ pfSense devices are properly detected (if applicable) --- **Need help?** Check the troubleshooting section above or review the documentation files. **Ready to go?** Run `./quickstart.sh` or `./integrated_scanner.py --generate-svg -v`