FireHOL-5分で無知な人のためのファイアウォール

これは記事でも完全なガイドでもありませんが、GNU / Linuxマシンで適切に構成され、適切に構成されたルーターをできるだけ早く作成するのに役立つ小さなスニペットです。 そして、これにはiptablesの知識がまったく必要ありません。

Fireholは、 shorewallとは異なり、スクリプトのセットではなく、1つのbashスクリプトです。 したがって、それを使用するために、perlやその他のインタープリターは不要になりました。

Fireholは古き良きNARC(netfilter自動ルールコンフィギュレーター)に近いですが、後者は6年間更新されておらず、iptablesの最新バージョンと互換性のないかなり単純なスクリプトです。 それは、ほぼネイティブの人間の言語でルールを書くことができるという点でより近いです。


apt-getが出現するかどうか


gentooの場合、これは常にemerge -av net-firewall / fireholです〜archを/etc/portage/package.keywordsに追加するか、ACCEPT_KEYWORDS = "〜arch"を使用することを忘れないでください)

インストール後、get-iana.shファイルをfirehol-1.273.tar.bz2 アーカイブから抽出して実行します。 おそらく他のディストリビューションでは、このファイルはシステムにコピーされます。 gentoo ebuildでは、 左に触れません。 このスクリプトの本質は、予約されたIPをIANAから直接ロードすることです。

最も一般的な構成。

小さな会社のルーターの構成例。 すべての発信接続、非標準ポートで1つの着信sshが許可され、さらに、すべてのhttpトラフィックがsquidでオンになります。 スペースを節約するために、コメントブロックをいくつか省略します。

猫/etc/firehol/firehol.conf


# ----------------------------------------------------------------------------
#
# ----------------------------------------------------------------------------

server_ssh_ports="tcp/2202" # SSH 2202

# ----------------------------------------------------------------------------
#
# ----------------------------------------------------------------------------

# --- ---

HOME_MYIP="192.168.1.1" # IP
HOME_MYIF="eth1" #
HOME_BCAST="192.168.1.255" #
HOME_LAN="192.168.1.0/24" #
HOME_SERVICES="all" # ,

HOME_DHCP=1 # 1, DHCP
FIREHOL_LOG_MODE="LOG" #
FIREHOL_LOG_LEVEL="error" # :)

# --- ---

PUBLIC_MYIP="87.250.251.11" # , IP
PUBLIC_MYIF="eth0" #
PUBLIC_SERVICES="ssh" # , .

DIAL_ON_DEMAND=0 # 1,

# --- ---

TRUSTED_PCS="209.85.135.104" # IP
TRUSTED_SERVICES="ssh http" # ssh http .
# , http IP TRUSTED_PCS.

# --- ---

SQUID_PORT="3128" # ,
SQUID_USERS="squid" # ,
SQUID_EXCLUDE="192.168.1.1" # IP ,

# --- ---

blacklist="" # IP

# ----------------------------------------------------------------------------
# ( firehol)
# ----------------------------------------------------------------------------

if [ ! -z "${blacklist}" ]
then
blacklist full "${blacklist}"
fi

if [ ! -z "${SQUID_PORT}" ]
then
transparent_squid "${SQUID_PORT}" "${SQUID_USERS}" \
inface "${HOME_MYIF}" src "${HOME_LAN}" \
`test ! -z "${SQUID_EXCLUDE}" && echo "dst not ${SQUID_EXCLUDE}"`
fi

if [ ! -z "${PUBLIC_MYIP}" ]
then
snat to "${PUBLIC_MYIP}" \
outface "${PUBLIC_MYIF}" \
src "${HOME_LAN}" dst not "${UNROUTABLE_IPS}"
else
masquerade "${PUBLIC_MYIF}"
fi

interface "${HOME_MYIF}" home src "${HOME_LAN}" dst "${HOME_MYIP} ${HOME_BCAST}"
policy reject
server "${HOME_SERVICES}" accept

client all accept

if [ ${HOME_DHCP} -eq 1 ]
then
interface "${HOME_MYIF}" dhcp
server dhcp accept
fi

interface "${PUBLIC_MYIF}" internet \
src not "${UNROUTABLE_IPS}" \
`test ! -z "${PUBLIC_MYIP}" && echo "dst ${PUBLIC_MYIP}"`
protection strong
policy drop
if [ ! -z "${TRUSTED_PCS}" -a ! -z "${TRUSTED_SERVICES}" ]
then
server "${TRUSTED_SERVICES}" accept src "${TRUSTED_PCS}"
fi
server "${PUBLIC_SERVICES}" accept

client all accept

if [ ${DIAL_ON_DEMAND} -eq 1 ]
then
interface "${PUBLIC_MYIF}" dialup
client all accept
fi

router internet2lan inface "${PUBLIC_MYIF}" outface "${HOME_MYIF}" \
src not "${UNROUTABLE_IPS}" dst "${HOME_LAN}"

client all accept


閉鎖/禁止するものを忘れましたか?


Fireholルール構築ポリシー:すべてを無効にし、明示的に指定したもののみを許可します。

上記の例では、フラッド攻撃またはクリスマス攻撃に対するルールを含む約400(!)のルールが作成されます。

ええ、それがルールです...いいえ、いいえ、いいえ!


Fireholを使用すると、リモートサーバーを応答しないハードウェアの山に変える構成を変更することを恐れることもできません。 ルールでssh設定を台無しにしても、常に現在のsshセッションが開いたままになります! 次に、rcスクリプトにはいくつかの便利なパラメーターがあります。 おそらく最もよく使用されるのはtryです。

パラメーターの最終適用の前に、それらのパフォーマンスを確認する機会があります。 これを行うには、tryパラメーターを使用してスクリプトを呼び出します: /etc/init.d/firehol try

Fireholは新たに更新された設定ファイルをダウンロードし、あなたからのコミットという言葉忠実に待ちます。 これが30秒以内に届かない場合、以前の作業パラメーターが復元されます。

標準の開始、停止、再起動、および前述の試行に加えて、さらに3つあります。
status-現在のiptablesルールを表示します
save-現在のiptablesルールを保存します
パニック -侵入の検出に使用され、内部ネットワークを含む外界とのすべての連絡先が重複しています。

ギモメモ


興味のある方は、この素晴らしい製品に関する包括的なドキュメントや、ホームNATからDMZ、内部グループ、その他の微妙な機能を備えたオフィス間ルーターまでの多くの構成例があるプログラムWebサイトにようこそ。

Source: https://habr.com/ru/post/J80284/


All Articles