tanish-kr's learning log

Learning output log

Infrastructure

iptables

パケットフィルタリング(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&br()/etc/sysconfig/iptables-config /etc/sysconfig/ip6tables&br()/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