Advanced Policy Firewall (APF).

Advanced Policy Firewall (APF).

Advanced Policy Firewall (APF) is an iptables(netfilter) based firewall system designed around the essential needs of today’s Internet deployed servers and the unique needs of custom deployed Linux installations. The configuration of APF is designed to be very informative and present the user with an easy to follow process, from top to bottom of the configuration file. The management of APF on a day-to-day basis is conducted from the command line with the ‘apf’ command, which includes detailed usage information and all the features one would expect from a current and forward thinking firewall solution.

APF features:
– detailed and well commented configuration file
– granular inbound and outbound network filtering
– user id based outbound network filtering
– application based network filtering
– trust based rule files with an optional advanced syntax
– global trust system where rules can be downloaded from a central management server
– reactive address blocking (RAB), next generation in-line intrusion prevention
– debug mode provided for testing new features and configuration setups
– fast load feature that allows for 1000+ rules to load in under 1 second
– inbound and outbound network interfaces can be independently configured
– global tcp/udp port & icmp type filtering with multiple methods of executing filters (drop, reject, prohibit)
– configurable policies for each ip on the system with convenience variables to import settings
– packet flow rate limiting that prevents abuse on the most widely abused protocol, icmp
– prerouting and postrouting rules for optimal network performance
– block list support to ban networks exhibiting suspicious activity
– spamhaus Don’t Route Or Peer List support to ban known “hijacked zombie” IP blocks
– any number of additional interfaces may be configured as firewalled (untrusted) or trusted (not firewalled)
– additional firewalled interfaces can have there own unique firewall policies applied
– intelligent route verification to prevent embarrassing configuration errors
– advanced packet sanity checks to make sure traffic coming and going meets the strictest of standards
– filter attacks such as fragmented UDP, port zero floods, stuffed routing, arp poisoning and more
– configurable type of service options to dictate the priority of different types of network traffic
– intelligent default settings to meet every day server setups
– dynamic configuration of your servers local DNS revolvers into the firewall
– optional filtering of common p2p applications
– optional filtering of private & reserved IP address space
– optional implicit blocks of the ident service
– configurable connection tracking settings to scale the firewall to the size of your network
– configurable kernel hooks (ties) to harden the system further to syn-flood attacks & routing abuses
– advanced network control such as explicit congestion notification and overflow control
– special chains that are aware of the state of FTP DATA and SSH connections to prevent client side issues
– control over the rate of logged events, want only 30 filter events a minute? 300 a minute? – you are the boss
– logging subsystem that allows for logging data to user space programs or standard syslog files
– logging that details every rule added and a comprehensive set of error checks to prevent config errors
– if you are familiar with netfilter you can create your own rules in any of the policy files
– pluggable and ready advanced use of QoS algorithms provided by the Linux
– 3rd party add-on projects that compliment APF features

Advanced Policy Firewall (APF) v1.7.5.2

The known Linux platforms that APF will run on are very diverse and it is hard
to keep track but here is a short summary:
– Redhat Enterprise AS/ES 2+
– CentOS Any
– Fedora Core Any
– Slackware 8.0+
– Debian GNU/Linux 3.0+
– Suse Linux 8.1+
Ubuntu Any
– TurboLinux Server 9+
– TurboLinux Fuji (Desktop)
– RedHat Linux 7.3,8,9

APF v 1.7.5-2 | Sep 18 2017:
+ [Fix] ipt/xt_recent detection for RAB w/ compressed kernel modules
+ [Fix] el7.4 for some reason does not set CONFIG_MODULE_COMPRESSED_XZ=y in config-$(uname -r); addressed with more trivial check
+ [Fix] rewrite mutex_lock to behave more like an actual mutex, with timeout on both entering the lock and clearing old lock files.
+++ This helps resolve race conditions and works to fix #16
+ [Fix] typo in sysctl.conf for setting tcp_tw_reuse=1
+ [Change] SET_REFRESH_MD5 hashing now performed on start calls instead of only on ‘-e|–refresh’
+ [Change] if setting VF_ROUTE to disabled there should be no check whether interfaces are actually routed to something
+ [Fix] wget fails when ipv6 is disabled on host
+ [Fix] IP addresses interpreted as regex
+ [Change] support for custom INSTALL_PATH during installation
+ [Change] increased default conntrack limit from 65k to 128k
+ [Change] increased default rule trim count from 200 to 250
+ [Change] added configuration options for adaptive conntrack tuning during start/restart/reload operations