Single rulesΒΆ

Example rules for INPUT or OUTPUT chain

In case your script can provide the combo of hostname,port you have to use the tag script_double. If the script returns only a list of hostnames the you have to provide the port for each list element and use the script: tag.

[access_outgoing_ports_tcp_signle]
section_type = general
action = ['drop']
default_chain = OUTPUT
ip_version = ipv4
interface = main
protocol = tcp,udp
#ports = "ports.sh"
set = static_dns_servers4_single


[static_dns_servers4_single]
section_type = ipset
ipset_type = hash:ip,port
set_name = ['static_dns_servers4_single']
set_ips_v4 = ['137.138.16.5,80', '137.138.17.5,443', '172.18.16.5,5550', '172.18.17.5,6598']
set_hostnames = ["script_double:test_port.sh","script_double:test_port_2.sh","agkara-train,6178"]

The section [access_outgoing_ports_tcp_signle] will create a kernel ipset called static_dns_servers4_single_v4 since its set to ipv4.

Output of the scripts

helpers/test_port.sh
itrac5160,443
itrac5161,890
itrac5120,5366
itrac5162,3321
itrac5121,7563
itrac5163,7363
itrac5122,6564
helpers/test_port_2.sh
ALIENDB1,9079
ALIENDB2,1023
ALIENDB3,5547
ALIENDB4,6987
ALIENDB5,6123
ALIENDB7,787
ALIENDB8,443

Kernel ipset

Section name: access_outgoing_ports_tcp_signle
Script  ['test_port.sh']  not in system path
Trying herlpers: /root/linux-firewall/helpers/test_port.sh
Script  ['test_port_2.sh']  not in system path
Trying herlpers: /root/linux-firewall/helpers/test_port_2.sh
Set type is:  hash:ip,port
/usr/sbin/ipset create static_dns_servers4_single_v4 hash:ip,port family inet hashsize 1024 maxelem 65536
Set  static_dns_servers4_single_v4  created
/usr/sbin/ipset add static_dns_servers4_single_v4 10.17.6.55,tcp:3321
/usr/sbin/ipset add static_dns_servers4_single_v4 172.18.17.5,tcp:6598
/usr/sbin/ipset add static_dns_servers4_single_v4 137.138.17.5,tcp:443
/usr/sbin/ipset add static_dns_servers4_single_v4 10.17.6.56,tcp:7363
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.151,tcp:5366
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.155,tcp:6987
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.37.104,tcp:6123
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.153,tcp:6564
/usr/sbin/ipset add static_dns_servers4_single_v4 10.17.6.25,tcp:80
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.154,tcp:1023
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.37.103,tcp:5547
/usr/sbin/ipset add static_dns_servers4_single_v4 10.17.6.54,tcp:890
/usr/sbin/ipset add static_dns_servers4_single_v4 137.138.16.5,tcp:80
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.37.102,tcp:9079
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.163,tcp:443
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.45.152,tcp:7563
/usr/sbin/ipset add static_dns_servers4_single_v4 172.18.16.5,tcp:5550
/usr/sbin/ipset add static_dns_servers4_single_v4 10.17.6.24,tcp:787
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.37.105,tcp:443
/usr/sbin/ipset add static_dns_servers4_single_v4 188.184.185.176,tcp:6178
The logic of the action is the following:
action = ['drop']

If the list has 1 element it means that it will create a single rule for the defined chain. The above section will create two rules in reality one for each protocol tcp,udp

/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set static_dns_servers4_single_v4 dst,dst -j DROP -m comment --comment access_outgoing_ports_tcp_signle
/sbin/iptables -A OUTPUT -o eth0 -p udp -m set --match-set static_dns_servers4_single_v4 dst,dst -j DROP -m comment --comment access_outgoing_ports_tcp_signle

Example using CERN LanDB sets to create an ipset of hash:ip,port

[access_outgoing_infor_ext_services]
description = access to print lables service
section_type = general
action = ['accept']
default_chain = OUTPUT
ip_version = both
interface = main
protocol = tcp
set = landbset_it_db_infor_ext_services
[landbset_it_db_infor_ext_services]
description =  Network set containing Infor external services require by application
section_type = ipset
ipset_type = hash:ip,port
set_name = ["landdb_it_db_infor_ext_svcs"]
netgroup_set_list = ['IT SECURITY FIREWALL ALIENDB,8888','DRUPAL,80']

The output of the above is the following:

Command: " /usr/sbin/ipset list landdb_it_db_infor_ext_svcs_v4 "
Set type is:  hash:ip,port
/usr/sbin/ipset create landdb_it_db_infor_ext_svcs_v4 hash:ip,port family inet hashsize 1024 maxelem 65536
Set  landdb_it_db_infor_ext_svcs_v4  created
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.99.145,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 188.184.37.206,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.99.136,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.99.139,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.99.141,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.47.216,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 188.184.37.205,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 188.184.37.208,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.47.221,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v4 137.138.99.140,tcp:8888
Section name: access_outgoing_infor_ext_services
Command: " /usr/sbin/ipset list landdb_it_db_infor_ext_svcs_v6 "
Set type is:  hash:ip,port
/usr/sbin/ipset create landdb_it_db_infor_ext_svcs_v6 hash:ip,port family inet6 hashsize 1024 maxelem 65536
Set  landdb_it_db_infor_ext_svcs_v6  created
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b49f::100:7,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b50e::100:12,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b50e::100:17,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b0::100:e,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b0::100:d,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b49f::100:5,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b49f::100:2,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b0::100:10,tcp:80
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b49f::100:6,tcp:8888
/usr/sbin/ipset add landdb_it_db_infor_ext_svcs_v6 2001:1458:201:b49f::100:27,tcp:8888
/etc/init.d/ipset save
/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set landdb_it_db_infor_ext_svcs_v4 dst,dst -j ACCEPT -m comment --comment access_outgoing_infor_ext_services
/sbin/ip6tables -A OUTPUT -o eth0 -p tcp -m set --match-set landdb_it_db_infor_ext_svcs_v6 dst,dst -j ACCEPT -m comment --comment access_outgoing_infor_ext_services

Example with ipset triplet

[triplet_set]
section_type = general
action = ['accept']
default_chain = INPUT,OUTPUT
ip_version = ipv4
interface = all
protocol = tcp,udp
set = triplet_ipset
set_directions = src,dst,dst

[triplet_ipset]
section_type = ipset
ipset_type = hash:ip,port,ip
set_name = ['triplet_ip_set']
set_hostnames = ['lxplus,443,agkara-train','syscontrol-dev,5555,pcjcano2','kubernetes-node,80,kubernetes-master']

The output of the above section is the following:

Kernel ipset

/usr/sbin/ipset create triplet_ip_set_v4 hash:ip,port,ip family inet hashsize 1024 maxelem 65536
/usr/sbin/ipset add triplet_ip_set_v4 188.184.94.29,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.92.227,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 128.142.153.55,tcp:80,128.142.147.69
/usr/sbin/ipset add triplet_ip_set_v4 188.184.95.215,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.94.26,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.89.225,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.90.207,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.92.114,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.95.36,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.92.51,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.91.82,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.91.170,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.92.95,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.95.238,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.92.172,tcp:443,188.184.185.176
/usr/sbin/ipset add triplet_ip_set_v4 188.184.93.17,tcp:443,188.184.185.176
/etc/init.d/ipset save

Rules

/sbin/iptables -A INPUT -i eth0 -p tcp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A INPUT -i lo -p tcp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A INPUT -i eth0 -p udp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A INPUT -i lo -p udp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A OUTPUT -o lo -p tcp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set
/sbin/iptables -A OUTPUT -o lo -p udp -m set --match-set triplet_ip_set_v4 src,dst,dst -j ACCEPT -m comment --comment triplet_set

Example using CERN LanDB sets to create an ipset of hash:ip,port,ip

[test_triplet_from_iptables_manager]
section_type = general
action = ['accept']
default_chain = INPUT
ip_version = ipv4
interface = other
protocol = tcp,udp
set = triplet_set
set_directions = src,dst,dst



[triplet_set]
section_type = ipset
ipset_type = hash:ip,port,ip
netgroup_set_list = ['CERNVM-CLUSTER-ESX,tcp:5530,CDS LB','DRUPAL,tcp:6677,FRONTIER-MONITORING']
set_name = ['CERN_TEST_SET_LIST']

The output of the above sections is the following: Kernel ipset

/usr/sbin/ipset create CERN_TEST_SET_LIST_v4 hash:ip,port,ip family inet hashsize 1024 maxelem 65536

/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.67,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.208,tcp:6677,128.142.140.249
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.68,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.206,tcp:6677,128.142.192.174
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.71,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.72,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.208,tcp:6677,128.142.192.174
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.68,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.65,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.206,tcp:6677,188.184.150.138
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.208,tcp:6677,128.142.192.53
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.65,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.205,tcp:6677,128.142.192.53
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.206,tcp:6677,128.142.140.249
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.205,tcp:6677,188.184.150.138
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.67,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.72,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.208,tcp:6677,188.184.150.138
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.205,tcp:6677,128.142.140.249
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.71,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.70,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.66,tcp:5530,188.184.3.51
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.205,tcp:6677,128.142.192.174
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 188.184.37.206,tcp:6677,128.142.192.53
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.66,tcp:5530,188.184.66.111
/usr/sbin/ipset add CERN_TEST_SET_LIST_v4 137.138.234.70,tcp:5530,188.184.3.51
/etc/init.d/ipset save

Rules

/sbin/iptables -A INPUT -i lo -p tcp -m set --match-set CERN_TEST_SET_LIST_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/iptables -A INPUT -i lo -p udp -m set --match-set CERN_TEST_SET_LIST_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager

Example of hash:ip,port,ip using mix of script and network set

In case your script can provide the combo of hostname,port you have to use the tag script_double If you want to return only a list of hostnames then you have to provide the port for each list element and use the script: or netgroup: tags. Please note that last part of each element in the list can only use the script: or **netgroup:**(which extracts hostnames from LanDB) tags and has to return as output a list with single elements

[test_triplet_from_iptables_manager_3]
section_type = general
action = ['accept']
default_chain = OUTPUT,INPUT
ip_version = both
interface = ['main']
protocol = tcp,udp
set = triplet_set_3
set_directions = dst,dst,src


[triplet_set_3]
section_type = ipset
ipset_type = hash:ip,port,ip
set_hostnames = ['script_double:test_port_2.sh,netgroup:IT PES NAGIOS','netgroup:IT SECURITY FIREWALL ALIENDB,8080,script:test_2.sh']
set_name = ['triplet_set_test_3']

The output of the above sections is the following: Kernel ipset v4

/usr/sbin/ipset create triplet_set_test_3_v4 hash:ip,port,ip family inet hashsize 1024 maxelem 65536
Set  triplet_set_test_3_v4  created
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:6987,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:443,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:9079,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:1023,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:9079,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:5547,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:6123,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:787,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:5547,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:1023,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:443,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.185.96.137
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:443,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.184.9.235
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.184.9.236
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.184.9.239
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:6123,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:787,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:8080,188.184.9.234
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.139,tcp:9079,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.140,tcp:1023,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:6987,128.142.157.127
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.216,tcp:787,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:6123,128.142.137.117
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.136,tcp:6987,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.141,tcp:5547,128.142.192.160
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.47.221,tcp:8080,188.184.9.240
/usr/sbin/ipset add triplet_set_test_3_v4 137.138.99.145,tcp:8080,188.184.9.240

Kernel ipset v6

/usr/sbin/ipset create triplet_set_test_3_v6 hash:ip,port,ip family inet6 hashsize 1024 maxelem 65536
Set  triplet_set_test_3_v6  created
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458:201:70::100:26
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458:201:70::100:28
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458:201:70::100:2b
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458:201:70::100:2c
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458:201:70::100:27
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458:201:70::100:26

Rules

/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_set_test_3_v4 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/iptables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_set_test_3_v4 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/iptables -A INPUT -i eth0 -p tcp -m set --match-set triplet_set_test_3_v4 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/iptables -A INPUT -i eth0 -p udp -m set --match-set triplet_set_test_3_v4 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A INPUT -i eth0 -p tcp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A INPUT -i eth0 -p udp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3

Example using script to define host,ports combined with network/s hash:ip,port,net

In case your script can provide the combo of hostname,port you have to use the tag script_double. If want to return only a list of hostnames the you have to provide the port for each list element and use the script: or netgroup: tag. Please note that last part of each element in the list can only use the script: tag and has to get as input a list with single elements list only net range Check the following examples

[test_triplet_from_iptables_manager]
section_type = general
action = ['accept']
default_chain = OUTPUT,INPUT
ip_version = both
interface = ['main']
protocol = tcp,udp
set = triplet_set
set_directions = src,dst,dst



[triplet_set]
section_type = ipset
ipset_type = hash:ip,port,net
set_hostnames = ['script_double:test_port_2.sh,script:test_nets_v4.sh','script_double:test_port_2.sh,script:test_nets_v6.sh']
set_name = ['triplet_set_both']

The output of the above sections is the following: Kernel ipset

/usr/sbin/ipset create triplet_set_both_v4 hash:ip,port,net family inet hashsize 1024 maxelem 65536
Set  triplet_set_both_v4  created
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.221,tcp:443,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.140,tcp:1023,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.145,tcp:6123,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.139,tcp:9079,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.136,tcp:6987,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.145,tcp:6123,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.145,tcp:6123,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.216,tcp:787,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.139,tcp:9079,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.216,tcp:787,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.140,tcp:1023,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.141,tcp:5547,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.141,tcp:5547,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.136,tcp:6987,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.221,tcp:443,192.91.242.0/24
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.136,tcp:6987,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.139,tcp:9079,100.64.0.0/10
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.216,tcp:787,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.140,tcp:1023,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.47.221,tcp:443,188.184.0.0/15
/usr/sbin/ipset add triplet_set_both_v4 137.138.99.141,tcp:5547,100.64.0.0/10
/usr/sbin/ipset create triplet_set_both_v6 hash:ip,port,net family inet6 hashsize 1024 maxelem 65536
Set  triplet_set_both_v6  created
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b50e::100:12,tcp:787,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:5,tcp:9079,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:6,tcp:1023,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:5,tcp:9079,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b50e::100:17,tcp:443,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b50e::100:17,tcp:443,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:2,tcp:6987,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:2,tcp:6987,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:7,tcp:5547,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:7,tcp:5547,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b50e::100:12,tcp:787,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:27,tcp:6123,2001:1458::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:27,tcp:6123,FD01:1459::/32
/usr/sbin/ipset add triplet_set_both_v6 2001:1458:201:b49f::100:6,tcp:1023,2001:1458::/32

Rules

/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_set_both_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/iptables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_set_both_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/iptables -A INPUT -i eth0 -p tcp -m set --match-set triplet_set_both_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/iptables -A INPUT -i eth0 -p udp -m set --match-set triplet_set_both_v4 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/ip6tables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_set_both_v6 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/ip6tables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_set_both_v6 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/ip6tables -A INPUT -i eth0 -p tcp -m set --match-set triplet_set_both_v6 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager
/sbin/ip6tables -A INPUT -i eth0 -p udp -m set --match-set triplet_set_both_v6 src,dst,dst -j ACCEPT -m comment --comment test_triplet_from_iptables_manager

Another example of mix network set and scripts to create ipsets

[test_triplet_from_iptables_manager_3]
section_type = general
action = ['accept']
default_chain = OUTPUT,INPUT
ip_version = ipv6
interface = ['main']
protocol = tcp,udp
set = triplet_set_3
set_directions = dst,dst,src


[triplet_set_3]
section_type = ipset
ipset_type = hash:ip,port,net
set_hostnames = ['netgroup:IT SECURITY FIREWALL ALIENDB,8080,script:test_nets_v6.sh']
set_name = ['triplet_set_test_3']

The output of the above sections is the following: Kernel ipset

/usr/sbin/ipset create triplet_set_test_3_v6 hash:ip,port,net family inet6 hashsize 1024 maxelem 65536
Set  triplet_set_test_3_v6  created
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:12,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:5,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:2,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b50e::100:17,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:6,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,FD01:1459::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:7,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,2001:1458::/32
/usr/sbin/ipset add triplet_set_test_3_v6 2001:1458:201:b49f::100:27,tcp:8080,FD01:1459::/32

Rules

/sbin/ip6tables -A OUTPUT -o eth0 -p tcp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A OUTPUT -o eth0 -p udp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A INPUT -i eth0 -p tcp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3
/sbin/ip6tables -A INPUT -i eth0 -p udp -m set --match-set triplet_set_test_3_v6 dst,dst,src -j ACCEPT -m comment --comment test_triplet_from_iptables_manager_3

Example to create an ipset of hash:ip,port

In case your script can provide the combo of hostname,port you have to use the tag script_double. If the script returns only a list of hostnames the you have to provide the port for each list element and use the script: tag. Please note that last part of each element in the list can only use the script: tag and has to get as input a list with single elements list only hostnames Check the following examples

[test_doublet_from_iptables_manager_2]
section_type = general
action = ['accept']
default_chain = OUTPUT,INPUT
ip_version = both
interface = ['main']
protocol = tcp,udp
set = triplet_set_2
set_directions = dst,dst
[doublet_set_2]
section_type = ipset
ipset_type = hash:ip,port
set_hostnames = ['script_double:test_port_2.sh','script:test.sh,443']
set_name = ['doublet_set_test_2']

The output of the above sections is the following: Kernel ipset

/usr/sbin/ipset create doublet_set_test_2_v4 hash:ip,port family inet hashsize 1024 maxelem 65536
Set  doublet_set_test_2_v4  created
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.152,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.151,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.153,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 10.17.6.54,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.47.216,tcp:787
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.99.145,tcp:6123
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.37.103,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 10.18.16.52,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 10.17.6.56,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 10.17.6.55,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.99.139,tcp:9079
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.163,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.99.140,tcp:1023
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.155,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.99.141,tcp:5547
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.99.136,tcp:6987
/usr/sbin/ipset add doublet_set_test_2_v4 10.17.6.25,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.37.105,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.37.104,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 10.17.6.24,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.45.154,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 188.184.37.102,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v4 137.138.47.221,tcp:443
/usr/sbin/ipset create doublet_set_test_2_v6 hash:ip,port family inet6 hashsize 1024 maxelem 65536
Set  doublet_set_test_2_v6  created
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b49f::100:27,tcp:6123
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b50e::100:12,tcp:787
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b49f::100:7,tcp:5547
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b49f::100:6,tcp:1023
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b50e::100:17,tcp:443
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b49f::100:5,tcp:9079
/usr/sbin/ipset add doublet_set_test_2_v6 2001:1458:201:b49f::100:2,tcp:6987

Rules

/sbin/iptables -A OUTPUT -o eth0 -p tcp -m set --match-set doublet_set_test_2_v4 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/iptables -A OUTPUT -o eth0 -p udp -m set --match-set doublet_set_test_2_v4 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/iptables -A INPUT -i eth0 -p tcp -m set --match-set doublet_set_test_2_v4 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/iptables -A INPUT -i eth0 -p udp -m set --match-set doublet_set_test_2_v4 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/ip6tables -A OUTPUT -o eth0 -p tcp -m set --match-set doublet_set_test_2_v6 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/ip6tables -A OUTPUT -o eth0 -p udp -m set --match-set doublet_set_test_2_v6 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/ip6tables -A INPUT -i eth0 -p tcp -m set --match-set doublet_set_test_2_v6 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2
/sbin/ip6tables -A INPUT -i eth0 -p udp -m set --match-set doublet_set_test_2_v6 dst,dst -j ACCEPT -m comment --comment test_doublet_from_iptables_manager_2