0.1.3 • Published 5 years ago

dynamic-iptables v0.1.3

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Dynamic Iptables

Dynamic Iptables is a Node.js module and CLI tool that generate iptables rules by DNS names.

Installation

> npm install dynamic-iptables --save

or for CLI

> npm install -g dynamic-iptables

CLI

Getting help

> dynamic-iptables --help

# Usage: dynamic-iptables [options]
# 
# Options:
#  -V, --version          output the version number
#  -m, --multiport        add multiport to iptables command
#  -c, --chain <chain>    defines chain to apply rules
#  -r, --recreate-chain   remove and create chain
#  -p, --proto <proto>    defines protocol tcp|udp
#  --dport <dport>        defines dport
#  -s, --source <source>  defines source to rules
#  -j, --target <target>  defines target to ACCEPT|DROP|REJECT|RETURN
#  -h, --help             output usage information

Generating rules

> dynamic-iptables -s 192.168.1.1 -p tcp -m --dport 80,443 -j ACCEPT github.com
# iptables -I FORWARD -s 192.168.1.1 -d 192.30.253.112 -p tcp -m multiport --dport 80,443 -j ACCEPT

API

Generating new chain and rules

const DynIptables = require('dynamic-iptables')

const remove = DynIptables.removeChain('dyn-iptables')
const create = DynIptables.createChain('dyn-iptables')

const options = {
  chain: 'dyn-iptables',
  proto: 'tcp',
  dport: '80,443',
  source: '192.168.3.0/24',
  target: 'ACCEPT',
  multiport: true
}

DynIptables.resolveDnsName('registry.npmjs.org', (err, res) => {
  if (err) return console.log(err)
  DynIptables.createIptablesRule(res, options, (err, rules) => {
    if (err) return console.log(err)
    console.log(remove)
    console.log(create)
    return rules.map((rule) => {
      return console.log(rule)
    })
  })
})

/*
iptables -X dyn-iptables
iptables -N dyn-iptables
iptables -I dyn-iptables -s 192.168.3.0/24 -d 104.16.21.35 -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -I dyn-iptables -s 192.168.3.0/24 -d 104.16.25.35 -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -I dyn-iptables -s 192.168.3.0/24 -d 104.16.17.35 -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -I dyn-iptables -s 192.168.3.0/24 -d 104.16.23.35 -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -I dyn-iptables -s 192.168.3.0/24 -d 104.16.27.35 -p tcp -m multiport --dport 80,443 -j ACCEPT
...
*/