Darren Reed wrote:
> On 08/21/08 01:17, Tony Nguyen wrote:
>> Hi Darren,
>>
>> Thanks for the valuable comments. See my responses inline.
>> -tony
>>
>> Darren Reed wrote:
>> ...
>> ...
>>> The tree for allow/deny with exceptions is only 2 deep.
>>> I'm not sure this is enough and needs at least another layer.
>>> Or maybe I'm not putting the pieces together right...
>>> For example, if I set my global policy to "deny_all_except",
>>> I might then specify 129.146/16 in the default allow "except"
>>> list but may wish to put holes in that for, for example,
>>> blocking traffic from Tony's desktop.
>> A really neat scenario. Essentially, we want to block all but allow 
>> from 129.146/16, except specific host(s) on that 129.146/16 network.
>>
>> In this case, we would configure use both the Global Default and 
>> Global Override layers to get the desired behavior.
>>
>> - Global Default policy is set to "deny_all_except" and specifiy 
>> 129.146/16 in the "deny_except_list"
>> - Global Override policy is set to "allow_all_except" and specify 
>> unwanted hosts on 129.146/16 network in the "allow_except_list"
>>
>> Having another layer for each firewall configuration as you suggested 
>> is a good option but I'm concerned about the more complex user model, 
>> deny all but allow some, except a few. The current implementation 
>> while not flawless(can't apply the above scenario to a service), is a 
>> simpler model and would satisfy most use cases, in my opinion.
> 
> Hmm... can the 3rd layer be a union of the global over ride policy
> (which is already in the design) and a local over ride policy?

It certainly can though not necessarily a union. The Global Override is 
mostly used as a blacklist, hosts that we deny access.

However, we can have implement the override layer for each service by 
having deny_override and allow_override lists to override the except 
list. What do you think?

> 
> 
>>> If a network service is in maintenance mode, for one
>>> reason or another, what impact does that have on the
>>> firewall rules?
>>>   
>> Currently, active rules for a service aren't affected if the service 
>> goes into maintenance mode. Essentially, a service's firewall 
>> shouldn't be affected by the service's operating mode(maintenance or 
>> degraded). The other approach is to remove the active rules but that 
>> has a potential issue where a service may have been deleted and its 
>> ipf_method is now missing.
> 
> So if you have a service that has multiple daemons, one starts but the 
> other doesn't,
> causing the service to enter maintenance mode, if both listen on TCP 
> sockets, what
> would you expect the outcome to be?  And what do you think people will 
> desire?
> 

In such case, the service's firewall rules should still be active.

A service's firewall is configured to protect the service and should not 
cause any regression to the service's functionality. Thus, a service 
operating in degraded state should still be protected by its firewall 
policy. Is that reasonable?

> 
>>> For RPC services, given you are querying rpcbind to
>>> access port number information, is there any merit in
>>> also storing that retrieved information back in the
>>> running profile of the RPC service in a volatile field?
>>> (This is possibly outside the scope of this project.)
>>>   
>> I'm not sure I understand the benefit of caching port information 
>> given that some RPC services have dynamic ports. Would you clarify?
> 
> So that you can use svccfg, as well as rpcinfo, to find out what
> port number the service is running on.  Given that the port number
> is a property of most other services, it seems ... to fit?
>  

Ah. One potential implementation issue, a change to a service's 
configuration requires a service refresh. If an RPC services gets a 
different port on each service refresh and saving the new port requires 
another refresh, we'll get into a loop.

Thanks,
-tony

Reply via email to