Que servidor tftp está executando

2

Eu preciso descobrir qual tftp server / daemon está sendo executado, para editar suas configurações e visualizar o log de erros.

Descobri que há um serviço do tftpd em execução:

# netstat -tupln | grep ftp
udp        0      0 0.0.0.0:69              0.0.0.0:*                           7915/in.tftpd
# ps aux | grep ftp
root      7915  0.0  0.0   2704   296 ?        Ss   22:10   0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot

Eu tentei editar suas configurações (observe o nome de usuário nobody ):

# nano /etc/xinetd.d/tftp
# cat /etc/xinetd.d/tftp
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = -v -s /tftpboot
disable         = no
}

Mas ao reiniciar o tftpd, nada muda:

# kill 7915
# ps aux | grep ftp
root     16815  0.0  0.0   2704   124 ?        Ss   22:31   0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot

Então, tentei editar o outro arquivo de configuração:

# nano /etc/inetd.conf
# cat /etc/inetd.conf
# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet superserver configuration database
#
#
# Lines starting with "#:LABEL:" or "#<off>#" should not
# be changed unless you know what you are doing!
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# Packages should modify this file by using update-inetd(8)
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
#:INTERNAL: Internal services
#discard                stream  tcp     nowait  root    internal
#discard                dgram   udp     wait    root    internal
#daytime                stream  tcp     nowait  root    internal
#time           stream  tcp     nowait  root    internal

#:STANDARD: These are standard services.

#:BSD: Shell, login, exec and talk are BSD protocols.

#:MAIL: Mail, news and uucp services.

#:INFO: Info services

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp            dgram   udp4    wait    nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot

#:RPC: RPC based services

#:HAM-RADIO: amateur-radio services

#:OTHER: Other services

Depois tente reiniciar:

# kill 16815
# ps aux | grep ftp
root     18287  0.0  0.0   2704   120 ?        Ss   22:34   0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot

Mas, como você pode ver, nada mudou.

Eu reduzi a saída acima para melhor legibilidade.

Então, como eu posso dizer qual daemon tftp está sendo executado e quais são os arquivos de configuração & log de erro?

Editar # 1 (21 de janeiro de 2014, 07:33 UTC):
Resposta ao comentador @ "Mark Plotnick"

# ps -efl|grep tftp
1 S root     18287     1  0  80   0 -   676 poll_s Jan20 ?        00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot
0 S root     19271 10638  0  80   0 -  1097 pipe_w 11:36 pts/1    00:00:00 grep --color=auto tftp
# ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:03 init

Resposta ao respondente @ "slm"

Eu executei os comandos que você escreveu depois de importá-los para o Ubuntu 12.04:

# dpkg --list | grep tftp
ii  atftp                                        0.7.dfsg-11                                      advanced TFTP client
ii  tftp                                         0.17-18ubuntu2                                   Trivial file transfer protocol client
rc  tftpd                                        0.17-18ubuntu2                                   Trivial file transfer protocol server
ii  tftpd-hpa                                    5.2-1ubuntu1                                     HPA's tftp server
# dpkg --listfiles tftpd-hpa
/.
/usr
/usr/sbin
/usr/sbin/in.tftpd
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/doc
/usr/share/doc/tftpd-hpa
/usr/share/doc/tftpd-hpa/README
/usr/share/doc/tftpd-hpa/README.security
/usr/share/doc/tftpd-hpa/README.Debian
/usr/share/doc/tftpd-hpa/copyright
/usr/share/doc/tftpd-hpa/examples
/usr/share/doc/tftpd-hpa/examples/sample.rules
/usr/share/doc/tftpd-hpa/examples/tftpd-hpa.preseed
/usr/share/doc/tftpd-hpa/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/tftpd-hpa
/etc
/etc/init
/etc/init/tftpd-hpa.conf
/etc/init.d
/usr/share/man/man8/tftpd.8.gz
/etc/init.d/tftpd-hpa
# dpkg --status tftpd-hpa
Package: tftpd-hpa
Status: install ok installed
Priority: extra
Section: net
Installed-Size: 137
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Source: tftp-hpa
Version: 5.2-1ubuntu1
Depends: debconf (>= 0.5) | debconf-2.0, upstart-job, libc6 (>= 2.11), libwrap0 (>= 7.6-4~), adduser
Suggests: syslinux-common
Conflicts: atftpd, tftpd
Conffiles:
 /etc/init/tftpd-hpa.conf 3647737c313ad1968b8463388ded2d26
Description: HPA's tftp server
 Trivial File Transfer Protocol (TFTP) is a file transfer protocol, mainly to
 serve boot images over the network to other machines (PXE).
 .
 tftp-hpa is an enhanced version of the BSD TFTP client and server. It
 possesses a number of bugfixes and enhancements over the original.
 .
 This package contains the server.
Homepage: http://www.kernel.org/pub/software/network/tftp/
Original-Maintainer: Daniel Baumann <[email protected]>
# /usr/sbin/in.tftpd --version
tftp-hpa 5.2, with remap, with tcpwrappers
# sudo lsof -p $(pgrep -n "in.tftpd")
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/tlvlab/.gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE     DEVICE SIZE/OFF     NODE NAME
in.tftpd 18287 root  cwd    DIR       0,20        0  9575553 /
in.tftpd 18287 root  rtd    DIR        8,1     4096        2 /
in.tftpd 18287 root  txt    REG        8,1    35008   270805 /usr/sbin/in.tftpd
in.tftpd 18287 root  mem    REG        8,1    47040 28836074 /lib/i386-linux-gnu/libnss_files-2.15.so
in.tftpd 18287 root  mem    REG        8,1    42652 28836073 /lib/i386-linux-gnu/libnss_nis-2.15.so
in.tftpd 18287 root  mem    REG        8,1    30520 28836075 /lib/i386-linux-gnu/libnss_compat-2.15.so
in.tftpd 18287 root  mem    REG        8,1    92016 28836060 /lib/i386-linux-gnu/libnsl-2.15.so
in.tftpd 18287 root  mem    REG        8,1  1734120 28836077 /lib/i386-linux-gnu/libc-2.15.so
in.tftpd 18287 root  mem    REG        8,1    35032 28836781 /lib/i386-linux-gnu/libwrap.so.0.7.6
in.tftpd 18287 root  mem    REG        8,1   134344 28836067 /lib/i386-linux-gnu/ld-2.15.so
in.tftpd 18287 root    0u   CHR        1,3      0t0     1029 /dev/null
in.tftpd 18287 root    1u   CHR        1,3      0t0     1029 /dev/null
in.tftpd 18287 root    2u   CHR        1,3      0t0     1029 /dev/null
in.tftpd 18287 root    3u  unix 0xf0030d80      0t0  2154638 socket
in.tftpd 18287 root    4u  IPv4    2154641      0t0      UDP *:tftp

Provavelmente, o caminho para o arquivo de log é /var/log/syslog (o arquivo /etc/syslog.conf não existe).

    
por Dor 20.01.2014 / 19:38

1 resposta

2

Esta configuração de tftpd está sendo gerenciada pelo super servidor xinetd . Portanto, os arquivos de configuração que você está listando são os únicos para a configuração de tftpd como um serviço fornecido por xinetd .

Estou usando o Fedora 19, mas uma abordagem semelhante com os gerenciadores de pacotes de outras distros pode ser realizada com resultados semelhantes.

Qual é o nome do pacote do tftpd?

Usando o RPM, é muito simples de descobrir.

$ rpm -qa | grep tftp
tftp-server-0.49-2.el5.centos

Portanto, no CentOS 5.x, o pacote é chamado de 'tftp-server. Ele também mostra a versão, mas nós vamos chegar a isso em um segundo.

Quais arquivos estão incluídos na instalação?

Outra fácil com a ajuda de um gerenciador de pacotes.

$ rpm -ql tftp-server
/etc/xinetd.d/tftp
/tftpboot
/usr/sbin/in.tftpd
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz

OBSERVAÇÃO: que não há outro arquivo de configuração, portanto, toda a configuração desta versão de tftpd é feita por meio da linha de comando. Isso é importante notar, pois isso nos diz que teremos que alterar tftpd no arquivo xinetd service, /etc/xinetd.d/tftp . Observe também que tftpd tem uma página man, o que será útil se não tivermos certeza do que muda para definir / desativar também.

Qual é a versão?

Você pode obter essas informações de várias maneiras. O mais fácil é criá-lo a partir do gerenciador de pacotes.

$ rpm -qi tftp-server
Name        : tftp-server                  Relocations: (not relocatable)
Version     : 0.49                              Vendor: CentOS
Release     : 2.el5.centos                  Build Date: Sat 26 Sep 2009 12:28:27 PM EDT
...

Muitas vezes também podemos obtê-lo da própria ferramenta.

$ /usr/sbin/in.tftpd --version
tftp-hpa 0.49, with remap, with tcpwrappers

A página man

Um interruptor que vale a pena notar é o interruptor de verbosidade.

   --verbose, -v
          Increase  the  logging  verbosity  of tftpd.  This flag can be 
          specified multiple times for even higher verbosity.

Você pode adicionar mais -v switches para obter uma saída mais detalhada nos logs, especificamente nas seguintes linhas:

server          = /usr/sbin/in.tftpd
server_args     = -s /tftpboot -vv

Registro em log?

Olhando através da página man, não parece haver nenhum interruptor adicional além dos interruptores de verbosidade. Então, considerando isso, e o fato de que esse é um xinetd service, o log provavelmente está nos logs padrão do syslog, /var/log/messages no CentOS. Em outras distros (Debian / Ubuntu), este arquivo é normalmente chamado de /var/log/syslog .

Você pode ver onde syslog registra meu pico em seu arquivo de configuração, more /etc/syslog.conf .

O que mais?

Você também pode usar um lsof para descobrir quais arquivos um processo em particular está usando. Assim, você pode descobrir quais arquivos de configuração um determinado processo está usando por meio desse método. Embora muitas vezes um daemon abra a configuração, leia-a e feche-a, mas você também pode obter sorte.

Também com serviços que são iniciados sob demanda, como é o caso dos serviços baseados em xinetd , eles normalmente não estão em execução, até que alguém tente acessá-los, então é provável que nenhum processo seja questionado.

Veja um exemplo de httpd (que é o Apache) apenas para efeito.

$ sudo lsof -p $(pgrep -n http) | head -7
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
httpd   3832 apache  cwd    DIR  252,0     4096       2 /
httpd   3832 apache  rtd    DIR  252,0     4096       2 /
httpd   3832 apache  txt    REG  252,0   332264 1355575 /usr/sbin/httpd
httpd   3832 apache  mem    REG  252,0   144776 2031805 /lib64/ld-2.5.so
httpd   3832 apache  mem    REG  252,0   614992 3473627 /lib64/libm-2.5.so
httpd   3832 apache  mem    REG  252,0   129984 2031683 /lib64/libpcre.so.0.0.1
    
por 20.01.2014 / 21:24

Tags