A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.
A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.
O servidor web disponível no RHEL 7 é a versão 2.4 do Apache HTTP Server. Quanto ao servidor FTP, utilizaremos o Very Secure Ftp Daemon (também conhecido como vsftpd) para estabelecer conexões seguras por TLS.

Neste artigo, explicaremos como instalar, configurar e proteger um servidor web e um servidor FTP no RHEL 7.
Instalando o Apache e o Servidor FTP
Neste guia, utilizaremos um servidor RHEL 7 com um endereço IP estático de 192.168.0.18/24. Para instalar o Apache e o VSFTPD, execute o seguinte comando:
# yum update && yum install httpd vsftpd
Quando a instalação estiver concluída, ambos os serviços estarão desativados inicialmente, então precisamos iniciá-los manualmente por enquanto e habilitá-los para iniciar automaticamente a partir do próximo boot:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
Além disso, precisamos abrir as portas 80 e 21, onde os daemons web e ftp estão ouvindo, respectivamente, para permitir o acesso a esses serviços de fora:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
Para confirmar que o servidor web está funcionando corretamente, abra seu navegador e insira o IP do servidor. Você deverá ver a página de teste:

Quanto ao servidor ftp, teremos que configurá-lo mais adiante, o que faremos em um minuto, antes de confirmar que está funcionando conforme o esperado.
Configurando e Protegendo o Servidor Web Apache
O arquivo de configuração principal do Apache está localizado em /etc/httpd/conf/httpd.conf
, mas pode depender de outros arquivos presentes dentro de /etc/httpd/conf.d
.
Embora a configuração padrão deva ser suficiente para a maioria dos casos, é uma boa ideia se familiarizar com todas as opções disponíveis, conforme descrito na documentação oficial.
Como sempre, faça uma cópia de backup do arquivo de configuração principal antes de editá-lo:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Em seguida, abra-o com o editor de texto de sua preferência e procure pelas seguintes variáveis:
- ServerRoot: o diretório onde os arquivos de configuração, erro e log do servidor são mantidos.
- Listen: instrui o Apache a ouvir em um endereço IP específico e/ou portas.
- Include: permite a inclusão de outros arquivos de configuração, que devem existir. Caso contrário, o servidor falhará, ao contrário da diretiva IncludeOptional, que é ignorada silenciosamente se os arquivos de configuração especificados não existirem.
- User e Group: o nome do usuário/grupo para executar o serviço httpd.
- DocumentRoot: O diretório do qual o Apache servirá seus documentos. Por padrão, todas as solicitações são atendidas a partir deste diretório, mas links simbólicos e aliases podem ser usados para apontar para outras localizações.
- ServerName: essa diretiva define o nome do host (ou endereço IP) e a porta que o servidor usa para se identificar.
A primeira medida de segurança consistirá em criar um usuário e grupo dedicados (ou seja, tecmint/tecmint) para executar o servidor web e alterar a porta padrão para uma porta mais alta (9000 neste caso):
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
Você pode testar o arquivo de configuração com.
# apachectl configtest
e se tudo estiver OK, então reinicie o servidor web.
# systemctl restart httpd
e não se esqueça de habilitar a nova porta (e desabilitar a antiga) no firewall:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Observe que, devido às políticas do SELinux, você só pode usar as portas retornadas por
# semanage port -l | grep -w '^http_port_t'
para o servidor web.
Se você quiser usar outra porta (ou seja, a porta TCP 8100), você terá que adicioná-la ao contexto de porta do SELinux para o serviço httpd:
# semanage port -a -t http_port_t -p tcp 8100

Para tornar a instalação do Apache mais segura, siga estes passos:
1. O usuário no qual o Apache está sendo executado não deve ter acesso a um shell:
# usermod -s /sbin/nologin tecmint
2. Desabilite a listagem de diretórios para evitar que o navegador exiba o conteúdo de um diretório se não houver um arquivo index.html presente nesse diretório.
Edite o arquivo /etc/httpd/conf/httpd.conf
(e os arquivos de configuração para virtual hosts, se houver) e certifique-se de que a diretiva Options, tanto no topo quanto nos blocos de diretórios, esteja definida como None:
Options None
3. Oculte informações sobre o servidor web e o sistema operacional nas respostas HTTP. Edite o arquivo /etc/httpd/conf/httpd.conf
da seguinte forma:
ServerTokens Prod ServerSignature Off
Agora você está pronto para começar a servir conteúdo do seu diretório /var/www/html.
Configurando e Segurando o Servidor FTP
Assim como no caso do Apache, o arquivo de configuração principal para o Vsftpd (/etc/vsftpd/vsftpd.conf)
é bem comentado e, embora a configuração padrão deva ser suficiente para a maioria das aplicações, você deve se familiarizar com a documentação e a página do manual (man vsftpd.conf)
para operar o servidor ftp de forma mais eficiente (não posso enfatizar o suficiente!).
No nosso caso, essas são as diretivas usadas:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
Ao usar chroot_local_user=YES
, os usuários locais serão (por padrão) colocados em uma prisão chroot em seus diretórios pessoais logo após o login. Isso significa que os usuários locais não poderão acessar arquivos fora de seus diretórios pessoais correspondentes.
Por fim, para permitir que o ftp leia arquivos no diretório pessoal do usuário, defina o seguinte booleano do SELinux:
# setsebool -P ftp_home_dir on
Agora você pode se conectar ao servidor ftp usando um cliente como o Filezilla:

Observe que o registro de log /var/log/xferlog
registra downloads e uploads, que coincidem com a listagem de diretórios acima:

Leia Também: Limite a largura de banda da rede FTP usada por aplicativos em um sistema Linux com Trickle
Resumo
Neste tutorial, explicamos como configurar um servidor web e um servidor FTP. Devido à vastidão do assunto, não é possível abordar todos os aspectos desses tópicos (por exemplo, hospedagem virtual de sites). Portanto, recomendo que você também verifique outros excelentes artigos neste site sobre Apache.
Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/