fc2ブログ
Dies irae

  Top > セキュリティ > ファイアウォールの設定【iptables】  

ファイアウォールの設定【iptables】

2012 - 08/25 [Sat] - 15:34

FWの設定です。今回はLinux標準の iptables について。
Ubuntuには別で ufw というFWツールがあるので、基本的には操作が簡単な ufw を使用することをオススメします。
今回はCentOSでの話です。

◆サービスの起動
# /etc/init.d/iptables start

自動起動するように
# chkconfig iptables on


◆よく使うコマンド

現在の設定を確認
(ルールは上から順に有効)
# iptables -L -n
ルールの追加# iptables -A INPUT -i lo -j ACCEPT
//ローカルホストからのパケットを全て許可
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
//http のパケットの許可(ポートの開放)
ルールの削除# iptables -D INPUT -p tcp --dport 80 -j ACCEPT
//http のパケットの拒否
設定の保存
(これをしないと再起動した時に設定が無効)
# service iptables save



◆iptablesの書式

# iptables [コマンド] [チェイン] [ルール] [ターゲット] [オプション]

コマンド-Aチェインにルールを追加
-Dチェイン内の指定したルールを削除
-Eチェイン名の変更
-Fチェイン内のルールを全て変更
-Lルールのリスト表示
-Pチェインのポリシーを変更
主なチェインINPUT入力パケット
OUTPUT出力パケット
FORWARD転送パケット
主なルール-s IPアドレス送信元のIPアドレス
-d IPアドレス送信先のIPアドレス
-pプロトコルプロトコルの種類(tcp, udp, icmp, allから選択)
-i インターフェース入力インターフェース名
-o インターフェース出力インターフェース名
-j ターゲットターゲット
--sport送信元のポート番号
--dport送信先のポート番号
ターゲットACCEPTパケットの通過許可
DROPパケットを破棄
REJECTパケットを破棄(送信元にICMPパケットを送らない)
REDIRECTパケットを転送(送信元にICMPパケットで通知)



◆具体的な使用
NetBIOS : 137, 138, 139 / tcp, udp
に対して許可を出す場合

# iptables -I INPUT 5 -p udp --dport 137 -j ACCEPT
# iptables -I INPUT 5 -p tcp --dport 137 -j ACCEPT
# iptables -I INPUT 5 -p udp --dport 138 -j ACCEPT
# iptables -I INPUT 5 -p tcp --dport 138 -j ACCEPT
# iptables -I INPUT 5 -p udp --dport 139 -j ACCEPT
# iptables -I INPUT 5 -p tcp --dport 139 -j ACCEPT
# service iptables save

ちなみに tcp と udp をまとめて all で設定できないかと試したところ、all には icmp も入り、ICMPはポート指定できないのでerrorになります。面倒ですが両方設定しましょう。

-A でなく -I で挿入しているのは、私の環境では最後に「全てのパケットを破棄」する設定が書いてあるからです。iptables の設定は上から順に優先されるので、「全てのパケットを破棄」の後ろに何か許可設定を書いても意味がありません。「全てのパケットを破棄」する設定がなければ普通に -A でOKです。

すべて拒否する設定は
# iptables -A INPUT -p all -j REJECT --reject-with icmp-host-unreachable

です。


◆確認
nmapで調べる場合は「nmapの使い方」を参考にしてください。
# yum install nmap

でインストールできます。
今回は別のネットワーク監視ツール「iptstate」をインストールします。topコマンドのようなツールです。

$ sudo yum install iptstate

起動は
$ sudo iptstate

表示の切り替えコマンド

d   カラムのサイズを動的に変更して、古いデフォルトのサイズを使用する
f   loopback でフィルタリングする
l   IPアドレスの中で DNS を探している順にする
m   ホスト名を切り取った形でフィルタリングする
n   DNS に関連した表示にする
q   終了する
r   逆順に並び替える
space   表示をすぐに更新する



◆iptables 初期設定解説
iptables はデフォルトではこのような初期設定になっていると思います。
各行を順に解説します。
iptables.png


1行目:established(接続が確立している)なパケットと、related(接続を許可したパケットのプロトコルに関連のあるftp-dataのようなパケット)の接続を許可
2行目:pingを通すか通さないかです。
3行目「iptables –L –n –v」とオプションをつけると分かりますが、これは「lo」インタフェースを通るパケットを通す、という設定です。
4行目:SSHです。
5行目:上記以外のアクセスを全て排除します。


◆ログ出力先の指定
異常なログを別で出力します。

# emacs /etc/rsyslog.conf

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
kern.debug /var/log/iptables_reject.log
# Log anything (except mail) of level info or higher.



編集したら再起動
#/etc/init.d/rsyslog restart

ログの取得をiptablesに追記。ターゲットLOGはREJECTの前に挿入してください。
#iptables -I INPUT 5 -j LOG --log-level debug --log-prefix '[REJECT]:'
#service iptables save



ソース:
iptables パケットフィルタリング
CentOS 5.6 iptablesのログ出力を行う
IP Tablesの状態をTop形式で表示するiptstate

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice

検索フォーム

カテゴリ

最新記事