{{ $error }}
@if($firewallEnabled)
Active - Your VM is protected
@else
Control default traffic behavior
Per-device firewall control
How default policies control your network traffic
Controls what happens to traffic coming INTO your VM when it doesn't match any explicit firewall rule.
Controls what happens to traffic going OUT of your VM when it doesn't match any explicit firewall rule.
To create a strict whitelist (only allow specific traffic):
IP Filter: Validates that source/destination IP addresses in packets match the VM's assigned IPs. Helps prevent IP spoofing.
MAC Filter: Validates that MAC addresses match the VM's network adapters. Provides additional layer of security.
| Order | Pos | Action | Direction | Source | Destination | Protocol | Ports | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|
|
@if($index > 0)
@else
@endif
@if($index < count($rules) - 1)
@else
@endif
|
{{ $rule['pos'] ?? '-' }} | @php $actionClass = match($rule['action'] ?? '') { 'ACCEPT' => 'bg-success/20 text-success', 'REJECT' => 'bg-warning/20 text-warning', 'DROP' => 'bg-error/20 text-error', default => 'bg-base/20 text-base/60' }; @endphp {{ $rule['action'] ?? '-' }} | {{ strtoupper($rule['type'] ?? 'IN') }} |
{{ $rule['source'] ?? '-' }}
@php $ruleSourceIP = $rule['source'] ?? ''; @endphp
@if($ruleSourceIP && $ruleSourceIP !== '-' && $this->checkIsPublicIP($ruleSourceIP))
{{-- IP Location Modal (same as logs) --}}
@endif
|
{{ $rule['dest'] ?? '-' }}
@php $ruleDestIP = $rule['dest'] ?? ''; @endphp
@if($ruleDestIP && $ruleDestIP !== '-' && $this->checkIsPublicIP($ruleDestIP))
{{-- IP Location Modal (same structure) --}}
@endif
|
{{ strtoupper($rule['proto'] ?? ($rule['macro'] ?? 'ANY')) }} | {{ $rule['dport'] ?? $rule['sport'] ?? '-' }} | @if(isset($rule['enable']) && $rule['enable'] == 0) Disabled @else Enabled @endif |
|
Create your first rule to control network traffic
Create named references to IP addresses or CIDR ranges
Create aliases to simplify rule management
Group multiple IPs/CIDRs for easier rule management
No IP Sets created yet
No members in this IPSet
Select an IP Set to view its members
Showing the latest logs first (most recent at top)
@if($lastLogRefresh) • Last updated: {{ $lastLogRefresh }} @endif • Auto-refreshes every 30s{{ $logError }}
Loading firewall logs...
| Time | Action | Source | Destination | Protocol | Src Port | Dest Port | Analysis |
|---|---|---|---|---|---|---|---|
| @if(isset($log['timestamp_iso']) && $log['timestamp_iso'] !== '-') @else {{ $log['timestamp_display'] ?? $log['timestamp'] ?? '-' }} @endif | {{ $log['action'] ?? '-' }} |
{{ $log['source'] ?? '-' }}
@php $sourceIP = $log['source'] ?? ''; @endphp
@if($sourceIP && $sourceIP !== '-' && $this->checkIsPublicIP($sourceIP))
{{-- IP Location Modal --}}
@endif
|
{{ $log['destination'] ?? '-' }}
@php $destIP = $log['destination'] ?? ''; @endphp
@if($destIP && $destIP !== '-' && $this->checkIsPublicIP($destIP))
{{-- IP Location Modal --}}
@endif
|
{{ $log['protocol'] ?? '-' }} | {{ $log['source_port'] ?? '-' }} | {{ $log['destination_port'] ?? '-' }} |
@php
$sourceIP = $log['source'] ?? '';
$destIP = $log['destination'] ?? '';
$sourcePort = $log['source_port'] ?? '';
$destPort = $log['destination_port'] ?? '';
$protocol = $log['protocol'] ?? '';
@endphp
@if($coreRouterConfigured && $sourceIP && $sourceIP !== '-')
{{-- Network Analysis Modal --}}
@endif
|
Logs will appear here when the firewall blocks or allows traffic
Save and reuse firewall configurations across your VPS instances
| Configuration Name | Rules | Policies | Created | Actions |
|---|---|---|---|---|
|
|
{{ is_array($config['firewall_rules']) ? count($config['firewall_rules']) : 0 }} rules |
IN: {{ $config['incoming_policy'] }}
OUT: {{ $config['outgoing_policy'] }}
|
{{ \Carbon\Carbon::parse($config['created_at'])->format('M d, Y H:i') }} |
|
Save your current firewall configuration to reuse it later or apply it to other VPS instances
Your virtual machine is currently unprotected. Enable the firewall above to secure your network traffic with customizable rules.
Define rules to allow or block specific connections
Track and log all firewall events in real-time
Configure default behavior for incoming and outgoing traffic
Can use alias names or leave empty for any source
Are you sure you want to delete this rule? This action cannot be undone.
Delete alias "{{ $deletingAliasName }}"?
This may affect firewall rules using this alias.
After creating the IPSet, you can add IP addresses and CIDR ranges to it.
Delete IPSet "{{ $deletingIPSetName }}"?
All members will be removed and rules using this IPSet may be affected.
Remove "{{ $deletingMemberCidr }}" from {{ $selectedIPSetName }}?
Save your current firewall rules and policies as a reusable configuration
{{ $message }}
@enderrorCreated on {{ $viewingConfiguration->created_at->format('M d, Y H:i') }}
The following rules may not be compatible with this VPS:
| # | Action | Direction | Source | Destination | Protocol | Port | Status |
|---|---|---|---|---|---|---|---|
| {{ $index + 1 }} | {{ $rule['action'] ?? 'ACCEPT' }} | {{ strtoupper($rule['type'] ?? '-') }} | {{ $rule['source'] ?? 'any' }} | {{ $rule['dest'] ?? 'any' }} | {{ $rule['proto'] ?? '-' }} | {{ $rule['dport'] ?? '-' }} | @if($hasIssue) Incompatible @elseif(isset($rule['enable']) && $rule['enable'] == 0) Disabled @else Enabled @endif |
No rules in this configuration
@endifApply "{{ $applyingConfiguration->configuration_name }}" to this VPS
Warning
This will replace all existing firewall rules with the rules from this configuration. This action cannot be undone.
Compatibility Notice
{{ count($applyCompatibilityWarnings) }} rule(s) in this configuration are not fully compatible with this VPS and will be disabled.
Rules
{{ count($applyingConfiguration->firewall_rules) }}
IN Policy
OUT Policy
Are you sure you want to delete this saved configuration? This action cannot be undone.
Apply the current firewall configuration to all your other VPS instances.
This will replace the firewall configuration on all your other servers. Existing rules will be deleted and replaced with the current configuration.
No other servers found to apply the configuration to.
Enter a new name for this configuration
{{ $message }}
@enderror