salt.modules.iptables

Support for iptables

salt.modules.iptables.append(table='filter', chain=None, rule=None)

Append a rule to the specified table/chain.

This function accepts a rule in a standard iptables command format,
starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it.

CLI Example:

salt '*' iptables.append filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt.modules.iptables.build_rule(table=None, chain=None, command=None, position='', full=None, **kwargs)

Build a well-formatted iptables rule based on kwargs. Long options must be used (--jump instead of -j) because they will have the -- added to them. A table and chain are not required, unless full is True.

If full is True, then table, chain and command are required. command may be specified as either a short option ('I') or a long option (--insert). This will return the iptables command, exactly as it would be used from the command line.

If a position is required (as with -I or -D), it may be specified as position. This will only be useful if full is True.

If connstate is passed in, it will automatically be changed to state.

CLI Examples:

salt '*' iptables.build_rule match=state connstate=RELATED,ESTABLISHED \
    jump=ACCEPT
salt '*' iptables.build_rule filter INPUT command=I position=3 \
    full=True match=state state=RELATED,ESTABLISHED jump=ACCEPT
salt.modules.iptables.check(table='filter', chain=None, rule=None)

Check for the existance of a rule in the table and chain

This function accepts a rule in a standard iptables command format,
starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it.

CLI Example:

salt '*' iptables.check filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt.modules.iptables.delete(table, chain=None, position=None, rule=None)
Delete a rule from the specified table/chain, specifying either the rule
in its entirety, or the rule's position in the chain.
This function accepts a rule in a standard iptables command format,
starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it.

CLI Examples:

salt '*' iptables.delete filter INPUT position=3
salt '*' iptables.delete filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt.modules.iptables.flush(table='filter')

Flush all chains in the specified table.

CLI Example:

salt '*' iptables.flush filter
salt.modules.iptables.get_policy(table='filter', chain=None)

Return the current policy for the specified table/chain

CLI Example:

salt '*' iptables.get_policy filter INPUT
salt.modules.iptables.get_rules()

Return a data structure of the current, in-memory rules

CLI Example:

salt '*' iptables.get_rules
salt.modules.iptables.get_saved_policy(table='filter', chain=None, conf_file=None)

Return the current policy for the specified table/chain

CLI Examples:

salt '*' iptables.get_saved_policy filter INPUT
salt '*' iptables.get_saved_policy filter INPUT conf_file=/etc/iptables.saved
salt.modules.iptables.get_saved_rules(conf_file=None)

Return a data structure of the rules in the conf file

CLI Example:

salt '*' iptables.get_saved_rules
salt.modules.iptables.insert(table='filter', chain=None, position=None, rule=None)

Insert a rule into the specified table/chain, at the specified position.

This function accepts a rule in a standard iptables command format,
starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it.

CLI Examples:

salt '*' iptables.insert filter INPUT position=3 rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt.modules.iptables.save(filename=None)

Save the current in-memory rules to disk

CLI Example:

salt '*' iptables.save /etc/sysconfig/iptables
salt.modules.iptables.set_policy(table='filter', chain=None, policy=None)

Set the current policy for the specified table/chain

CLI Example:

salt '*' iptables.set_policy filter INPUT ACCEPT
salt.modules.iptables.version()

Return version from iptables --version

CLI Example:

salt '*' iptables.version