All Projects → diekmann → Iptables_semantics

diekmann / Iptables_semantics

Licence: bsd-2-clause
Verified iptables Firewall Ruleset Analysis

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Iptables semantics

Ansible Role Firewall
A role to manage iptables rules which doesn't suck.
Stars: ✭ 81 (-4.71%)
Mutual labels:  ipv6, ipv4, iptables
Vedetta
OpenBSD Router Boilerplate
Stars: ✭ 260 (+205.88%)
Mutual labels:  ipv6, ipv4, firewall
ip-finder-cli
The official command line client for IPFinder
Stars: ✭ 11 (-87.06%)
Mutual labels:  ipv6, firewall, ipv4
Firehol
A firewall for humans...
Stars: ✭ 1,215 (+1329.41%)
Mutual labels:  iptables, firewall
Docker Host
A docker sidecar container to forward all traffic to local docker host or any other host
Stars: ✭ 769 (+804.71%)
Mutual labels:  iptables, firewall
Vflow
Enterprise Network Flow Collector (IPFIX, sFlow, Netflow) from Verizon Media
Stars: ✭ 776 (+812.94%)
Mutual labels:  ipv6, ipv4
Enet Csharp
Reliable UDP networking library
Stars: ✭ 464 (+445.88%)
Mutual labels:  ipv6, ipv4
Ineter
Fast Java library for working with IP addresses, ranges, and subnets
Stars: ✭ 39 (-54.12%)
Mutual labels:  ipv6, ipv4
Hev Socks5 Server
A simple, lightweight socks5 server for Unix (Linux/BSD/macOS)
Stars: ✭ 33 (-61.18%)
Mutual labels:  ipv6, ipv4
Iptables Essentials
Iptables Essentials: Common Firewall Rules and Commands.
Stars: ✭ 1,057 (+1143.53%)
Mutual labels:  iptables, firewall
Commons Ip Math
Stars: ✭ 54 (-36.47%)
Mutual labels:  ipv6, ipv4
Internet.nl
Internet standards compliance test suite
Stars: ✭ 56 (-34.12%)
Mutual labels:  ipv6, ipv4
Nsupdate.info
Dynamic DNS service
Stars: ✭ 720 (+747.06%)
Mutual labels:  ipv6, ipv4
Netaddr
A network address manipulation library for Python
Stars: ✭ 648 (+662.35%)
Mutual labels:  ipv6, ipv4
Pywall
Python firewall.
Stars: ✭ 27 (-68.24%)
Mutual labels:  iptables, firewall
Ddos Deflate
Fork of DDoS Deflate with fixes, improvements and new features.
Stars: ✭ 568 (+568.24%)
Mutual labels:  ipv6, ipv4
Edgeos Blacklist
Automatically updates IP blacklist for EdgeOS (supports IPv4 & IPv6)
Stars: ✭ 34 (-60%)
Mutual labels:  ipv6, ipv4
Ship
A simple, handy network addressing multitool with plenty of features
Stars: ✭ 81 (-4.71%)
Mutual labels:  ipv6, ipv4
Plibsys
Highly portable C system library: threads and synchronization primitives, sockets (TCP, UDP, SCTP), IPv4 and IPv6, IPC, hash functions (MD5, SHA-1, SHA-2, SHA-3, GOST), binary trees (RB, AVL) and more. Native code performance.
Stars: ✭ 402 (+372.94%)
Mutual labels:  ipv6, ipv4
Ipwhois
Retrieve and parse whois data for IPv4 and IPv6 addresses
Stars: ✭ 432 (+408.24%)
Mutual labels:  ipv6, ipv4

Iptables_Semantics

A formal semantics of the Linux netfilter iptables firewall. Written in the Isabelle interactive proof assistant.

It features

  • A real-world model of IPv4/IPv6 addresses as 32bit/128bit machine words.
  • Executable code.
  • Support for all common actions in the iptables filter table: ACCEPT, DROP, REJECT, LOG, calling to user-defined chains, RETURN, GOTO to terminal chains, the empty action.
  • Support for ALL primitive match conditions (by abstracting over unknown match conditions).
  • Translation to a simplified firewall model.
  • Certification of spoofing protection.
  • Service Matrices: For a fixed port, which IP addresses are allowed to connect which other IP addresses? Shows a partition of the complete IPv4/IPv6 addresses.
  • ...

isabelle/hol logo

Obtaining

$ git clone https://github.com/diekmann/Iptables_Semantics.git

Haskell Tool

Don't want to install Isabelle? Don't want to mess with formulas or proofs? Just want a working tool? Cool, checkout our stand-alone Haskell tool!

FFFUU logo

Component Status
Haskell tool Build Status

See README.md in haskell_tool.


Further References

Talks

youtube video thumbnail

Academic Publications

  • Cornelius Diekmann, Lars Hupel, Julius Michaelis, Maximilian Haslbeck, Georg Carle. Verified iptables Firewall Analysis and Verification. In Journal of Automated Reasoning, January 2018. [preprint], [springer]
  • Cornelius Diekmann, Provably Secure Networks: Methodology and Toolset for Configuration Management. PhD thesis, Technische Universität München, July 2017. [preprint], [mediatum]
  • Cornelius Diekmann, Julius Michaelis, Maximilian Haslbeck, and Georg Carle. Verified iptables Firewall Analysis. In IFIP Networking 2016, Vienna, Austria, May 2016. [preprint], [ifip]
  • Cornelius Diekmann, Lukas Schwaighofer, and Georg Carle. Certifying spoofing-protection of firewalls. In 11th International Conference on Network and Service Management, CNSM, Barcelona, Spain, November 2015. [preprint], [ieee | paywall]
  • Cornelius Diekmann, Lars Hupel, and Georg Carle. Semantics-Preserving Simplification of Real-World Firewall Rule Sets. In 20th International Symposium on Formal Methods, June 2015. [preprint], [springer | paywall]

The raw data of the iptables rulesets from the Examples is stored in this repositoy.


Isabelle Theory Files

This repository is probably not up to date and still uses Isabelle2016-1. Get the theories for the current Isabelle release directly from the afp.

Checking all proofs:

$ isabelle build -v -D . -o document=pdf

This needs about 14 CPU hours (about 7 hours real time on an x220, i7 2.7GHz, 16GB ram). The session Iptables_Semantics_Examples_Large1 needs about 5-6 hours CPU time and Iptables_Semantics_Examples_Large2 needs about 7 hours of CPU time; you may want to skip those.

Building the documentation:

$ isabelle build -d . -v -o document=pdf Iptables_Semantics_Documentation

The build takes less than 10 minutes on my laptop (14min CPU time, 2 threads). The documentation summarizes the most important definitions and theorems. It is deliberately very very brief and only provides results. It should contain the summarizing correctness theorems for all executable functions we export. This is probably the best point to get started working with the theory files.

To develop, we suggest to load the Bitmagic theory as heap-image:

$ isabelle jedit -d . -l Bitmagic

Check the Examples directory to get started


Contributors

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].