Advanced Policy Firewall (APF) installieren

Ursprünglich gepostet von http://www.rfxnetworks.com/apf.php
APF ist ein richtlinienbasiertes "IPTables"-Firewallsystem, das benutzerfreundlich ist und bei der Konfiguration unterstützt. Ein Teil der Systemfunktionen ist gleichermaßen für erfahrene Benutzer und Benutzer mit wenig Vorkenntnissen geeignet. Als Paket im Format "tar.gz" und im RPM-Format eignet sich APF ideal für die Implementierung in zahlreichen Linux-basierten Serverumgebungen.

In diesem Abschnitt zur Vorgehensweise wird die Installation und Konfiguration von Advanced Policy Firewall für Ihr Linux-System beschrieben. Außerdem ist für jede Steuerkonsole, CPanel und Plesk eine Musterdatei namens conf.apf verfügbar. Die erste Aufgabe ist jedoch zunächst die Installation.

Installation von APF
Beachten Sie, dass Sie sich bei SSH als "Root"-Benutzer oder als Benutzer mit entsprechenden Berechtigungen anmelden müssen, um die Installation durchführen zu können.
Schritt 1: Installation vorbereiten

Konsole:
cd /usr/local/src/
wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
tar -zxvf apf-current.tar.gz; cd apf-*

Schritt 2: Installation

Konsole:
sh ./install.sh
Erfolgreiche Installation
Installing APF 0.9.6-1: Completed.

Installation Details:
Install path: /etc/apf/
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf
AntiDos install path: /etc/apf/ad/
AntiDos config path: /etc/apf/ad/conf.antidos
DShield Client Parser: /etc/apf/extras/dshield/

Other Details:
Listening TCP ports: 1,21,25,53,80,110,111,143,199,443,465,631,993,995, 2082,2083,2084,2086,2087,2095,2096,3306,6666,14534 ,51234
Listening UDP ports: 53,161,631,8767,32769
Hinweis: Diese Ports werden nicht automatisch konfiguriert. Sie werden nur für Informationszwecke aufgeführt. Sie müssen alle Portoptionen manuell konfigurieren.

Informationen zur Behebung von Installationsfehlern finden Sie am Ende des Beitrags.

Konfiguration von APF
Schritt 1: Konfigurationsdatei "conf.apf" öffnen.
In diesem Abschnitt zur Vorgehensweise wird vi verwendet. Siehe hierzu auch den Basic Guide to Vim. Sie müssen sich in den Foren anmelden, um diese Informationen sehen zu können. So ändern Sie Ihr Forumkennwort: Melden Sie sich beim Portal an und wählen Sie über https://control.softlayer.com/account/users Ihren Benutzer aus. Aktualisieren Sie dort Ihr Forumkennwort.

Konsole:
cd /etc/apf; vi conf.apf
i Drücken Sie auf "i", um in den Einfügemodus zu gelangen

WICHTIGE Konfigurationsvariablen

Konsole:
# Set firewall cronjob (devel mode)
# 1 = enabled / 0 = disabled

DEVEL_MODE="1" 

DEVEL_MODE – Diese Variable weist APF an, für die aktuelle Konfiguration alle fünf Minuten eine Flushoperation auszuführen. Dies hilft beim Testen einer neuen Konfiguration, wenn Sie nicht mehr auf den Server zugreifen können. Denken Sie daran, als Wert 0 anzugeben, sobald eine funktionierende Konfiguration erstellt wurde.

Konsole:
# Untrusted Network interface(s); all traffic on defined interface will be
# subject to all firewall rules. This should be your internet exposed
# interfaces. Only one interface is accepted for each value.
# NOTE: The interfacing structure is being worked towards support of MASQ/NAT

IFACE_IN="eth0"
IFACE_OUT="eth0" 

IFACE_IN und IFACE_OUT – Standardmäßig werden diese Werte auf "eth0" gesetzt. Bei SoftLayer ist "eth0" auf unser privates Netzwerk festgelegt. Für unser öffentliches Netzwerk gilt ebenfalls "eth0". Werden diese Variablen falsch konfiguriert, sind möglicherweise keine Netzwerkverbindungen möglich. Legen Sie beide Variablen auf "eth1" fest.

Konsole:
# Trusted Network interface(s); all traffic on defined interface(s) will by-pass
# ALL firewall rules, format is white space or comma seperated list.

IFACE_TRUSTED="" 

IFACE_TRUSTED – Diese Variable weist die Firewall an, den aufgeführten Schnittstellen zu vertrauen. Im vorliegenden Beispiel soll "eth0" von SoftLayer vertraut werden. Auf "eth0" festlegen.

Konsole:
##
# [Ingress]
# Configure ingress (inbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
# IG_UDP_CPORTS="20,21,53,123"
# IG_ICMP_TYPES="3,5,11,0,30,8"
##

# Common ingress (inbound) TCP ports


IG_TCP_CPORTS="22"

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS=""

# Common ICMP (inbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

IG_ICMP_TYPES="3,5,11,0,30,8" 

IG_TCP_CPORTS, IG_UDP_CPORTS und IG_ICMP_TYPES – Listet die Ports und Typen der übertragenen Daten auf, die vom Server empfangen werden dürfen. Denken Sie daran, nur Ports und Datentypen aufzulisten, die Sie zulassen wollen. Entfernen Sie unnötige Elemente.

Beispiel:
Ingress
Ports und Datentypen für Cpanel
Konsole:
##
# [Ingress]
# Configure ingress (inbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
# IG_UDP_CPORTS="20,21,53,123"
# IG_ICMP_TYPES="3,5,11,0,30,8"
##

# Common ingress (inbound) TCP ports


IG_TCP_CPORTS="20,21,22,25,26,53,80,110,143,161,443,465,623,993,995,2082,2083,2086,2087,2095,2096,3306,3389,6666"

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS="21,53,161,465,623,873"

# Common ICMP (inbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

IG_ICMP_TYPES="3,5,11,0,30,8" 

Ports und Datentypen für Plesk

Konsole:
##
# [Ingress]
# Configure ingress (inbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
# IG_UDP_CPORTS="20,21,53,123"
# IG_ICMP_TYPES="3,5,11,0,30,8"
##

# Common ingress (inbound) TCP ports


IG_TCP_CPORTS="20,21,22,25,26,53,80,110,143,161,443,465,623,993,995,3389,8443"

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS="21,53,161,465,623,873"

# Common ICMP (inbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

IG_ICMP_TYPES="3,5,11,0,30,8" 

Konsole:
##
# [Egress]
# Configure egress (outbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory.
#
# Egress filtering is not required but makes your firewall setup complete
# by providing full inbound and outbound packet filtering. You can toggle
# egress filtering on or off with the EGF variable. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# EG_TCP_CPORTS="21,25,80,443,43"
# EG_UDP_CPORTS="20,21,53"
# EG_ICMP_TYPES="all"
##

# Egress filtering [0 = Disabled / 1 = Enabled]


EGF="0"

# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,25,80,443"

# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53"

# Common ICMP egress (outbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

EG_ICMP_TYPES="all" 

EG_TCP_CPORTS, EG_UDP_CPORTS und EG_ICMP_TYPES – Identisch wie bei den obigen Variablen, außer der Handhabung des abgehenden Datenverkehrs.

Beispiel:
Egress
Ports und Datentypen für CPanel
Konsole:
##
# [Egress]
# Configure egress (outbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory.
#
# Egress filtering is not required but makes your firewall setup complete
# by providing full inbound and outbound packet filtering. You can toggle
# egress filtering on or off with the EGF variable. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# EG_TCP_CPORTS="21,25,80,443,43"
# EG_UDP_CPORTS="20,21,53"
# EG_ICMP_TYPES="all"
##

# Egress filtering [0 = Disabled / 1 = Enabled]


EGF="1"

# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,22,25,26,27,37,43,53,80,110,113,161,443,465,623,873,2089,3389"

# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53,161,465,623,873"

# Common ICMP egress (outbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

EG_ICMP_TYPES="all" 

Ports und Datentypen für Plesk

Konsole:
##
# [Egress]
# Configure egress (outbound) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory.
#
# Egress filtering is not required but makes your firewall setup complete
# by providing full inbound and outbound packet filtering. You can toggle
# egress filtering on or off with the EGF variable. Format is comma seperated
# and underscore seperator for ranges.
#
# Example:
# EG_TCP_CPORTS="21,25,80,443,43"
# EG_UDP_CPORTS="20,21,53"
# EG_ICMP_TYPES="all"
##

# Egress filtering [0 = Disabled / 1 = Enabled]


EGF="1"

# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,22,25,26,27,37,43,53,80,110,113,161,443,465,623,873,3389"

# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53,161,465,623,873"

# Common ICMP egress (outbound) types
# 'internals/icmp.types' for type definition; 'all' is wildcard for any

EG_ICMP_TYPES="all" 

Konsole:
# DShield.org's "block" list of top networks that have exhibited
# suspicious activity. [0 = Disabled / 1 = Enabled]

USE_DS="0" 

USE_DS – Verwenden Sie die Blacklist von "dshield.org" zum Schutz Ihres Servers. Auf "1" festlegen.

Schritt 2: Konfiguration speichern (in der vim-Umgebung)

Konsole:

:wq

Schritt 3: Konfiguration testen

Konsole:
apf -r
Development mode enabled!; firewall will flush every 5 minutes.

Testen Sie Ihren Server durch erneutes Anmelden bei SSH. Ziehen Sie Ihre Steuerkonsole, Website, ftp usw. hinzu ... nehmen Sie bei Bedarf Anpassungen vor.

Schritt 4: DEVEL_MODE in "0" und "apf" in "-r" ändern

Schritt 5: APF auf "autostart" festlegen

Konsole:
chkconfig --level 2345 apf on