hiro1357 icon

nfqueue-sample.rb

hiro1357 | PRO | 01/09/18 12:49:49 PM UTC | 0 ⭐ | 341 👁️ | Never ⏰ | []
Ruby |

970 B

|

None

|

0 👍

/

0 👎

#!/usr/bin/ruby
 
# # 下記のような手順で環境を準備する
# 
# apt-get install -y ruby2.3-dev libnfnetlink-dev libnetfilter-queue-dev iptables
# gem install nfqueue
# 
# # フィルターにNFQUEUEを追加する。キュー番号を0とする。
# iptables -A OUTPUT -p tcp -m state --state NEW -j NFQUEUE --queue-num 0 --queue-bypass
# 
# # iptablesの設定を永続化する場合は下記をインストールする
# apt-get install iptables-persistent
 
 
require 'nfqueue'
 
# 0番のキューにパケットが到着した時
Netfilter::Queue.create(0) do |packet|
 
  # パケットの内容を取得
  data = packet.data.bytes
 
  # 内容を解析してポート番号を取り出す
  tcpport = data[20]*256 + data[21]
 
  # もしポート番号が80なら
  if tcpport == 80
 
    # パケットを転送
    Netfilter::Packet::ACCEPT
 
  # でなければ
  else
 
    # パケットを捨てる
    Netfilter::Packet::DROP
 
  end
end

Comments