anúncios

sábado, 11 de fevereiro de 2012

Configurando servidor FTP(Proftpd) no Linux

O serviço FTP faz parte da camada de aplicação do modelo OSI, e é bastante utilizado para transferências de arquivos na internet. Nesse post explico a instalação e configuração do servidor FTP usando o proftpd, por ser considerado mais seguro para servidores FTP.

Instalação
Debian: #apt-get install proftpd
CentOS: #yum install proftpd
Slackware: Se durante a instalação marcou a categoria [N]
[N]pacotes de redes (TCP/IP, UUCP, Mail, News).
Apache, Bind, Dhcpd, Imapd, Iproute2, Iptables, Nmap, PHP, Samba, Sendmail, Proftpd, etc;
Então já esta instalado o proftpd!

Configuração do Proftpd
Debian: #vim /etc/proftpd/proftpd.conf
CentOS: #vim /etc/proftpd.conf
Slackware: #vim /etc/proftpd.conf

proftpd.conf

# This is a basic ProFTPD configuration file.
# It establishes a single server and a single anonymous login.
# It assumes that you have a user/group "nobody" and "ftp"
# for normal/anonymous operation.

ServerName "Mundo da Computação"
ServerType standalone
DefaultServer on
DefaultRoot ~

# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30

# Set the user and group that the server normally runs at.
User nobody
Group nogroup

# This next option is required for NIS or NIS+ to work properly:
#PersistentPasswd off

SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog

# Normally, we want files to be overwriteable.

AllowOverwrite no


# A basic anonymous FTP server configuration.
# To enable this, remove the user ftp from /etc/ftpusers.

RequireValidShell off
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
comentei para não permitir conexão ftp com usuário anônimo
#UserAlias anonymous ftp

# Limit the maximum number of anonymous logins
MaxClients 30

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message

# Limit WRITE everywhere in the anonymous chroot

DenyAll


# An upload directory that allows storing files but not retrieving
# or creating directories.
#
#
# DenyAll
#

#
#
# AllowAll
#

#

Criando usuários
#useradd -m -s /bin/false saitam
#passwd saitam
criado um usuário exclusivo para o FTP.

Ajustes finais
CentOS: #vim /etc/pam.d/proftpd
Altere a linha "pam_shells.so" deixando assim:
auth option pam_shells.so

Caso esteja com SELinux ativo
#setsebool -P FTPNomeDir 1

Slackware e Debian: #vim /etc/inetd.conf
edite a linha (comentando com '#')

#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd


Iniciando o serviço Proftpd
Debian: ]#/etc/init.d/proftpd start
CentOS: #service proftpd start
Slackware: #proftpd

Para verificar se o proftpd esta em execução digite:
#ps aux | grep proftpd
deve aparecer algo como proftpd: (accepting connections)

Testando
Na máquina cliente no browser ou terminal faça:
ftp://IP-SERVIDOR
irá pedir usuário e senha que você criou, digite e terá acesso ao servidor FTP que acabou de configurar.

Caso tiver o serviço DNS configurado conforme aqui então
ftp://DOMINIO-SERVIDOR

NOTAS
Se caso ocorrer falha na conexão, então verifique dois pontos:
1. Se o proftpd esta em executação -> ps aux | grep proftpd
2. Adicione no seu script de firewall a regra liberando o acesso FTP

#para acessar FTP externo
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#para acessar FTP interno
iptables -A FORWARD -p tcp -s $LAN -d $ipServerFTP --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s $LAN -d $ipServerFTP --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp -s $LAN -d $ipServerDNS --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s $LAN -d $ipServerDNS --dport 53 -j ACCEPT


Feito!

2 comentários:

  1. amigo nao estou conseguindo editar os arquivos do ftp no cliente vc tem ideia do q pode ser?
    uso o debian 6 eo cliente um um windows 7

    desde ja agradeço

    ResponderExcluir
    Respostas
    1. Verifique se o diretório onde estão os arquivos no cliente estão com permissão de leitura e escrita (rw).
      Esta fazendo acesso FTP pelo browser por meio do protocolo ftp://dominio ou utilizando um cliente FTP (Filezila por exemplo) ?

      Excluir