Darren Reed wrote: > On 08/21/08 14:06, Tony Nguyen wrote: >> 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? > > I think that will work a treat.
Great. > > >>>>> 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? > > Yes. > > >>>>> 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. > > Can it just be placed in the running profile, rather than current? > Or does updating the running one still count as a configuration change? > The short answer is yes. The current snapshot is the same as the running snapshot. The primary issue is a service refresh action triggers both a snapshot update and execution of the refresh method since we want the service to always run with the active/latest configuration. Thanks, -tony