update README.md to include use cases and features
This commit is contained in:
parent
0d83c967c0
commit
f99e7831d8
96
README.md
96
README.md
@ -57,13 +57,107 @@ for Rijndael encryption is generated via the standard PBKDF1 key derivation
|
|||||||
algorithm, and CBC mode is set. If the GnuPG method is chosen, then the
|
algorithm, and CBC mode is set. If the GnuPG method is chosen, then the
|
||||||
encryption keys are derived from GnuPG key rings.
|
encryption keys are derived from GnuPG key rings.
|
||||||
|
|
||||||
## Tutorial
|
## Use Cases
|
||||||
|
People who use Single Packet Authorization (SPA) or its security-challenged cousin
|
||||||
|
Port Knocking (PK) usually access SSHD running on the same system where the SPA/PK
|
||||||
|
software is deployed. That is, a firewall running on a host has a default-drop
|
||||||
|
policy against all incoming SSH connections so that SSHD cannot be scanned, but a
|
||||||
|
SPA daemon reconfigures the firewall to temporarily grant access to a passively
|
||||||
|
authenticated SPA client:
|
||||||
|
|
||||||
|
![alt text][SPA-basic-access-SSHD]
|
||||||
|
[SPA-basic-access-SSHD]: /doc/images/SPA_basic.png "Basic SPA usage to access SSHD"
|
||||||
|
|
||||||
|
fwknop supports the above, but also goes much further and makes robust usage of NAT
|
||||||
|
(for iptables/firewalld firewalls). After all, *important* firewalls are usually gateways
|
||||||
|
between networks as opposed to just being deployed on standalone hosts. NAT is commonly
|
||||||
|
used on such firewalls (at least for IPv4 communications) to provide Internet access to
|
||||||
|
internal networks that are on RFC 1918 address space, and also to allow external
|
||||||
|
hosts access to services hosted on internal systems.
|
||||||
|
|
||||||
|
Because fwknop integrates with NAT, SPA can be leveraged to access internal services
|
||||||
|
*through* the firewall by users on the external Internet. Although this has plenty of
|
||||||
|
applications on modern traditional networks, it also allows fwknop to support cloud
|
||||||
|
computing environments such as Amazon's AWS:
|
||||||
|
|
||||||
|
![alt text][SPA-Amazon-AWS-cloud]
|
||||||
|
[SPA-Amazon-AWS-cloud]: /doc/images/SPA_AWS_network_setup.png "SPA usage on Amazon AWS cloud environments"
|
||||||
|
|
||||||
|
## Tutorial
|
||||||
A comprehensive tutorial on fwknop can be found here:
|
A comprehensive tutorial on fwknop can be found here:
|
||||||
|
|
||||||
[http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html](http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html)
|
[http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html](http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html)
|
||||||
|
|
||||||
|
|
||||||
|
## Features
|
||||||
|
The following is a complete list of features supported by the fwknop project:
|
||||||
|
|
||||||
|
* Implements Single Packet Authorization around iptables and firewalld firewalls
|
||||||
|
on Linux, ipfw firewalls on *BSD and Mac OS X, and PF on OpenBSD.
|
||||||
|
* The fwknop client runs on Linux, Mac OS X, *BSD, and Windows under Cygwin.
|
||||||
|
In addition, there is an [Android app](https://github.com/oneru/Fwknop2/releases)
|
||||||
|
to generate SPA packets.
|
||||||
|
* Supports both Rijndael and GnuPG methods for the encryption/decryption of
|
||||||
|
SPA packets.
|
||||||
|
* Supports HMAC authenticated encryption for both Rijndael and GnuPG. The order
|
||||||
|
of operation is encrypt-then-authenticate to avoid various cryptanalytic problems.
|
||||||
|
* Replay attacks are detected and thwarted by SHA-256 digest comparison of valid
|
||||||
|
incoming SPA packets. Other digest algorithms are also supported, but SHA-256 is
|
||||||
|
the default.
|
||||||
|
* SPA packets are passively sniffed from the wire via libpcap. The fwknopd server
|
||||||
|
can also acquire packet data from a file that is written to by a separate Ethernet
|
||||||
|
sniffer (such as with `tcpdump -w <file>`), from the iptables ULOG pcap writer, or
|
||||||
|
directly via a UDP socket in `--udp-server` mode.
|
||||||
|
* For iptables firewalls, ACCEPT rules added by fwknop are added and deleted (after
|
||||||
|
a configurable timeout) from custom iptables chains so that fwknop does not
|
||||||
|
interfere with any existing iptables policy that may already be loaded on the
|
||||||
|
system.
|
||||||
|
* Supports inbound NAT connections for authenticated SPA communications (iptables
|
||||||
|
firewalls only for now).This means that fwknop can be configured to create DNAT
|
||||||
|
rules so that you can reach a service (such as SSH) running on an internal system
|
||||||
|
on an RFC 1918 IP address from the open Internet. SNAT rules are also supported
|
||||||
|
which essentially turns fwknopd into a [SPA-authenticating gateway](https://www.cipherdyne.org/blog/2015/04/nat-and-single-packet-authorization.html)
|
||||||
|
to access the Internet from an internal network.
|
||||||
|
* Multiple users are supported by the fwknop server, and each user can be assigned
|
||||||
|
their own symmetric or asymmetric encryption key via the /etc/fwknop/access.conf
|
||||||
|
file.
|
||||||
|
* Automatic resolution of external IP address via
|
||||||
|
[https://www.cipherdyne.org/cgi-bin/myip](https://www.cipherdyne.org/cgi-bin/myip)
|
||||||
|
(this is useful when the fwknop client is run from behind a NAT device). Because
|
||||||
|
the external IP address is encrypted within each SPA packet in this mode,
|
||||||
|
Man-in-the-Middle (MITM) attacks where an inline device intercepts an SPA packet
|
||||||
|
and only forwards it from a different IP in an effort to gain access are thwarted.
|
||||||
|
* [Port randomization](https://www.cipherdyne.org/blog/2008/06/single-packet-authorization-with-port-randomization.html)
|
||||||
|
is supported for the destination port of SPA packets as well
|
||||||
|
as the port over which the follow-on connection is made via the iptables NAT
|
||||||
|
capabilities. The later applies to forwarded connections to internal services and
|
||||||
|
to access granted to local sockets on the system running fwknopd.
|
||||||
|
* Integration with Tor (see my DefCon 14 presentation). Note that because Tor uses
|
||||||
|
TCP for transport, sending SPA packets through the Tor network requires that each
|
||||||
|
SPA packet is sent over an established TCP connection, so technically this breaks
|
||||||
|
the "single" aspect of "Single Packet Authorization". However, Tor provides
|
||||||
|
anonymity benefits that can outweigh this consideration in some deployments.
|
||||||
|
* Implements a versioned protocol for SPA communications, so it is easy to extend
|
||||||
|
the protocol to offer new SPA message types and maintain backwards compatibility
|
||||||
|
with older fwknop clients at the same time.
|
||||||
|
* Supports the execution of shell commands on behalf of valid SPA packets.
|
||||||
|
* The fwknop server can be configured to place multiple restrictions on inbound SPA
|
||||||
|
packets beyond those enforced by encryption keys and replay attack detection.
|
||||||
|
Namely, packet age, source IP address, remote user, access to requested ports,
|
||||||
|
and more.
|
||||||
|
* Bundled with fwknop is a comprehensive test suite that issues a series of tests
|
||||||
|
designed to verify that both the client and server pieces of fwknop work properly.
|
||||||
|
These tests involve sniffing SPA packets over the local loopback interface,
|
||||||
|
building temporary firewall rules that are checked for the appropriate access based
|
||||||
|
on the testing config, and parsing output from both the fwknop client and fwknopd
|
||||||
|
server for expected markers for each test. Test suite output can easily be
|
||||||
|
anonymized for communication to third parties for analysis.
|
||||||
|
* fwknop was the first program to integrate port knocking with passive OS
|
||||||
|
fingerprinting. However, Single Packet Authorization offers many security benefits
|
||||||
|
beyond port knocking, so the port knocking mode of operation is generally
|
||||||
|
deprecated.
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
The fwknop project is released as open source software under the terms of
|
The fwknop project is released as open source software under the terms of
|
||||||
the **GNU General Public License (GPL v2)**. The latest release can be found
|
the **GNU General Public License (GPL v2)**. The latest release can be found
|
||||||
|
|||||||
BIN
doc/images/SPA_AWS_network_setup.png
Normal file
BIN
doc/images/SPA_AWS_network_setup.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
BIN
doc/images/SPA_basic.png
Normal file
BIN
doc/images/SPA_basic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Loading…
x
Reference in New Issue
Block a user