A working firewall module

101 views
Skip to first unread message

Ronen Narkis

unread,
Jul 10, 2011, 12:15:55 PM7/10/11
to Puppet Users
Iv been going through a multitude of firewall modules not being able to find a simple module that open and closes ports on Redhat/Centos 5.6

All the modules that iv tried keep open ports multiple times (each time puppet agent runs):

 ACCEPT
-A INPUT -p tcp -m multiport --dports 80 -m comment --comment "Allow clarity" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 5672 -m comment --comment "JMS port" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 1099 -m comment --comment "Allow rmi" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 9999 -m comment --comment "Allow jmx" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 9999 -m comment --comment "Allow jmx" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 5672 -m comment --comment "JMS port" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 55672 -m comment --comment "Allowing rabbit managment port" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 1099 -m comment --comment "Allow rmi" -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80 -m comment --comment "Allow clarity" -m state --state NEW -j ACCEPT

Among the modules iv tried:

https://github.com/pdeaudney/puppet-firewall
https://github.com/puppetlabs/puppetlabs-firewall

Iv also tried:

https://github.com/duritong/puppet-shorewall

And didn't manager to get it going,

Id be grateful to Any reference to a simple working Redhat/Centos module

Ronen

Ken Barber

unread,
Jul 10, 2011, 1:51:26 PM7/10/11
to puppet...@googlegroups.com
> Among the modules iv tried:
>
> https://github.com/puppetlabs/puppetlabs-firewall

What was the problem you had with this module?

ken.


--
"Join us for PuppetConf, September 22nd and 23rd in Portland, OR:
http://bit.ly/puppetconfsig"

Alessandro Franceschi

unread,
Jul 10, 2011, 3:32:48 PM7/10/11
to puppet...@googlegroups.com
FYI
I don't know it it may be useful , but I've done this:
https://github.com/example42/puppet-modules/tree/master/iptables
which can be used in 2 ways:
- a "standard" iptable-save approach (set $iptables_config = "file" before to enable it) with rules file defined in https://github.com/example42/puppet-modules/blob/master/iptables/manifests/file.pp
(here you have to add source or content arguments to mange it with static files or templates according to your need)
- an "automatic" way (default option when you include the module) that dymanically builds iptables rules according to the modules you include and the iptables related variables you set (see the README)
This actually works if you use the Example42 modules (or at least the firewall defines included in each one).
It's quite nice to see it working adding or removing dynamically but, I must admin, is a bit resource intensive (a puppet resoutce for each dymanic rule).

Regards
Al @ Lab42

Christopher Webber

unread,
Jul 10, 2011, 3:38:04 PM7/10/11
to puppet...@googlegroups.com
I have been working on doing something similar to this. We want to abstract for multiple OS's and deal with the joy that is Solaris zones.

Essentially, it will be a resource that defines the fw rules in XML and then a script takes all of those definitions and creates a complete set of firewall rules.

I am waiting to hear back on our code release policy to see what it takes to release it once I am done.

-- cwebber

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/KSn4hF687gQJ.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Ronen Narkis

unread,
Jul 10, 2011, 4:54:38 PM7/10/11
to puppet...@googlegroups.com
Hey Ken, the main issue was that the provider wasn't detecting existing rules but instead kept adding them in, another issue is that the rules aren't persistent (restarting the service clears them out),

Alessandro ill check it out thanks!

Ronen

Ken Barber

unread,
Jul 10, 2011, 6:50:26 PM7/10/11
to puppet...@googlegroups.com
Hi Ronen,

Making the rules persistent is a matter of running iptables-save
afterwards. If you drop this in your top scope it should work:

exec { "persist-firewall":
command => $operatingsystem ? {
"debian" => "/sbin/iptables > /etc/iptables/rules.v4",
/(RedHat|CentOS)/ => "/sbin/iptables > /etc/sysconfig/iptables",
}
refreshonly => true,
}
Firewall {
notify => Exec["persist-firewall"]
}

Can you raise a bug on the other issue about not detecting existing
rules? I'd appreciate being able to see any problematic rules (after
your own scrubbing of course). We'll then be able to try and fix it
for you.

https://github.com/puppetlabs/puppetlabs-firewall/issues

Alessandro's suggestions still hold true about applying firewall rules
with related classes. I'm a big fan of this methodology instead of
having a long list of rules. This is why a firewall type that handles
individual rules is a good approach.

ken.

--

Ronen Narkis

unread,
Jul 11, 2011, 5:59:56 AM7/11/11
to puppet...@googlegroups.com
Just did,

Thank you!
Ronen

Ronen Narkis

unread,
Jul 11, 2011, 9:28:27 AM7/11/11
to puppet...@googlegroups.com
Hey Alessandro the module works well, one issue that I had is that once rules were applied the iptables service wasn't restarted, iv dug through the code and indeed saw the notify under rule.pp:

concat::fragment{ "iptables_rule_$name":
        target  => "${iptables::params::configfile}",
        content => "$command $chain $true_rule -j $target\n",
        order   => $true_order,
        ensure  => $ensure,
        notify  => Service["iptables"],
}

My guess is that the notify should be defined deeper in the defined resource?

The only way I was able to make it restart was to use:

File["/etc/sysconfig/iptables"] ~> Service[iptables]

Ronen

Al @ Lab42

unread,
Jul 11, 2011, 9:57:17 AM7/11/11
to puppet...@googlegroups.com
Thanks for the feedback and the bug report, Ronen.
I'll check it..

Brian Gupta

unread,
Jul 11, 2011, 11:53:36 AM7/11/11
to puppet...@googlegroups.com
I haven't looked at it closely yet (but I plan to), but I've heard good things about this module: https://labs.riseup.net/code/projects/shared-shorewall

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.



--


Ken Barber

unread,
Jul 11, 2011, 6:15:56 PM7/11/11
to puppet...@googlegroups.com
Jonathan Boyett provided a patch for this problem:

https://github.com/puppetlabs/puppetlabs-firewall/commit/a7faff6f5b0de882bc720c8eb652d37b85a6b2a8

Looks like the crux of it was a Ruby 1.8.5 compatibility issue:

https://github.com/puppetlabs/puppetlabs-firewall/issues/3

Thanks.

ken.

Reply all
Reply to author
Forward
0 new messages