Advertisement
hiro1357

nfqueue-sample.rb

Jan 9th, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.97 KB | None | 0 0
  1. #!/usr/bin/ruby
  2.  
  3. # # 下記のような手順で環境を準備する
  4. #
  5. # apt-get install -y ruby2.3-dev libnfnetlink-dev libnetfilter-queue-dev iptables
  6. # gem install nfqueue
  7. #
  8. # # フィルターにNFQUEUEを追加する。キュー番号を0とする。
  9. # iptables -A OUTPUT -p tcp -m state --state NEW -j NFQUEUE --queue-num 0 --queue-bypass
  10. #
  11. # # iptablesの設定を永続化する場合は下記をインストールする
  12. # apt-get install iptables-persistent
  13.  
  14.  
  15. require 'nfqueue'
  16.  
  17. # 0番のキューにパケットが到着した時
  18. Netfilter::Queue.create(0) do |packet|
  19.  
  20.   # パケットの内容を取得
  21.   data = packet.data.bytes
  22.  
  23.   # 内容を解析してポート番号を取り出す
  24.   tcpport = data[20]*256 + data[21]
  25.  
  26.   # もしポート番号が80なら
  27.   if tcpport == 80
  28.  
  29.     # パケットを転送
  30.     Netfilter::Packet::ACCEPT
  31.  
  32.   # でなければ
  33.   else
  34.  
  35.     # パケットを捨てる
  36.     Netfilter::Packet::DROP
  37.  
  38.   end
  39. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement