I should add that once using source control abs a script to manage edits to 
pf.conf, it is easy to use at(1) to simulate Juniper's "commit confirmed" 
feature, adding another level of safety.
-Adam

On April 9, 2014 7:50:14 AM CDT, Giancarlo Razzolini <[email protected]> 
wrote:
>Em 09-04-2014 06:31, Stuart Henderson escreveu:
>> On 2014-04-08, Giancarlo Razzolini <[email protected]> wrote:
>> If you're going to script this, you could have it make a copy of the
>> file and work on that, so an unexpected reboot won't leave you with a
>> pf.conf that may have errors.
>>
>> For even more safety, you could reload the ruleset using a copy of
>the
>> file, leaving /etc/pf.conf with the old rules so that the most you
>need
>> to do to recover from fat-finger accidents is reboot (and then you
>can
>> copy the new file back out to pf.conf after it's been proven).
>>
>> I take a different approach and make sure I have out-of-band console
>> access :)
>>
>> I would strongly encourage keeping pf.conf in source control though.
>> Something as simple as rcs on the box itself is a huge step up from
>just
>> editing the file directly, though I prefer to have them on a separate
>> machine (I use svn for that).
>I use git and my script edit the source control version, not /etc one.
>So if the syntax check passes, my script automatically copies the
>pf.conf to /etc and asks if I want to commit and push the new version.
>>
>>>     Of course the script above won't help with rules that are right
>in
>>> its syntax, but are passing or blocking traffic they were not meant
>to.
>>> I found empirically that the majority of the mistakes are in pf's
>>> syntax. When you make a wrong rule you'll either detect it right
>away,
>>> for instance, a block rule that blocks the wrong traffic or you will
>not
>>> detect it for a long time.
>> Hmm.. It is often fairly quick to pick up rules which over-block
>(though
>> problems with jobs which only occur weekly or monthly can take a
>while to
>> track down, and also there are situations where you won't notice a
>> problem until all firewall states are flushed and all tables flushed
>> and reloaded). But it's a lot harder to pick up rules which are too
>open.
>Exactly. That's why I use policy (tags) based firewalling. I makes a
>little easier to pick up on such errors.
>>
>>>    Also, even when detecting an unexpected
>>> behavior, it might be hard to pinpoint where it is in you pf
>>> configuration. I had to use tags many times to discover that the
>>> combination of 3 or more rules was causing the unexpected behavior.
>> match log(matches) is extremely useful here.
>>
>Exactly. Matching and logging is very nice, because it is sticky and
>you
>can log the entire flow of a packet with it. Speaking of flows, I use
>pflow with nfsense and it helps a lot in detecting these "too open"
>rules. Because there are these weekly or daily jobs that sometimes
>can't
>be run ahead of time and you won't need to wait until they run again,
>just take a look at the flows in nfsen.
>
>Cheers,
>
>-- 
>Giancarlo Razzolini
>GPG: 4096R/77B981BC

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply via email to