iptablesでファイアウォールを構築する方法!

今回は、iptablesでファイアウォールを構築する方法です。iptables はパケットフィルタリング型のファイアウォールです。必要最低限のファイアウォールですので、自分のサーバーを守るためにも iptables は導入しましょう!

iptables はポートを管理して攻撃を防ぐもので、サイト上からの攻撃 SQLインジェクションやクロスサイトスクリプティングなどの攻撃は防ぐことが出来ません!

iptables の導入方法は、OSによって異なります。アクセスルールは共通で使えますが、アクセスルールを記述するファイルの位置が異なったりします。

今回は、WebminDebian7 の2種類の導入方法をご紹介します!Debian7 の方でも Webmin の方法で導入する事も出来ます。

Webmin で導入する方法(IPv4のみ)

Webmin をお使いの方は、「ネットワーク」 → 「Linux ファイヤウォール」から、iptables の設定が出来ます。特に iptables のソフトをインストールする必要はありませんし、起動時にファイヤウォールを有効にする事も出来ます。

アクセスルールの追加は、Webmin上から作業する事も出来ますが、最初はルールが多いので、直接ファイルを修正する方法で行います。

1.すべて許可する

まず初めに、「ネットワーク」 → 「Linux ファイヤウォール」の「設定を適用」ボタンを押してすべて許可します。

2.アクセスルール作成

Webmin のアクセスルール用のファイルは、/etc/iptables.up.rules になります。

下記のアクセスルールは必要最低限のポートのみ開放してあります。許可してあるもの以外は破棄されます。-A INPUT から始まる行の末尾に -j ACCEPT が付いているのが許可。付いていないのは、何もしない(最終的には破棄される)。にしてあります。使用したいポートに、 -j ACCEPT を付ければポートが許可されます。他にも必要なポートがあれば、ご自分で追記してください。

# vi /etc/iptables.up.rules を修正します。
下記は既に修正済みです。

[0:0] - [パケットカウンタ:バイトカウンタ]

3.アクセスルールを適応する

Webmin の「Linux ファイヤウォール」を再読込すると、上記のアクセスルールが反映されていると思いますので、「設定を適用する」ボタンを押して、起動時に有効にはいを選んで、「起動時に有効」ボタンを押せば、すべての作業は終わりです!

アクセスルールの適応状態の確認方法は、一番下に書いてあります!

Debian7 で導入する方法(IPv4・IPv6)

Debian7 をお使いの方は、こちらの方が便利です。いや、そんなに変わらないかも・・・?

iptables インストール

IPv4 & IPv6 のアクセスルールを作るか聞いてくるので、必要に応じて選んでください。当説明は、IPv4 のみです。

アクセスルール作成

# vi /etc/iptables/rules.v4 を修正します。

アクセスルールを適応する

アクセスルールの適応状態の確認

# iptables -L - アクセスルールの適応状態を表示する。
# iptables -L -v - アクセスルールの適応状態とパケットカウンターを表示する。
# iptables -L -Z - アクセスルールの適応状態とパケットカウンターをリセットする。

これで、iptables の状態が確認できると思います。

IPv6もあるんだよ。

実は、今回紹介したのはIPv4向けの設定です。IPv6も利用している方は、別途設定をする必要があります。意外とIPv6のフィルタ設定は忘れられている事が多いです。IPv6の適応方法は、ネットで探してください。m(_ _)m

# ip6tables -L で、IPv6の適応状態が確認出来ます。

IPv6を使用していないならば、無効化したほうが良いかと思います。もしくは、iptables でIPv6の通信をすべてDROPする方が楽で確実かもしれないですね。

// 検索キーワード
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
NETWORKING_IPV6=no

総当たり攻撃(ブルートフォースアタック)

SSHのポートを有効にしていると、総当たり攻撃をほぼ100%受けると思います。今回のアクセスルールでは防ぐことが出来ません。iptables だけでもやれない事は無いですが、「SSHGuard」や「Fail2ban」などのソフトも導入する方が、防御力は上がります。「Fail2ban」がお薦め。

守るのは、SSH、POP3、FTP、ベーシック認証など、アカウント&パスワードを入力するものです。

総当たり攻撃はこんな感じです・・・。
SASL Authentications failed 2098 Time(s)
Service smtp (shadow) - 2098 Time(s):
Realm - 1 Time(s):
User: contact - Unknown - 1 Time(s):
User: abuse - Unknown - 1 Time(s):
User: accounts - Unknown - 1 Time(s):
User: admin - Unknown - 1 Time(s):
User: aoyagi - Unknown - 34 Time(s):
User: backup - Unknown - 1 Time(s):
User: cron - Unknown - 1 Time(s):
User: abuse - Unknown - 46 Time(s):
User: admin - Unknown - 46 Time(s):
User: administrator - Unknown - 46 Time(s):
User: aoyagi - Unknown - 34 Time(s):
User: contact - Unknown - 46 Time(s):
User: deals - Unknown - 46 Time(s):
User: do_not_reply - Unknown - 46 Time(s):
User: donotreply - Unknown - 46 Time(s):
User: feedback - Unknown - 46 Time(s):
User: hello - Unknown - 46 Time(s):
User: help - Unknown - 46 Time(s):
User: hey - Unknown - 46 Time(s):
User: hostmaster - Unknown - 46 Time(s):
User: html-news - Unknown - 46 Time(s):
User: info - Unknown - 46 Time(s):
User: information - Unknown - 46 Time(s):
User: mailing - Unknown - 46 Time(s):
User: mainnewsletter - Unknown - 46 Time(s):
User: marketing - Unknown - 46 Time(s):
User: newletter - Unknown - 46 Time(s):
User: news - Unknown - 46 Time(s):
User: newsletters - Unknown - 46 Time(s):
User: nl-replies - Unknown - 92 Time(s):
User: no-reply - Unknown - 46 Time(s):
User: office - Unknown - 46 Time(s):
User: please-reply - Unknown - 46 Time(s):
User: postmaster - Unknown - 46 Time(s):
User: replyto - Unknown - 46 Time(s):
User: sales - Unknown - 92 Time(s):
User: staff - Unknown - 46 Time(s):
User: subscriptions - Unknown - 92 Time(s):
User: suport - Unknown - 46 Time(s):
User: support - Unknown - 46 Time(s):
User: systemalert - Unknown - 46 Time(s):
User: test - Unknown - 46 Time(s):
User: text-news - Unknown - 46 Time(s):
User: updates - Unknown - 46 Time(s):
User: vanzari - Unknown - 46 Time(s):
User: webmaster - Unknown - 92 Time(s):
User: whatsup - Unknown - 46 Time(s):
User: wordpress - Unknown - 46 Time(s):

読んで頂いて有り難うございます!