Instalar e Configurar Advanced Policy Firewall (APF)


Postado Originalmente por http://www.rfxnetworks.com/apf.php
APF é um sistema de firewall iptables baseado em política projetado para facilidade de uso e configuração. Ele emprega um subconjunto de recursos para satisfazer o usuário veterano do Linux e o novato da mesma maneira. Empacotado no formato tar.gz e nos formatos RPM, o APF é ideal para implementação em vários ambientes do servidor baseados em Linux.

Estas Instruções explicarão a instalação e a configuração do Advanced Policy Firewall para seu Sistema Linux. Além disso, um arquivo conf.apf de amostra será fornecido para cada painel de controle, CPanel e Plesk; no entanto, a primeira tarefa prática é a Instalação.

Instalação do APF
Observe que será necessário efetuar login no SSH como 'raiz' ou um usuário com privilégios apropriados para executar a instalação.
Etapa 1: Preparando-se para a Instalação

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

Etapa 2: Instalação

Console:
sh ./install.sh
Instalação Bem-sucedida
Instalação do APF 0.9.6-1: Concluída.

Detalhes da Instalação:
Caminho de instalação: /etc/apf/
Caminho de configuração: /etc/apf/conf.apf
Caminho executável: /usr/local/sbin/apf
Caminho de instalação AntiDos: /etc/apf/ad/
Caminho de configuração AntiDos: /etc/apf/ad/conf.antidos
Analisador de Cliente DShield: /etc/apf/extras/dshield/

Outros Detalhes:
Portas TCP de atendimento: 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
Portas UDP de atendimento: 53,161,631,8767,32769
Nota: Estas portas não são configuradas automaticamente; elas são simplesmente apresentadas para propósito informativo. Deve-se configurar todas as opções de porta manualmente.

Para resolução de problemas de instalação, role para baixo até o final do post

Configuração do APF
Etapa 1: Abrindo o arquivo de configuração, conf.apf
Estará sendo usado vi nestas Instruções. Consulte o Guia Básico para Vim. Será necessário efetuar login nos fóruns para visualizar isto, para mudar sua senha do fórum: efetue login no portal e via https://control.softlayer.com/account/users, selecione seu usuário e atualize sua 'senha do fórum' aqui.

Console:
cd /etc/apf; vi conf.apf
i Pressione 'i' para entrar no Modo de Inserção

IMPORTANTE Variáveis de Configuração

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

DEVEL_MODE="1" 

DEVEL_MODE - Esta variável informará ao APF para eliminar a configuração atual a cada 5 minutos. Isto ajuda quando você está testando uma nova configuração e se vê bloqueado em seu servidor. Lembre-se de configurar como 0 quando uma configuração ativa tiver sido criada.

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 e IFACE_OUT - Por padrão, eles são configurados como eth0; no entanto, a SoftLayer possui o eth0 configurado para rede privada e sua rede pública configurada como eth0. O erro de configuração destas variáveis poderá resultar em ausência de conectividade de rede. Configure ambas as variáveis como 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 - Esta variável informa ao firewall para confiar nas interfaces listadas. Em nossa instância, confiamos em nosso eth0. Configure como 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 e IG_ICMP_TYPES - Lista as portas e os tipos de tráfego permitidos para serem recebidos pelo servidor. Lembre-se de listar somente as portas e tipos que deseja permitir; remova os itens desnecessários.

Citação:
Ingresso
Portas e Tipos para 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" 

Portas e Tipos para 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 e EG_ICMP_TYPES - Igual às variáveis acima, exceto a manipulação do tráfego de saída.

Citação:
Egresso
Portas e Tipos para 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" 

Portas e Tipos para 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 - Use a lista de bloqueio de dshield.org para proteger seu servidor. Configure como 1

Etapa 2: Salvando a configuração (enquanto estiver no vim)

Console:

:wq

Etapa 3: Testando a configuração

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

Teste seu servidor efetuando login no SSH novamente. Visite seu painel de controle, website, ftp, etc... Faça ajustes conforme necessário.

Etapa 4: Alternar DEVEL_MODE para 0 e apf -r

Etapa 5: Configurar APF para autoinicialização

Console:
chkconfig --level 2345 apf on