気ままにSE備忘録

iptables

最終更新:

knowledge_library

- view
メンバー限定 登録/ログイン

パケットフィルタリング(Netfilter)の流れ

1.パケットの検査(Checksum and sanity)
チェックサムを調査。ここで引っかかるとパケットは破棄される
2.PREROUTING
パケットのリダイレクト等、ネットワークインターフェースから送られて来たパケットに対して、アドレスの変換などの処理を行う
3.ROUTING
ルーティングを行う。パケットの終点アドレスを調べて、それに従ってパケットの送り先を決定する
4.FORWARD
ネットワークインターフェースから渡されたパケットの転送を行う
5.INPUT
ローカルプロセスへのパケット配送を行う
6.OUTPUT
ローカルプロセスからネットワークインターフェースへパケット送信。
7.POSTROUTING
ネットワークに出力されるパケットに対しての処理を行う。アドレス変換など

フィルタリングの範囲

  • 通信元のホスト
  • 通信先のホスト
  • 利用するプロトコル(サービス)
  • パケットが届いた物理インターフェース

iptablesインストール

#yum
  • y install iptables iptables-ipv6 ←IPv6版

iptables概要

Service Name iptables ip6tables
Control Program /sbin/iptables /sbin/ip6tables
Configuration files /etc/sysconfig/iptables
/etc/sysconfig/iptables-config
/etc/sysconfig/ip6tables
/etc/sysconfig/ip6tables-config
Document files /user/share/doc/iptables-1.4.7
Lock File /var/lock/subsys/iptables /var/lock/subsys/iptables
Control script /etc/init.d/iptables /etc/init.d/ip6tables
Script parameters start stop restart fore^reload condrestart try-restart status panic save
Startup 2 3 4 5 / 08 92

設定


/etc/sysconfig/iptables
 *filter      (1)
:INPUT ACCEPT [0:0]    (2)
:FORWARD ACCEPT [0:0]  (3)
:OUTPUT ACCEPT [0:0]   (4)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    (5)
-A INPUT -p icmp -j ACCEPT  (6)
-A INPUT -i lo -j ACCEPT   (7)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   (8)
-A INPUT -j REJECT --reject-with icmp-host-prohibited   (9)
-A FORWARD -j REJECT --reject-with icmp-host-prohibited   (10)
COMMIT    (11)

/etc/sysconfig/ip6tables
*filter   (1)
:INPUT ACCEPT [0:0]    (2)
:FORWARD ACCEPT [0:0]    (3)
:OUTPUT ACCEPT [0:0]    (4)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    (5)
-A INPUT -p icmp -j ACCEPT    (6)
-A INPUT -i lo -j ACCEPT    (7)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT    (8)
-A INPUT -j REJECT --reject-with icmp-host-prohibited      (9)
-A FORWARD -j REJECT --reject-with icmp-host-prohibited      (10)
COMMIT    (11)

(1)(11)設定の開始と終了
(2)〜(4)ポリシーの設定
(2)はINPUT,(3)はFORWAED,(4)はOUTPUTの各ポリシー許可
(5)〜(7)標準で許可する通信の設定
(5)コネクションを管理するstateモジュールに対する設定で、いったんコネクションを解説を許可した通信は、その後の通信を継続的に許可する事をさしている
(6)icmp,icmpv6パケットを許可しています
(7)ネットワークインタフェースloに送られて来たパケッットへのアクセス、ローカルループバックアドレスを許可している
(8)通信許可の設定
自身で動作しているSSHサービスに対して通信許可を設定
(9)(10)INPUTとFORWARDの実質的なポリシー
(9)は自身に向けた通信のうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。サービスの公開はこれ以前に設定する必要があります。
(10)このサーバーをルータとして転送されるパケットのうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。

TCPの特定ポートへの接続許可

-A INPUT -m state --state NEW -m tcp -p tcp --dport [port番号] -j ACCEPT

特定の相手からの、TCPの特定ポートへの接続許可

-A INPUT -m state --state NEW -m tcp -p tcp -s [addr]  --dport [port番号] -j ACCEPT

UDPの特定ポートへの接続許可

-A INPUT -m state --state NEW -m tcp -p udp --dport [port番号] -j ACCEPT

特定の相手からの、UDPの特定ポートへの接続許可

-A INPUT -m state --state NEW -m udp -p tcp -s [addr]  --dport [port番号] -j ACCEPT

iptablesコマンド

チェインの作成

# iptables -t <filter|nat|mangle>-N <chain>

チェインの削除

# iptables -t <filter|nat|mangle>-X <chain>

チェイン名の変更

# iptables -t <filter|nat|mangle>-E <chain>

ルールの削除

# iptables -t <filter|nat|mangle>-F <chain> 省略した場合全て削除

全体ポリシーの設定

# iptables -t <filter|nat|mangle>-p <chain> <target>

ルールの追加

# iptables -t <filter|nat|mangle>-A <chain> <rule> [<option>]

TCP/UDPルールの追加

# iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.5 --deport 22 -j

ルールの挿入

ルールの一覧確認

# iptables -L -n | -v | --line-number

ルールの追加

# iptables -I 

ルールの削除

# iptables -D

ルールの修正

# iptables -R

ルールの保存

# service iptables save

TCP Wrapper

  • アクセス許可ファイル /etc/hosts.allow
  • アクセス拒否ファイル /etc/hosts.deny
sshd: 192.168.1.10
ウィキ募集バナー