Advanced Policy Firewall (APF) のインストールと構成

元の投稿: http://www.rfxnetworks.com/apf.php
APF は、使いやすさと構成しやすさを実現するように設計された、ポリシー・ベースの iptables ファイアウォール・システムです。APF では、ベテランの Linux ユーザーと初心者のユーザーを同じように満足させる機能のサブセットを使用します。tar.gz 形式と RPM 形式でパッケージされた APF は、Linux ベースの多くのサーバー環境への導入に最適です。

この操作手順では、Linux システム用の Advanced Policy Firewall のインストールと構成について説明します。さらに、制御パネル、CPanel、Plesk ごとにサンプルの conf.apf ファイルが提供されています。ただし、まず最初のタスクはインストールです。

APF のインストール
インストールを実行するには、「root」または適切な特権を持つユーザーとして SSH にログインする必要があることに注意してください。
ステップ 1: インストールの準備

コンソール:
cd /usr/local/src/
wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
tar -zxvf apf-current.tar.gz; cd apf-*

ステップ 2: インストール

コンソール:
sh ./install.sh
インストールの成功
Installing APF 0.9.6-1: Completed.

インストールの詳細:
インストール・パス: /etc/apf/
構成パス: /etc/apf/conf.apf
実行可能パス: /usr/local/sbin/apf
AntiDos インストール・パス: /etc/apf/ad/
AntiDos 構成パス: /etc/apf/ad/conf.antidos
DShield クライアント・パーサー: /etc/apf/extras/dshield/

その他の詳細:
Listen する TCP ポート: 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
Listen する UDP ポート: 53,161,631,8767,32769
注: これらのポートは自動構成されません。単に参考のために提示されているにすぎません。すべてのポート・オプションを手動で構成する必要があります。

インストールのトラブルシューティングについては、投稿の最後までスクロールダウンしてください

APF の構成
ステップ 1: 構成ファイル conf.apf のオープン
この操作手順では、vi を使用します。Basic Guide to Vim を参照してください。フォーラム・パスワードの変更には、フォーラムにログインしてこれを表示する必要があります。https://control.softlayer.com/account/users 経由でポータルにログインし、ユーザーを選択してここで「フォーラム・パスワード」を更新してください。

コンソール:
cd /etc/apf; vi conf.apf
i Press 'i' to enter Insert Mode

重要な構成変数

コンソール:
# Set firewall cronjob (devel mode)
# 1 = enabled / 0 = disabled

DEVEL_MODE="1" 

DEVEL_MODE - この変数は、5 分ごとに現在の構成をフラッシュするように APF に指示します。これは、新規構成をテスト中にサーバーからロックアウトされていることに気付いた場合に便利です。作業用の構成が作成された後、必ず 0 に設定してください。

コンソール:
# 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 および IFACE_OUT - デフォルトで、これらは eth0 に設定されます。ただし、SoftLayer では、プライベート・ネットワークに eth0 を設定し、パブリック・ネットワークを eth0 に設定しています。これらの変数の構成を誤ると、ネットワーク接続が失われるおそれがあります。必ず両方の変数を eth1 に設定してください。

コンソール:
# 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 - この変数は、リストされているインターフェースを信頼するようにファイアウォールに指示します。このインスタンスでは eth0 を信頼します。eth0 に設定してください。

コンソール:
##
# [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_CPORTSIG_UDP_CPORTS、および IG_ICMP_TYPES - サーバーが受信できるトラフィックのポートとタイプをリストします。必ず、許可したいポートとタイプのみをリストしてください。不要な項目は削除してください。

見積もり:
Ingress
Cpanel のポートとタイプ
コンソール:
##
# [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" 

Plesk のポートとタイプ

コンソール:
##
# [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" 

コンソール:
##
# [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_CPORTSEG_UDP_CPORTS、および EG_ICMP_TYPES - アウトバウンド・トラフィックの処理を除いて、上記の変数と同じです。

見積もり:
Egress
CPanel のポートとタイプ
コンソール:
##
# [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" 

Plesk のポートとタイプ

コンソール:
##
# [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" 

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

USE_DS="0" 

USE_DS - dshield.org のブラックリストを使用してサーバーを保護します。1 に設定してください。

ステップ 2: 構成の保存 (vim を使用する場合)

コンソール:

:wq

ステップ 3: 構成のテスト

コンソール:
apf -r
Development mode enabled!; firewall will flush every 5 minutes.

SSH に再ログインしてサーバーをテストしてください。制御パネル、Web サイト、FTP などにアクセスします。必要に応じて調整を加えてください。

ステップ 4: DEVEL_MODE の 0 への切り替えおよび apf -r の実行

ステップ 5: APF の自動開始の設定

コンソール:
chkconfig --level 2345 apf on