O artigo está divido em duas partes, que são:
- Parte I: Segurança do servidor FTP.
- Parte II: Instalação, configuração, segurança e testes do FTP: vsftp.
Segurança do servidor FTP
Primeiramente, atualize o seu sistema operacional (CentOS/Red Hat/Fedora):
# yum update
Deixe o SELinux ativado. No
CentOS/Red Hat, edite o arquivo
/etc/selinux/config.
E mantenha a linha:
SELINUX=enforcing
IPtables
Vamos deixar a política INPUT como DROP, reforçando a segurança, e liberando apenas o FTP.
Regras:
# /sbin/iptables -F
# /sbin/modprobe nf_conntrack_ftp
# /sbin/iptables -P INPUT DROP
# /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
# /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
# /sbin/iptables -A INPUT -p ALL -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# /sbin/iptables -A OUTPUT -p ALL -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Para deixar as regras em modo persistente, execute:
# iptables save
E configure o módulo FTP para carregar automaticamente no IPtables:
# /etc/init.d/iptables save
Deixe o módulo "nf_conntrack_ftp" automático. Edite e deixe a linha como abaixo:
# vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"
TCP Wrappers + SSH + FTP
Como o FTP, que nós vamos configurar, é baseado em logins, e estes logins são contas ativas no servidor, vamos limitar o acesso SSH apenas a
nossa rede interna, utilizando o TCP Wrappers. Evitando ataques com sucesso no SSH utilizando contas FTP.
O FTP como é público, é acessível a todos. TCP Wrappers, resumidamente, é uma camada de segurança, para controlar o acesso a daemons do
sistema.
Editar os arquivos
/etc/hosts.allow e
/etc/hosts.deny: ALLOW - /etc/hosts.allow
# vi /etc/hosts.allow
Permitindo o acesso SSH, apenas para a nossa rede interna:
sshd: 192.168.0.0/24, 10.0.0.0/8
#FTP para todos:
vsftpd: ALL
DENY (/etc/hosts.deny) - O que não for permitido no
hosts.allow, será automaticamente bloqueado.
# vi /etc/hosts.deny
ALL: ALL
SSH
Conforme comentei acima, as contas dos usuários FTP são contas válidas, em um ataque de
brute force SSH, alguém conseguiria logar-
se no servidor com uma conta FTP.
Então, vamos dar mais uma incrementada na segurança do FTP. Fora o TCP Wrappers abordado acima, edite o arquivo e deixe as linhas:
# vi /etc/ssh/sshd_config
PermitRootLogin no
#Libere apenas os usuários que devam acessar via SSH:
AllowUsers usuariosshexemplo