OPNSense

opnsense.org
OPNSense

Enterprise firewall and router for protecting networks, built on the FreeBSD system.

Open Source

OPNSense Source Code

Author

opnsense

Description

OPNsense GUI, API and systems backend

#api#bsd#captive-portal#firewall#gui#hacktoberfest#ips#proxy#routing#shaping#vpn

Homepage

https://opnsense.org/

License

BSD-2-Clause

Created

13 Dec 14

Last Updated

12 Jul 26

Latest version

26.7.r2

Primary Language

PHP

Size

101,349 KB

Stars

4,515

Forks

966

Watchers

4,515

Language Usage

Language Usage

Star History

Star History

Recent Commits

  • Franco Fichtner (12 Jul 26)

    firewall: invalidate rule stats cache for legacy rules page Since 5baba39831dff added the TTL but the page should fetch per inspect push this restores the old behaviour. We could move the controller to the legacy plugin so that it is not forgotten on final removal but that's not for now.

  • Franco Fichtner (12 Jul 26)

    src: sweep

  • Monviech (11 Jul 26)

    Firewall: Rules: Adapt getAdvancedIds() to the sectioned form structure introduced in 3d9cccfe (#10521)

  • Konstantinos Spartalis (11 Jul 26)

    statistics: when interfaces disabled

  • Franco Fichtner (10 Jul 26)

    interfaces: explicitly make explicit loopback network an actual loopback network PR: https://forum.opnsense.org/index.php?topic=52341.0

  • Ad Schellevis (10 Jul 26)

    configd/templates - swap "strict" logic as it was reversed

  • Monviech (09 Jul 26)

    Services: Kea DHCPv4/6: Switch custom DHCP option config generation to libdhcp_flex_option.so (#10514) * Services: Kea DHCPv4: emit custom DHCPv4 options via flex-option hook Route custom DHCPv4 option rows through libdhcp_flex_option instead of regular option-data. The custom option framework (KeaOptionDataField) already serializes values to final wire-format hex, but Kea's native option-data path still applies built-in option definitions and may reinterpret or drop payloads for standard or container options (e.g. 43 and 125). Use flex-option supersede expressions to inject the serialized bytes directly during response construction. Preserve the existing scoping model by translating subnet scope to an additional class, and reservation scope to either MAC address or client-id matching. Existing option match rules are kept as client-class membership checks inside the same expression. Built-in option_data fields remain unchanged and continue to use native Kea option-data generation. * Services: Kea DHCPv6: Add same flex option hook library support as in DHCPv4, with the limitation that it reservations need to be DUID based here.

  • Franco Fichtner (09 Jul 26)

    firewall: revisit previous Well, apply needs to be pushed to render interfaces. Make sure that we render before reloading filter which actually calls ifgroup_setup() to rename groups.

  • Franco Fichtner (09 Jul 26)

    Revert "firewall: properly render groups on apply" This reverts commit 6183fbe205f7df44fd249c8c19b554b871e4698a.

  • Franco Fichtner (09 Jul 26)

    firewall: adjust alias rename according to address_to_pconfig(); closes #10024 Looking at stable/25.7 where all three components where still in the tree they all use the function which could potentially write 'address'. It's better than not having those and strive for consistency although in practice this will die with the removal of legacy rules support.

  • Franco Fichtner (09 Jul 26)

    firewall: fix one-to-one part of #10024

  • Franco Fichtner (09 Jul 26)

    firewall: properly render groups on apply

  • Stephan de Wit (09 Jul 26)

    dashboard: include interfaces widget in dashboard default. Closes https://github.com/opnsense/core/issues/10456 This is the only one that makes sense from a functional perspective. While here, adjust the resize/style logic a bit such that updates are also propagated on first load, which makes sure the interfaces table renders the correct amount of columns to prevent wasted space.

  • Franco Fichtner (09 Jul 26)

    firewall: avoid emitting reply-to on block rules as well (#10513) Remove reply-to the same way that 20070de did it for route-to.

  • Monviech (09 Jul 26)

    git: create AGENTS.md with agent guidelines (#10507) Added guidelines for coding agents working on the OPNsense core repository, including mission, core principles, architecture, code style, security expectations, and review checklist.

  • Franco Fichtner (09 Jul 26)

    github: add AI disclosure to issue templates As the growing conclusions on bug reports look to be AI suggestions that can make oblivious claims according to how the user steeres the scope to the core repo it's better to (try to) make this visible.

  • Franco Fichtner (08 Jul 26)

    firmware: cleansing using output_cmd is futile Move the code back to where it was in early 26.1. A number of regressions could have been avoided. The last straw was buffering of "." characters for fetching. The read-guard is still effective. As it reads the file it does not need to run unbuffered. GUI reads are still properly filtered.

  • Ad Schellevis (08 Jul 26)

    Firewall: NAT: Source NAT - constraint getAction to only general page and align setAction to do the same, closes https://github.com/opnsense/core/issues/10502

  • Stephan de Wit (08 Jul 26)

    captive portal: adjust accounting interval to Acct-Interim-Interval (#10474) This changes the default interval to 600, which is the recommended value according to RFC 2869.

  • Franco Fichtner (08 Jul 26)

    monit: fix mail-format and poll-time validation; closes #10498

  • Franco Fichtner (07 Jul 26)

    contrib: Non-canonical cast (boolean) is deprecated, use the (bool) cast instead

  • Franco Fichtner (07 Jul 26)

    src: two whitespace changes

  • Franco Fichtner (07 Jul 26)

    wizard: annotate that gateways are cleared to prevent lingering misconfiguration #8976 The old code tried to update always based on the WAN_GW name, but there could be associated side effects, see old code for comparison: https://github.com/opnsense/core/blob/stable/25.1/src/wizard/system.xml#L603-L627

  • Franco Fichtner (07 Jul 26)

    firmware: allow upgrade to 26.7-RC1

  • Ad Schellevis (07 Jul 26)

    Services: Unbound DNS: Overrides - missing NetMaskAllowed=N on override address, closes https://github.com/opnsense/core/issues/10499

  • Ad Schellevis (06 Jul 26)

    mvc: add file type to forms, including required javascript initialisation code. File type input serializes offered payload in base64 and returns both the field and the filename of the offered file. This easy to use wrapper can be used to upload files of reasonable size (a couple of megabytes max) via either a select file or drag and drop option. Collected output exists of the offered <id> combined with a field named <id>__name which contains the offered filename

  • Franco Fichtner (06 Jul 26)

    firewall: fix reference when plugin not installed #9947 Just hint at the migration assistant. :)

  • Franco Fichtner (06 Jul 26)

    ui: fix menu registration not setting "active" It's a bit complicated: we need to ignore all invisible pages. The menu registration isn't really a value that does something but it successfully hides the registration from the menu code rendering the active flag.

  • Franco Fichtner (06 Jul 26)

    system: change comment to existing page

  • Monviech (06 Jul 26)

    Firewall: Group: change link to new firewall rules (#10497)

OPNSense Security

4.5/10

Repo Security Summary

Updated 29 Jun 26

  • Packaging N/A
  • Code-Review 0/10
  • Maintained 10/10
  • Security-Policy 10/10
  • Dangerous-Workflow N/A
  • Token-Permissions N/A
  • CII-Best-Practices 0/10
  • Binary-Artifacts 10/10
  • License 10/10
  • Signed-Releases N/A
  • Pinned-Dependencies N/A
  • Branch-Protection 0/10
  • Fuzzing 0/10
  • SAST 0/10

Security Advisories (20)

  • high Patched CVSS 7.1

    GHSA-p9pr-782r-w2xw Direct comma-separated user privileges bypass OPNsense MVC read-only write protection

  • high Patched CVSS 8.1

    GHSA-2v2x-m4j7-76pv Log Forgery via Login Username CRLF in WebGUI Authentication → Pf Table IP Blocking

  • medium Patched CVSS 5.2

    CVE-2026-58394 Stored XSS in Administration Settings via Certificate Description

  • medium Patched CVSS 4.3

    CVE-2026-58395 XPath injection in MVC safe-delete

  • medium Patched CVSS 5.4

    CVE-2026-58392 Stored XSS in Services: NTP GPS

  • medium Patched CVSS 5.4

    CVE-2026-58391 Stored XSS in Firewall Rules/NAT pages via a HTML-attribute breakout

  • critical Patched CVSS 9.9

    CVE-2026-57155 Root RCE via Arbitrary File Write in GeoIP Alias Importer

  • high Patched CVSS 8

    CVE-2026-58390 Stored XSS to root RCE via OpenVPN client common_name in status views

  • high Patched CVSS 8.1

    GHSA-m4m3-v627-wgc2 Stored Cross-Site Scripting (XSS) via TrafficShaper description in legacy PHP firewall rules page

  • medium Patched CVSS 5.9

    CVE-2026-58393 OpenVPN Client Specific Override common_name allows path traversal in generated CSO files

  • high Patched CVSS 8.1

    GHSA-33q4-wcv7-r8fr Trust certificate and CA refids allow path traversal during IPsec file generation

  • high Patched CVSS 8.1

    CVE-2026-57154 Configuration line injection via multiple GUI text fields

  • high Patched CVSS 7.1

    CVE-2026-53582 XPATH Injection can disclose any secret in config.xml

  • critical Patched CVSS 9

    CVE-2026-53581 ntp: write path traversal

  • critical Patched CVSS 9.1

    CVE-2026-44194 RCE on user managment

  • critical Patched

    CVE-2026-45158 Command Injection via Attacker-Controlled DHCP Config

  • critical Patched CVSS 9.1

    CVE-2026-44193 RCE via XMLRPC endpoint using `opnsense.restore_config_section` method

  • medium Patched CVSS 5.3

    CVE-2026-44195 Authentication lockout bypass

  • high Patched CVSS 8.2

    CVE-2026-34578 LDAP Injection via Unsanitized Username in Authentication

  • medium Patched CVSS 6.3

    CVE-2026-30868 Cross-Site Request Forgery (CSRF) in opnsense/core

OPNSense Website

Website

OPNsense® is an open source, feature rich firewall and routing platform, offering cutting-edge network protection. - OPNsense

We’ve made digital security accessible to everyone. With our free OPNsense® platform, you get all the features of expensive commercial firewalls and more. Enjoy open and verifiable sources in a product developed with and for a large user community.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address 89.149.225.137
  • Location Amsterdam, Noord-Holland, Netherlands (Kingdom of the), EU
  • ISP Leaseweb Netherlands B.V.
  • ASN AS60781

Associated Countries

  • US US
  • NL NL

Safety Score

Website marked as safe

100%

Blacklist Check

opnsense.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

OPNSense Reviews

More Firewalls

About the Data: OPNSense

Change History

  • Amended (github) by @lissy93 #608
  • Renamed previously: OpenSense from Networking › Firewalls by @HammyHavoc #202

API

You can access OPNSense's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/opnsense

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share OPNSense

Help your friends compare Firewalls, and pick privacy-respecting software and services.
Share OPNSense and Awesome Privacy with your network!

View Firewalls (14)