Re: Question about random UDP port on rpcbind 0.2.3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/02/2018 10:22 AM, Chuck Lever wrote:
> 
> 
>> On Feb 2, 2018, at 10:06 AM, Steve Dickson <SteveD@xxxxxxxxxx> wrote:
>>
>>
>>
>> On 02/01/2018 10:29 AM, Scott Mayhew wrote:
>>>
>>> This patch should take care of making rpcbind set up the remote call
>>> port on demand.  I don't have a whole lot of ways to test it though...
>>> just 'rpcinfo -b' and a handful of one-off programs I wrote a while back
>>> trying to mess with the CALLIT/INDIRECT/BCAST procedures.
>> This is where I spent my afternoon yesterday... figuring
>> out a way to test this code. rpc_call() is my new BFF!
> 
> Thanks!
> 
> 
>>> I'd still need to add the stuff to retain CAP_NET_BIND_SERVICE.
>> I think we need to do what nsm_clear_capabilities() does.
> 
> Agree, that's exactly what is needed to allow bindresvport
> on demand, if rpcbind (or statd) does not run as root.
With Fedora, rpcbind runs as 'rpc' and statd runs as 'rpcuser'
So changing the capabilities would have to happen early on.

> 
> The only issue I see is that some distros might not have
> libcap. There is plenty of infrastructure in nsm/file.c that
> deals with the "libcap absent" case, which makes me wonder.
IDK... Fedora has it... 

> 
> 
>>> I also like the idea of leaving this off by default and adding a
>>> command-line flag to enable it because I'm also not sure if anyone
>>> actually uses it... not to mention there's been at least one CVE in the
>>> past that exploited it (CVE-2015-7236, not sure if there are others).
>> I'm not a fan of this idea... I think on demand is a better way
>> to go... but what do I know?? ;-)
>>
>>> I'm not sure why rpcbind would list an outgoing port in it's portmap
>>> menu. Are you sure that this is the forwarding reflector port?
>>>
>> Yes... the listening fd is created by create_rmtcall_fd()
>> This is not the first time people have complained about
>> rpbind's rogue listening port :-( 
> 
> Hrm. If this is indeed a listening port, on demand bindresvport
> won't help (on demand will only fix outgoing ports). I had
> assumed there was a long-lived reserved port that was being
> used just for outgoing RPCs, just like statd.
No. create_rmtcall_fd() just calls svc_tli_create() which
does the bindresvport()... 

> 
> Does that listening port have to be in the privileged port range?
Taking a quick look at mountd and statd I didn't see any code
requiring a privileged port... Maybe to call into the kernel?

steved.
> 
> 
> --
> Chuck Lever
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux