SentriFlow
Validate network configurations against security best practices and compliance requirements.
SentriFlow is a TypeScript-based framework that parses network device configurations and evaluates them against a comprehensive library of security rules. Catch misconfigurations before they reach production.
Get Started in 5 Minutes
Install the CLI and validate your first network configuration file.
Why SentriFlow?
- 59 Security Rules - Pre-built rules covering authentication, encryption, access control, logging, and hardening for all major vendors
- Multi-Vendor Support - Parse and validate configurations from Cisco IOS/NX-OS, Juniper Junos, Arista EOS, Palo Alto PAN-OS, and more
- CI/CD Integration - SARIF output for GitHub Advanced Security, GitLab SAST, Azure DevOps, and Jenkins
- Extensible Engine - Write custom rules in JSON or TypeScript with full access to the parsed configuration AST
- Zero Runtime Dependencies - Core engine has no external dependencies for maximum portability
Quick Example
Install the CLI and validate your first configuration:
npm
bash npm install -g @sentriflow/cli sentriflow router.conf[HIGH] NET-AUTH-001: SSH timeout not configured
Line 45: ip ssh timeout
[MEDIUM] NET-LOG-003: Logging buffer size below recommended minimum
Line 12: logging buffered 4096
Found 2 issues (1 high, 1 medium) in router.confExplore the Documentation
Install SentriFlow and configure your environment
Getting StartedComplete command-line interface documentation
CLI ReferenceBrowse all 57 built-in security rules
Rule CatalogReal-time validation in your editor
VS Code ExtensionCI/CD Integration
Automate network configuration validation in your deployment pipelines. SentriFlow outputs SARIF (Static Analysis Results Interchange Format) for native integration with security dashboards.
SARIF upload to GitHub Advanced Security
GitHub ActionsSAST integration for Security Dashboard
GitLab CIAzure Pipelines with SARIF publishing
Azure DevOpsWarnings NG plugin for result visualization
JenkinsExtend SentriFlow
Supported Platforms
SentriFlow supports configuration files from major network equipment vendors:
| Vendor | Platforms |
|---|---|
| Cisco | IOS, IOS-XE, NX-OS, ASA |
| Juniper | Junos |
| Arista | EOS |
| Palo Alto | PAN-OS |
| Aruba | AOS-CX, AOS-Switch, WLC |
| Fortinet | FortiGate |
| VyOS | VyOS |
| MikroTik | RouterOS |
| Extreme | EXOS, VOSS |
| Huawei | VRP |
| Nokia | SR OS |
| Cumulus | Linux |
How It Works
Parse Configuration
SentriFlow parses your network configuration into a structured AST (Abstract Syntax Tree) that represents commands, sections, and parameters.
Evaluate Rules
The rule engine evaluates each rule against the parsed configuration. Rules use selectors for efficient prefix matching and can access the full AST for complex checks.
Generate Report
Results are output in your preferred format: human-readable text, JSON for automation, or SARIF for security tooling integration.
Example: Detecting Weak SSH Configuration
import { defineRule } from '@sentriflow/core';
export default defineRule({
id: 'SSH-WEAK-CIPHER',
name: 'Weak SSH Ciphers Detected',
severity: 'high',
selector: 'ip ssh',
check(node, context) {
const weakCiphers = ['aes128-cbc', '3des-cbc', 'arcfour'];
const cipherConfig = context.findChild(node, 'cipher');
if (cipherConfig) {
const configured = cipherConfig.params.join(' ');
for (const weak of weakCiphers) {
if (configured.includes(weak)) {
return {
passed: false,
message: `Weak cipher "${weak}" is enabled`,
line: cipherConfig.line,
};
}
}
}
return { passed: true };
},
});Get Help
- Issues: Report bugs or request features on GitHub
- Discussions: Ask questions in GitHub Discussions
- API Reference: Explore the Parser API, Rule Engine API, and ConfigNode API