Bug 223448 - telnetd refuses connections if nameserver(s) down
Summary: telnetd refuses connections if nameserver(s) down
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: telnet
Version: 6
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Adam Tkac
QA Contact: Ben Levenson
URL:
Whiteboard:
Depends On:
Blocks: 253392
TreeView+ depends on / blocked
 
Reported: 2007-01-19 14:35 UTC by Jeremy Faith
Modified: 2013-04-30 23:34 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-04-13 12:26:52 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Jeremy Faith 2007-01-19 14:35:35 UTC
Description of problem:
telnetd refuses connections if nameserver(s) down or not configured

Version-Release number of selected component (if applicable):
telnet-server-0.17-37
glibc-2.5-3

How reproducible:
either disconnect nameservers from network or delete /etc/resolv.conf
telnet into server from a client not listed in /etc/hosts

Steps to Reproduce:
1. on FC6 server
  rm /etc/resolv.conf #or disconnect nameservers from network

2. on a client machine not listed in /etc/hosts on server
  telnet fc6_machine 
  
Actual results:
$ telnet grima
Trying 10.51.21.10...
Connected to grima.
Escape character is '^]'.
getnameinfo: localhost: Success
Temporary failure in name resolution: Illegal seek
Connection closed by foreign host.

Expected results:
$ telnet grima
Trying 10.51.21.10...
Connected to grima.
Escape character is '^]'.
Fedora Core release 6 (Zod)
Kernel 2.6.18-1.2798.fc6 on an i686
login:

Additional info:
This bug is due to a change in the glibc getnameinfo function, see bug 221583
and bug 204122.
If a nameserver is not available, getnameinfo now returns the EAI_AGAIN
error(even when the NI_NAMEREQD flag is not set) rather than returning the IP
address as a string as it used to.

Comment 1 Adam Tkac 2007-04-11 16:38:39 UTC
Very similar to bug #223452, patch could be based on rlogind's patch. I'm going
to take care about this one

-A-

Comment 2 Adam Tkac 2007-04-13 09:17:38 UTC
I've created proposed fix. Could you test it, please?
http://people.redhat.com/atkac/test_srpms/telnet-0.17-38.fc7.src.rpm

Regards, Adam

Comment 3 Jeremy Faith 2007-04-13 11:58:33 UTC
Yes, that seems to work fine, thanks.
The -c option is not mentioned in the manual page though.

But I would just like to confirm that the option is needed.
I'm afraid I'm still not convinced that doing this second lookup if EAI_AGAIN is
returned reduces security. EAI_AGAIN only happens if the nameserver is down or
not configured. 

If the nameserver is working and the client does not have a reverse DNS entry
the first call to getnameinfo will return the IP address in string form(with no
error), so telnetd/rlogind have to handle that situation anyway.

If you are certain the hostname MUST be available when the -c option is NOT used
then you need to use NI_NAMEREQD in the flags argument to the first getnameinfo
call. In which case the second call will need to be done if the error returned
is EAI_NONAME or EAI_AGAIN and the -c option is used. But I don't think this is
a good idea.

I believe all of this is caused by a change to the implementation of the
getnameinfo function see bug #221583 and #204122.

I think the better option is to do the second getnameinfo call if the error is
EAI_AGAIN even it the nodns option is not set. I think this covers up the
problem with the getnameinfo implementation.

Sorry, if I'm not being clear here or missing something but I'm just not getting it.

Comment 4 Adam Tkac 2007-04-13 12:26:52 UTC
(In reply to comment #3)
> Yes, that seems to work fine, thanks.
> The -c option is not mentioned in the manual page though.

Be sure that you're looking at correct manpage (you must see "man in.telnetd",
not only telnetd because this is different version of telnet daemon)

I'm not expert about security so better is create new option than create
security hole :)

-A-

Comment 5 Jeremy Faith 2007-04-13 14:14:01 UTC
You are correct man in.telnetd does mention the -c option, my bad.

relevant section:-
 -c           This option disables reverse dns checking. Of course that
              security is lower with this option

Just to be picky, should it not be 'Of course the' rather than 'Of Course that'.

Mind you I'm not convinced security is lower but fair enough re your decision to
err on the side of caution(seldom a bad move).




Comment 6 Adam Tkac 2007-09-25 12:07:19 UTC
After next thinking about this issue I'm going to use patch from Bryn M. Reeves.
With this patch -c option is no longer avaliable in Fedora >= 8 and reverse
checking is automatically disabled when DNS is unreachable.

Adam

Comment 7 Jeremy Faith 2007-09-25 13:31:06 UTC
Yes, the patch for bug #253392 seems better to me.
What about rlogind(i.e. bug #223452)?
A simliar patch would seem appropriate.

Comment 8 Adam Tkac 2007-09-25 16:21:30 UTC
(In reply to comment #7)
> Yes, the patch for bug #253392 seems better to me.
> What about rlogind(i.e. bug #223452)?
> A simliar patch would seem appropriate.

Yes, I'm going to also drop -D option. But this change will be in F9, not F8
(final F8 freeze is today and rlogind/rshd need more work and I don't have
enough time now)

Adam


Note You need to log in before you can comment on or make changes to this bug.