1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324
|
<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<META NAME="generator" CONTENT="lgazmail v1.3A.e">
<TITLE>The Answer Guy 48: "telnetd connected:" But No "login" Prompt</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"
LINK="#3366FF" VLINK="#A000A0">
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H4>"The Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../../gx/dennis/qbubble.gif" alt="(?)"
border="0" align="middle">
<font color="#B03060">The Answer Guy</font>
<img src="../../gx/dennis/bbubble.gif" alt="(!)"
border="0" align="middle">
</A></H1>
<BR>
<H4>By James T. Dennis,
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a><BR>
LinuxCare,
<A HREF="http://www.linuxcare.com/">http://www.linuxcare.com/</A>
</H4>
</center>
<p><hr><p>
<!-- endcut ======================================================= -->
<!-- begin 55 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>"telnetd connected:" But No "login" Prompt</H3>
<p><strong>From cbgyeh on Mon, 11 Oct 1999
</strong></p>
<!-- ::
"telnetd connected:" But No "login" Prompt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
I appreciate that if you can help me the problem related to telnet
running RedHat 6.0.
</STRONG></P>
<P><STRONG>
I recently configured RedHat 6.0. When I telnet to the server, I see
the banner message. There is no login prompt. The <TT>/var/log/secure</TT>
indicates telnetd connected from xxx.xxx.xxx.xxx. When I test the loop
back i.e. 127.0.0.1, the telnetd works correctly. Ping and ftp work
well. FTP has no delay at all.
</STRONG></P>
<P><STRONG>
I did not install any patches yet.
Ching
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It sounds like a TCP Wrappers problem.
</BLOCKQUOTE>
<BLOCKQUOTE>
Linux systems normally have TCP Wrappers (tcpd)
preconfigured to provide selective access control to
all 'inetd' launched services. You'll see this if you
look in your <TT>/etc/inetd.conf.</TT> Thus 'inetd' is configured
to listen to the telnet service port (23, as listed in
<TT>/etc/services</TT>). 'inetd' find 'tcpd' and runs that. Thus
'inetd' won't complain about a "program not found."
</BLOCKQUOTE>
<BLOCKQUOTE>
TCP Wrappers will log the connection attempt (under the service
name). Then it will do a double-reverse lookup (taking
the source IP address of the connection, getting a purported
host/domain name, then doing a a forward lookup of that to
scan for the original source IP address). If those values
are inconsistent it may just drop the connection or it
may continue as normal.
</BLOCKQUOTE>
<BLOCKQUOTE>
TCP Wrapper will then check the <TT>/etc/hosts.allow</TT> and the
<TT>/etc/hosts.deny</TT> files. It will look for a line that
applies to this service (in.telnetd) followed by a list
of allowed (or denied) IP address or host/domain name
patterns. The syntax of these files is described in
the hosts_access man pages.
</BLOCKQUOTE>
<BLOCKQUOTE>
I've described TCP Wrappers and this double reverse lookup
before. If you're reverse DNS zones aren't properly
configured you may seen very log delays on connections at
this point (several minutes). You're test from localhost
succeeds because you have localhost (127.0.0.1) listed in
your <TT>/etc/hosts</TT> file so the forward and reverse records will
always be correct so long as the 'files' entry in your
<TT>/etc/nsswitch.conf</TT> (<TT>/etc/hosts.conf</TT> for older libc5
packages) is properly maintained.
</BLOCKQUOTE>
<BLOCKQUOTE>
Usually your FTP daemon would also be protected this way.
However, new Linux distributions sometimes are using
ProFTPd which is often run "standalone" (not through the
inetd dispatcher). ProFTPd has optional service access
controls of it's own (and might not be configured to do
this "double-reverse lookup").
</BLOCKQUOTE>
<BLOCKQUOTE>
So, try adding the appropriate IP addresses and names to
your <TT>/etc/hosts</TT> file or get your hostmaster to get your
reverse zone maps configured properly. If that doesn't
work trying using strace. To do that replace the in.telnetd
line in your <TT>/etc/inetd.conf</TT> file with something like:
</BLOCKQUOTE>
<blockquote><pre>telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /root/bin/trace.telnetd
</pre></blockquote>
<BLOCKQUOTE>
... (all on one line, of course --- the backslash is just
to note that this is a "continued" line in my e-mail ---
DON'T put that in the inetd.conf file).
</BLOCKQUOTE>
<BLOCKQUOTE>
"<TT>/root/bin/trace.telnetd</TT>" is a shell script that
looks like:
</BLOCKQUOTE>
<blockquote><pre>#!/bin/sh
exec strace -o root/tmp/telnetd.trace /usr/sbin/in.telnetd
</pre></blockquote>
<BLOCKQUOTE>
... that can give you a system call trace of what the telnet
daemon is doing after its launched. Of course you have to
signal your inetd to re-read it's configuration file using
a command like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE><BlockQuote>
kill -HUP $(cat <TT>/var/run/inetd.pid</TT>)
</BlockQuote></CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... in order for this change to take effect. (It would also
take effect after a reboot, of course).
</BLOCKQUOTE>
<BLOCKQUOTE>
NOTE: I don't recommend that you run with this strace
script during normal production use. It could be insecure
and it's likely to be a bad idea in any event. However,
it's useful for capturing some low level diagnostic data.
</BLOCKQUOTE>
<BLOCKQUOTE>
Reading strace output is challenging. However, you can
usually get by okay by simply looking for failed<TT> open()</TT>,
<TT>stat()</TT>, and<TT> lstat()</TT> calls.
</BLOCKQUOTE>
<BLOCKQUOTE>
If that line doesn't work (you don't get any telnet.trace
output) try:
</BLOCKQUOTE>
<blockquote><pre>telnet stream tcp nowait telnetd.telnetd /root/bin/trace.telnetd telnetd
</pre></blockquote>
<BLOCKQUOTE>
... (all on one line, as before). In this case we are
eliminating tcpd from the picture. The confusing part
about the inetd.conf file syntax is that you seem to repeat
the name of the program your running twice on each service
line. The first reference is the program that will be run,
the next is the name under which it will appear in a 'ps'
(process status) listing and anything else on the line will
be passed as command line arguments to the daemon.
</BLOCKQUOTE>
<BLOCKQUOTE>
This ability to separately supply an executable patch/name
and a full argument list, including "arg(0)" --- the
'ps' name --- is normal for UNIX and Linux, it's just not
something you'd see from using the command shell. That and
'init' always start programs using the same value for
both the executable path and the arg(0).
</BLOCKQUOTE>
<BLOCKQUOTE>
I doubt you'll have to go to that level of debugging for
this. I'm just describing the technique (again) for
other readers and in case you do need it.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 55 -->
<p><hr width="40%"><p>
<!-- begin 55 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Ying at New York: Re: RedHat 6.0:Telnet has no login prompt</H3>
<p><strong>From chgyeh on Fri, 15 Oct 1999
</strong></p>
<BLOCKQUOTE>
Jim,
</BLOCKQUOTE>
<BLOCKQUOTE>
Thank you so much for showing me strace command. I was able to look at
the trace file and determined my nsswitch was not correct. It was
hanging at the nis+ which I did not configure to use. Again, thank you
for your help.
</BLOCKQUOTE>
<BLOCKQUOTE>
Ching
</BLOCKQUOTE>
<!-- end 55 -->
<!--startcut ======================================================= -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/copying.html"
>Copyright ©</a> 1999, James T. Dennis
<BR>Published in <I>The Linux Gazette</I> Issue 48 December 1999</H5>
<H6 ALIGN="center">HTML transformation by
<A HREF="mailto:star@starshine.org">Heather Stern</a> of
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6>
<P> <hr> <P>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<TABLE WIDTH="95%"><TR VALIGN="center" ALIGN="center">
<TD colspan="2" rowspan="2"><A
HREF="../lg_answer48.html"
><IMG SRC="../../gx/dennis/answernew.gif"
ALT="[ Answer Guy Current Index ]"></A>
<TD colspan="2" rowspan="2"><A
HREF="../../tag/kb.html"
><IMG SRC="../../gx/dennis/answertoc.gif"
ALT="[ Index of Past Answers ]"></A></td>
<TD WIDTH="11%"><A HREF="../lg_answer48.html#greeting"><img
src="../../gx/dennis/smily.gif" alt="greetings" border="0"></A></TD>
<TD WIDTH="11%"><A HREF="1.html">1</A></TD>
<TD WIDTH="11%"><A HREF="2.html">2</A></TD>
<TD WIDTH="11%"><A HREF="3.html">3</A></TD>
<TD WIDTH="11%"><A HREF="4.html">5</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="11%"><A HREF="5.html">5</A></TD>
<TD WIDTH="11%"><A HREF="6.html">6</A></TD>
<TD WIDTH="11%"><A HREF="7.html">7</A></TD>
<TD WIDTH="11%"><A HREF="8.html">8</A></TD>
<TD WIDTH="11%"><A HREF="9.html">9</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="10%"><A HREF="10.html">10</A></TD>
<TD WIDTH="10%"><A HREF="11.html">11</A></TD>
<TD WIDTH="10%"><A HREF="12.html">12</A></TD>
<TD WIDTH="10%"><A HREF="13.html">13</A></TD>
<TD WIDTH="11%"><A HREF="14.html">14</A></TD>
<TD WIDTH="11%"><A HREF="15.html">15</A></TD>
<TD WIDTH="11%"><A HREF="16.html">16</A></TD>
<TD WIDTH="11%"><A HREF="17.html">17</A></TD>
<TD WIDTH="11%"><A HREF="18.html">18</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="10%"><A HREF="19.html">19</A></TD>
<TD WIDTH="10%"><A HREF="20.html">20</A></TD>
<TD WIDTH="10%"><A HREF="21.html">21</A></TD>
<TD WIDTH="10%"><A HREF="22.html">22</A></TD>
<TD WIDTH="11%"><A HREF="23.html">23</A></TD>
<TD WIDTH="11%"><A HREF="24.html">24</A></TD>
<TD WIDTH="11%"><A HREF="25.html">25</A></TD>
<TD WIDTH="11%"><A HREF="26.html">26</A></TD>
<TD WIDTH="11%"><A HREF="27.html">27</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="10%"><A HREF="28.html">28</A></TD>
<TD WIDTH="10%"><A HREF="29.html">29</A></TD>
<TD WIDTH="10%"><A HREF="30.html">30</A></TD>
<TD WIDTH="10%"><A HREF="31.html">31</A></TD>
<TD WIDTH="11%"><A HREF="32.html">32</A></TD>
<TD WIDTH="11%"><A HREF="33.html">33</A></TD>
<TD WIDTH="11%"><A HREF="34.html">34</A></TD>
<TD WIDTH="11%"><A HREF="35.html">35</A></TD>
<TD WIDTH="11%"><A HREF="36.html">36</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="10%"><A HREF="37.html">37</A></TD>
<TD WIDTH="10%"><A HREF="38.html">38</A></TD>
<TD WIDTH="10%"><A HREF="39.html">39</A></TD>
<TD WIDTH="10%"><A HREF="40.html">40</A></TD>
<TD WIDTH="11%"><A HREF="41.html">41</A></TD>
<TD WIDTH="11%"><A HREF="42.html">42</A></TD>
<TD WIDTH="11%"><A HREF="43.html">43</A></TD>
<TD WIDTH="11%"><A HREF="44.html">44</A></TD>
<TD WIDTH="11%"><A HREF="45.html">45</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD WIDTH="10%"><A HREF="46.html">46</A></TD>
<TD WIDTH="10%"><A HREF="47.html">47</A></TD>
<TD WIDTH="10%"><A HREF="48.html">48</A></TD>
<TD WIDTH="10%"><A HREF="49.html">49</A></TD>
<TD WIDTH="11%"><A HREF="50.html">50</A></TD>
<TD WIDTH="11%"><A HREF="51.html">51</A></TD>
<TD WIDTH="11%"><A HREF="52.html">52</A></TD>
<TD WIDTH="11%"><A HREF="53.html">53</A></TD>
<TD WIDTH="11%"><A HREF="54.html">54</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
<TD colspan="3"><A HREF="55.html">55</A></TD>
<TD colspan="3"><A HREF="56.html">56</A></TD>
<TD colspan="3"><A HREF="57.html">57</A></TD>
</TR></TABLE>
</TR><TR VALIGN="center" ALIGN="center">
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr> <P>
<!-- begin lgnav ::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<A HREF="../index.html"
><IMG SRC="../../gx/indexnew.gif" ALT="[ Table Of Contents ]"></A>
<A HREF="../../index.html"
><IMG SRC="../../gx/homenew.gif" ALT="[ Front Page ]"></A>
<A HREF="../lg_bytes48.html"
><IMG SRC="../../gx/back2.gif" ALT="[ Previous Section ]"></A>
<A HREF="../../faq/index.html"
><IMG SRC="../../gx/dennis/faq.gif"
ALT="[ Linux Gazette FAQ ]"></A>
<A HREF="../lg_tips48.html"
><IMG SRC="../../gx/fwd.gif" ALT="[ Next Section ]"></A>
<!-- end lgnav ::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->
|