Installer et configurer Advanced Policy Firewall (APF)

Publié à l'origine par http://www.rfxnetworks.com/apf.php
APF est un système de pare-feu iptables basé sur des règles et conçu pour la facilité d'utilisation et de configuration. Ce système utilise un sous-ensemble de fonctionnalités afin de répondre aux besoins des utilisateurs Linux qu'ils soient novices ou experts. Conditionné aux formats tar.gz et RPM, APF est idéal pour le déploiement dans de nombreux environnements de serveurs basés sur Linux.

Ces instructions expliquent l'installation et la configuration d'Advanced Policy Firewall pour votre système Linux. En outre, un fichier échantillon conf.apf sera fourni pour chaque panneau de commande, CPanel et Plesk. Toutefois, la première tâche à accomplir est l'Installation.

Installation d'APF
Notez que vous devez vous connecter à SSH en tant que 'root' ou en tant qu'utilisateur avec des privilèges appropriés pour effectuer l'installation.
Étape 1 : Préparation de l'installation

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

Étape 2 : Installation

Console :
sh ./install.sh
Successful 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
Note: These ports are not auto-configured; they are simply presented for information purposes. You must manually configure all port options.

Pour le dépannage de l'installation, faites défiler jusqu'au bas de l'article

Configuration d'APF
Étape 1 : ouverture du fichier de configuration, conf.apf
Nous utiliserons vi dans ces Instructions. Voir le document Basic Guide to Vim. Vous devez vous connecter aux forums pour voir ceci. Pour modifier votre mot de passe de forum : veuillez vous connecter au portail et via https://control.softlayer.com/account/users, sélectionner votre nom d'utilisateur et mettre à jour votre 'Mot de passe de forum' ici.

Console :
cd /etc/apf; vi conf.apf
i Press 'i' to enter Insert Mode

IMPORTANT Variables de configuration

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

DEVEL_MODE="1" 

DEVEL_MODE - Cette variable indiquera à APF de vider la configuration actuelle toutes les 5 minutes. Cette approche est pratique lorsque vous testez une nouvelle configuration et vous retrouvez bloqué hors de votre serveur. N'oubliez pas de régler sur 0 une fois la configuration opérationnelle créée.

Console :
# 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 et IFACE_OUT - Par défaut, ces paramètres sont définis sur la valeur eth0. Toutefois, SoftLayer a défini eth0 pour le réseau privé et le réseau public est défini sur eth0. La configuration incorrecte de ces variables peut aboutir à une absence de connectivité réseau. Réglez les deux variables sur eth1

Console :
# 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 - Cette variable indique au pare-feu de faire confiance aux interfaces répertoriées. Dans notre exemple, nous faisons confiance à notre eth0. Défini sur eth0

Console :
##
# [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, and IG_ICMP_TYPES - Répertorie les ports et les types de trafic autorisés qui peuvent être reçus par le serveur. N'oubliez pas de répertorier uniquement les ports et les types que vous voulez autoriser. Supprimer les éléments inutiles.

Exemple :
Entrée
Ports et Types pour Cpanel
Console :
##
# [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 et Types pour Plesk

Console :
##
# [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" 

Console :
##
# [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 et EG_ICMP_TYPES - Même variables que ci-dessus, mais gèrent le trafic sortant.

Exemple :
Sortie
Ports et Types pour CPanel
Console :
##
# [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 et Types pour Plesk

Console :
##
# [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" 

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

USE_DS="0" 

USE_DS - Utiliser la liste noire de dshield.orgpour protéger votre serveur. Réglé sur 1

Étape 2 : Enregistrer la configuration (sous vim)

Console :

:wq

Étape 3 : Tester la configuration

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

Testez votre serveur en vous connectant de nouveau à SSH. Consultez votre panneau de commande, site web, ftp, etc... Faites les ajustements nécessaires.

Étape 4 : faire passer DEVEL_MODE à 0 et apf -r

Étape 5 : Régler APF sur autostart

Console :
chkconfig --level 2345 apf on