CentOS6 の Netfilter を中心に ゆるくふんわりと調べてみました

Similar documents
平成22年度「技報」原稿の執筆について

SCREENOS NAT ScreenOS J-Series(JUNOS9.5 ) NAT ScreenOS J-Series(JUNOS9.5 ) NAT : Destination NAT Zone NAT Pool DIP IF NAT Pool Egress IF Loopback Grou

R80.10_FireWall_Config_Guide_Rev1

最も一般的な手法: ファイアウォールによってノード間の MPI 通信がブロックされた場合の対応方法

アライドテレシス・コアスイッチ AT-x900 シリーズとディストリビューションスイッチ AT-x600 シリーズで実現するACLトラフィックコントロール

ip nat outside source list コマンドを使用した設定例

PowerPoint プレゼンテーション

センサーデバイスへの仮想IP割り当て実験

I TCP 1/2 1

Packet Tracer: 拡張 ACL の設定 : シナリオ 1 トポロジ アドレステーブル R1 デバイスインターフェイス IP アドレスサブネットマスクデフォルトゲートウェイ G0/ N/A G0/

ASA ネットワーク アドレス変換構成のトラブルシューティング

オペレーティング システムでの traceroute コマンドの使用

PIM-SSMマルチキャストネットワーク

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

2

第1回 ネットワークとは

Netfilter Linux Kernel IPv4 IPv6 Ethernet iptables IPv4 ip6tables IPv6 ebtables Ethernet API Kernel

SRXシリーズおよびJシリーズのネットワークアドレス変換

untitled

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

シナリオ:DMZ の設定

IP IPv4-IPv6

MENU 키를 누르면 아래의 화면이 나타납니다

IPv4aaSを実現する技術の紹介

アライドテレシス・コアスイッチ AT-x900 シリーズ で実現するエンタープライズ・VRRPネットワーク

インターネットVPN_IPoE_IPv6_fqdn

ヤマハ ルーター ファイアウォール機能~説明資料~

Managed Firewall NATユースケース

160311_icm2015-muramatsu-v2.pptx

Catalyst 3850 スイッチのセキュリティ ACL TCAM 枯渇のトラブルシューティング

Maser - User Operation Manual

Web 認証拡張機能簡易ドキュメント

はじめに このドキュメントではftServerに関する障害調査を行う際に 必要となるログ データの取得方法を説明しています ログ データの取得には 初期解析用のデータの取得方法と 詳細な調査を行うときのデータ取得方法があります 特別な理由でOS 側のログが必要となった場合には RHELログの取得につ

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

Agenda IPv4 over IPv6 MAP MAP IPv4 over IPv6 MAP packet MAP Protocol MAP domain MAP domain ASAMAP ASAMAP 2

改版履歴 本書の改版履歴は以下のとおりです 日付 改版理由 変更箇所 版数 2014/09/04 初版発行 版 2015/03/30 第 1.1 版に改訂 対象 OS 追加 1.1 版 2015/07/10 第 1.2 版に改訂 対象 OS 追加 1.2 版 2015/09/04 第 1

障害およびログの表示

InfoPrint 5577/5579 ネットワーク設定ガイド(はじめに、目次)

Microsoft PowerPoint ppt [互換モード]

2

McAfee Firewall for Linux リリース ノート

nakayama15icm01_l7filter.pptx

一般的に使用される IP ACL の設定

第1回 ネットワークとは

設定例集_Rev.8.03, Rev.9.00, Rev.10.01対応

p_network-management_old-access_ras_faq_radius2.xlsx

ヤマハ ルーター ファイアウォール機能~説明資料~

Introduction Purpose This training course describes the configuration and session features of the High-performance Embedded Workshop (HEW), a key tool

1 IPv6 WG OS SWG PCOSIPv6 Windows Vista 2 3 KAMEUSAGIMacOSX IPv6 2

外部ルート向け Cisco IOS と NXOS 間の OSPF ルーティング ループ/最適でないルーティングの設定例

帯域を測ってみよう (適応型QoS/QoS連携/帯域検出機能)

IPCOMとWindows AzureのIPsec接続について

VRF のデバイスへの設定 Telnet/SSH アクセス

Teradici Corporation # Canada Way, Burnaby, BC V5G 4X8 Canada p f Teradici Corporation Teradi

IP.dvi

2011 NTT Information Sharing Platform Laboratories

_JANOG44_LINE_tsuchiya

BizBox Switch SWX G Rev ( メーカー Rev 含む ) ファームウェアリリースノート 以下のとおり機能追加 仕様変更 機能改善が行われました SWX2300 Rev からの変更点 機能追加 [1] IEEE802.1X

設定手順

00.目次_ope

SRX IDP Full IDP Stateful Inspection 8 Detection mechanisms including Stateful Signatures and Protocol Anomalies Reassemble, normalize, eliminate ambi

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

Xen入門 ppt

Xen入門 ppt

VLAN.dvi

---> 1 <------IP configurationの1を選択 2. IP address: Subnet mask: > 2 < IP addressの1を選択 Enter IP address: 192.

ループ防止技術を使用して OSPFv3 を PE-CE プロトコルとして設定する

ScreenOS 5.0 ScreenOS 5.0 Deep Inspection VLAN NetScreen-25/-50/-204/-208 HA NetScreen-25 HA Lite NetScreen-25 NetScreen-50) ALG(Application Layer Gat

Nagios XI - SNMPでのLinux監視

ict2-.key

NAC(CCA): ACS 5.x 以降を使用した Clean Access Manager での認証の設定

Juniper Networks Corporate PowerPoint Template

FW Migration Guide (Single)

Cisco ASA Firepower ASA Firepower

橡c03tcp詳説(3/24修正版).PDF

untitled

パケットモニター (Wireshark) の使い方 第 1 版 1.Wireshark とは ネットワーク上 (LAN ケーブルに流れている ) のパケットを取得して その中の情報を画面に表示するソフトウェア (LAN アナライザーまたはパケットモニター ) の 1 つに Wiresh

Transcription:

Netfilter に関するエトセトラ 2012/12/21 ENOG18 ( 株 ) 創風システム外山文規

CentOS6 の Netfilter を中心に ゆるくふんわりと調べてみました

Netfilter に関するエトセトラ Netfilterの簡単なおさらい CentOS6のNetfilter CentOS6.1 以降のNetfilter kernel2.6.32 以降のNetfilter

Netfilter の簡単なおさらい Netfilter とは ネットワークパケットをインターセプトして操作するための Linux カーネル内でフック処理を提供するフレームワーク

Netfilter の簡単なおさらい iptablesとは Linuxカーネル内のNetfilterのフレームワークを制御するためのコマンドラインツール

図にするとこんな感じ ローカルプロセス パケット パケット Netfilter Linux カーネル ルールを設定 iptables コマンド パケット ネットワーク パケット パケットをドロップしたり 書き換えたり

Netfilter できること フィルタリング 特定の通信をブロックしたり通過させたり NAT ネットワークアドレス変換したり その他 特定のプロトコルのオプションを変更したり

iptables を設定するときの構成要素 テーブル フィルタ NAT 等の役割ごとに使い分ける チェイン ビルドインチェインとユーザ定義の独自チェインがある マッチ ルールを適用するパケットの条件定義 ターゲット 該当するパケットに対して行うアクション

テーブルとチェインのフロー図 ローカルプロセス filter, mangle INPUT filter, nat, mangle, raw OUTPUT ルーティング filter, mangle FORWARD ルーティング nat, mangle, raw PREROUTING nat, mangle POSTROUTING 受信パケット 送信パケット ネットワーク

Connection Tracking パケットを追跡して状態を監視する機構 追跡が難しいプロトコルはヘルパーを用意されている (FTP IRC etc...)

CentOS5 -> CentOS6 バージョンの変化 kernel 2.6.18 -> 2.6.32 iptables 1.3.5 -> 1.4.7

CentOS5 -> CentOS6 Red Hat Enterprise Linux 6 移行計画ガイドによると

CentOS5 -> CentOS6 ん? これだけ?

調べてみた CentoOS5 と 6 の man iptables の差分 (1.3.5-9.1 と 1.4.7-3 の差分 ) kernel newbies から http://kernelnewbies.org iptablesのsrpmから RHEL 5.x 6.xのリリースノート

調査した結果 connection tracking が変わってた ip_conntrack -> nf_conntrack SECMARK 以外にも機能拡張されいていた TPROXY target TCPOPTSTRIP target etc

kernel newbies(2.6.19->2.6.32) Linux 2 6 19(http://kernelnewbies.org/Linux_2_6_19) なし Linux 2 6 20(http://kernelnewbies.org/Linux_2_6_20) Add full NAT support for nf_conntrack Add IRC helper port, FTP NAT helper port, SIP helper port, TFTP helper port, PPTP helper port, H.323 helper port. NetBIOS name service helper port, SNMP NAT helper port sysctl and /proc compatibility with old connection tracking, tatistics. x_tables: add port of hashlimit match for IPv4 and IPv6 and add NFLOG target ebtables: add --snap-arp option Linux 2 6 21(http://kernelnewbies.org/Linux_2_6_21) NAT: optional source port randomization support Add IPv6-capable TCPMSS target support Add SANE connection tracking helper Introduces match for Mobility Header (MH) described by Mobile IPv6 specification (RFC3775)

kernel newbies(2.6.19->2.6.32) Linux 2 6 22(http://kernelnewbies.org/Linux_2_6_22) Remove IPv4 only connection tracking/nat Add support for user mode STP ipt_dnat: accept port randomization option Linux 2 6 23(http://kernelnewbies.org/Linux_2_6_23) nf_conntrack: UDPLITE support, introduce extension infrastructure, use extension infrastructure for helper, remove old memory allocator of conntrack, use hashtable for expectations, nf_conntrack_helper: use hashtable for conntrack helpers nf_nat: add reference to conntrack from entry of bysource list, use extension infrastructure Add u32 match x_tables: add TRACE target, add connlimit match Linux 2 6 24(http://kernelnewbies.org/Linux_2_6_24) Add xt_time match: a "time" match, which allows you to match based on the packet arrival time (at the machine which netfilter is running) or departure time/date (for locally generated packets)

kernel newbies(2.6.19->2.6.32) Linux 2 6 25(http://kernelnewbies.org/Linux_2_6_25) Add CONFIG_NETFILTER_ADVANCED option. x_tables: add TCPOPTSTRIP target. Merge ipt_tos into xt_dscp., merge ipt_tos into xt_dscp. IPv6 capable xt_tos v1 target., IPv6 capable xt_tos v1 match. ip_tables: remove obsolete SAME target. x_tables: add RATEEST target., add rateest match ctnetlink: add support for secmark. Linux 2 6 26(http://kernelnewbies.org/Linux_2_6_26) nf_conntrack: add DCCP protocol support nf_nat: add UDP-Lite support, add DCCP protocol support, add SCTP protocol support

kernel newbies(2.6.19->2.6.32) Linux 2 6 27(http://kernelnewbies.org/Linux_2_6_27) ebtables: add IPv6 support, ctnetlink: add full support for SCTP to ctnetlink ip_tables: add iptables security table for mandatory access control rules ip6_tables: add ip6tables security table accounting rework: ct_extend + 64bit counters Linux 2 6 28(http://kernelnewbies.org/Linux_2_6_28) Transparent proxy support Enable netfilter in netns xt_recent: IPv6 support Linux 2 6 29(http://kernelnewbies.org/Linux_2_6_29) なし

kernel newbies(2.6.19->2.6.32) Linux 2 6 30(http://kernelnewbies.org/Linux_2_6_30) Combine ipt_ttl and ip6t_hl source Combine ipt_ttl and ip6t_hl source iptables: lock free counters sysctl support of logger choice xtables: add cluster match, add LED trigger target Linux 2 6 31(http://kernelnewbies.org/Linux_2_6_31) conntrack: add support for DCCP handshake sequence to ctnetlink conntrack: optional reliable conntrack event delivery nf_ct_tcp: TCP simultaneous open support passive OS fingerprint xtables match xt_nfqueue: queue balancing support Linux 2 6 32(http://kernelnewbies.org/Linux_2_6_32) なし

man iptables の diff CentOS5 の man iptables CentOS6 の man iptables ほとんどは オプションの記述を変えたり 説明文の修正によるもの

nf_conntrack? ip_conntrackの後継 IPv6への対応強化 kernel2.6.15より追加 kernel2.6.22からはip_conntrackが削除

CentOS6 で追加された機能 TRACE target IP パケットがテーブルとルールをどう通過するのか追跡するために使用 TCPOPTSTRIP target TCP パケットから TCP オプションを取り除いて NO-OPS に置き換える Window scaling option の削除が目的?

CentOS6 で追加された機能 LED target ルールに一致したら LED を点灯する TPROXY target REDIRECT 類似した機能で 透過プロキシを行う場合に使用する Netfilter のコネクショントラッキングや NAT に依存しない

CentOS6 で追加された機能 NFLOG target ULOG の後継 マッチしたパケットについて ユーザ空間でのロギングを提供してくれる CHECKSUM target checksum offload に対応してない古いアプリケーション (bootpc など ) の場合にチェックサムを計算してヘッダに書き込む

CentOS6 で追加された機能 RATEEST target 流れているパケットの BPS/PPS を計測 レートの比較を行い負荷ベースのマルチパスルーティングを実現する これ以外にも機能改善されています

# Estimate outgoing rates iptables -t mangle -A POSTROUTING -o eth0 -j RATEEST --rateest-name eth0 \ --rateest-interval 250ms --rateest-ewma 0.5s iptables -t mangle -A POSTROUTING -o ppp0 -j RATEEST --rateest-name ppp0 \ --rateest-interval 250ms --rateest-ewma 0.5 # Mark based on available bandwidth iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp \ -m rateest --rateest-delta --rateest1 eth0 --rateest-bps1 2.5mbit --rateest-gt \ --rateest2 ppp0 --rateest-bps2 2mbit -j CONNMARK --set-mark 1 iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp \ -m rateest --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt \ --rateest2 eth0 --rateest-bps2 2.5mbit -j CONNMARK --set-mark 2 iptables -t mangle -A balance -j CONNMARK --restore-mark

CentOS6 で削除された機能 削除された target BALANCE IPMARK TARPIT XOR 削除された match account childlevel condition connrate dstlimit ipv4options mport nth osf

CentOS6.1 以降で追加された機能 AUDIT target ルールに一致したら audit のログに記録する

ipset という新しいツール CentOS では 6.3 からパッケージが追加 kernel 2.6.39 で追加された機能

ipset とは? newbies より ipset の紹介をざっくり訳 1. IPset と呼ばれるネットワークリソースグループを定義できる ( ネットワークリソース = IPv4/v6 TCP/UDP ポート番号 IP と MAC のペア IP とポート番号のペアなど ) 2. IPset で定義したグループは iptables のルールとして使う 3. 普通に iptables のルールを定義するより パフォーマンスが向上する 但し メモリ消費は多い 4. 複数の IP アドレスまたはポート番号とのマッチングが必要な場合に 効果がある

ipset とは? newbies より ipset の紹介をざっくり訳 1. IPset と呼ばれるネットワークリソースグループを定義できる ( ネットワークリソース = IPv4/v6 TCP/UDP ポート番号 IP と MAC のペア IP とポート番号のペアなど ) Blacklist や Whitelist で 2. IPset で定義したルールは iptables のルールとして使う 3. 普通にiptablesのルールを定義するより パフォーマンスが向上する 使うとにとても幸せ但し メモリ消費は多い 4. 複数のIPアドレスまたはポート番号とのマッチングが必要な場合に効果がある

ipset のパフォーマンス すいませんベンチマークとってないです 参考 : Mass-blocking IP addresses with ipset http://daemonkeeper.net/781/mass-blocking-ip-addresses-with-ipset/ Netfilter Performance Testing http://people.netfilter.org/kadlec/nftest.pdf

ルール数による性能への影響

ipset のインストール CentOS6 なら yum で # yum install ipset

IPset の使い方 設定の流れ 1. ipset create で セット を作成 2. ipset add でエントリを追加 3. iptables コマンドで セット を使用したルールを追加

IPset でセットを作成 # ipset create セット名セットタイプ [ オプション ] # ipset add セット名エントリ [ オプション ] 例 ) # ipset create DenyIP hash:ip timeout 0 # ipset add DenyIP 192.168.1.10 timeout 30 # ipset list DenyIP

セットタイプ 用途に合わせてセットタイプ指定します セットタイプ (ipset add する時のフォーマット ) bitmap:ip (ip fromip-toip ip/cidr) bitmap:ip,mac (ip[,macaddr]) bitmap:port (port fromport-toport) hash:ip (ip) hash:net (ip[/cidr]) hash:ip,port (ip,[proto:]port) hash:net,port (ip[/cidr],[proto:]port) hash:ip,port,ip (ip,[proto:]port,ip) hash:ip,port,net (ip,[proto:]port,ip[/cidr]) hash:net,iface (ip[/cid,[physdev:]iface) list:set (setname [ { before after } setname ])

セットを iptables のルールとして適用 マッチの条件として使用 (set match) 例 ) DenyIP セットに一致した送信元を DROP # iptables -A INPUT -m set --match-set DenyIP src -j DROP セット 内のエントリを変更 (SET target) 例 ) ssh にアクセスに来た接続元を DenyIP セットに追加 # iptables -A INPUT -p tcp --dport 22 -j SET --add-set DenyIP src

ipset の保存 復元 保存 # ipset save > filename 復元 # ipset restore < filename

kernel newbies(2.6.33->3.7) Linux 2 6 33(http://kernelnewbies.org/Linux_2_6_33) なし Linux 2 6 34(http://kernelnewbies.org/Linux_2_6_34) nf_conntrack_sip: add T.38 FAX support, add TCP support nf_conntrack: support conntrack templates, add support for "conntrack zones" nf_nat_sip: add TCP support ctnetlink: add zone support ebtables: add CONFIG_COMPAT support xtables: add CT target Linux 2 6 35(http://kernelnewbies.org/Linux_2_6_35) なし

kernel newbies(2.6.33->3.7) Linux 2 6 36(http://kernelnewbies.org/Linux_2_6_36) Add CHECKSUM target Add xt_cpu match ipt_log/ip6t_log: add option to print decoded MAC header xtables: idletimer target implementation xt_ipvs (netfilter matcher for IPVS) Linux 2 6 37(http://kernelnewbies.org/Linux_2_6_37) Added IPv6 support to the TPROXY target Linux 2 6 38(http://kernelnewbies.org/Linux_2_6_38) なし

cpu match どの cpu コアで処理しているかを判定マルチコアに対応してないレガシーアプリケーションをスケールさせる使用する 例 ) iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 2 -j REDIRECT --to-port 8082 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 3 -j REDIRECT --to-port 8083

idletimer target インタフェースが一定時間アイドル状態になっているかを特定するのに使用

kernel newbies(2.6.33->3.7) Linux 2 6 39(http://kernelnewbies.org/Linux_2_6_39) IPset Audit target to record accepted/dropped packets xtable: connlimit revision 1 xtable: speedup compat operations xtable: "set" match and "SET" target support xt_addrtype: ipv6 support xt_classify: add ARP support, allow CLASSIFY target on any table xt_conntrack: support matching on port ranges ebt_ip6: allow matching on ipv6-icmp types/codes nf_conntrack: nf_conntrack snmp helper nf_conntrack_tstamp: add flow-based timestamp extension

kernel newbies(2.6.33->3.7) Linux 3.0(http://kernelnewbies.org/Linux_3.0) ipset: SCTP, UDPLITE support added Linux 3.1(http://kernelnewbies.org/Linux_3.1) Add SELinux context support to AUDIT target ipset: support range for IPv4 at adding/deleting elements for hash:*net* types Linux 3.2(http://kernelnewbies.org/Linux_3.2) なし Linux 3.3(http://kernelnewbies.org/Linux_3.3) Add extended accounting infrastructure over nfnetlink, which aims to allow displaying real-time traffic accounting without the need of complicated and resource-consuming implementation in user-space Add nfacct match to support extended accounting Add "rpfilter" reverse path filter match support, allows to match packets whose replies would go out via the interface the packet came in

nfacct nfacctツールと組み合わせることで 条件一致したパケットのアカウンティングができる 例 ) iptables -I INPUT -p tcp --sport 80 -m nfacct --nfacct-name http-traffic iptables -I OUTPUT -p tcp --dport 80 -m nfacct --nfacct-name http-traffic

rpfilter match Reverse Path Filter の検証 送信元アドレスをルーティングテーブルで見たときに同じインターフェイスから出ていくかを検証

kernel newbies(2.6.33->3.7) Linux 3.4(http://kernelnewbies.org/Linux_3.4) Add timeout extension. This allows you to attach timeout policies to flow via the connection tracking target ctnetlink: add NAT support for expectations class ipset: The "nomatch" keyword and option is added to the hash:*net* types, by which one can add exception entries to sets Merge ipt_log and ip6_log into xt_log Linux 3.5(http://kernelnewbies.org/Linux_3.5) Add xt_hmark target for hash-based skb marking bridge: optionally set indev to vlan hashlimit: byte-based limit mode ipvs: add support for sync threads Remove ip_queue support Linux 3.6(http://kernelnewbies.org/Linux_3.6) Add fail-open support Add user-space connection tracking helper infrastructure

kernel newbies(2.6.33->3.7) Linux 3.7(http://kernelnewbies.org/Linux_3.7) Add protocol independent NAT core Add IPv6 MASQUERADE target Add IPv6 NETMAP target Add IPv6 REDIRECT target Add IPv6 NAT support Support IPv6 in FTP NAT helper Support IPv6 in IRC NAT helper Support IPv6 in SIP NAT helper Support IPv6 in amanda NAT helper Add stateless IPv6-to-IPv6 Network Prefix Translation target Remove xt_notrack

参考 : http://www.netfilter.org/ http://www.at.netfilter.org/patch-o-matic/pom-extra.html http://www.frozentux.net/documents/iptables-tutorial/ http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/index.html http://ja.wikipedia.org/wiki/iptables http://member.wide.ad.jp/tr/ http://kernelnewbies.org/ https://access.redhat.com/knowledge/docs/red_hat_enterprise_linux/?locale=ja-jp

ご清聴ありがとうございました