Configuração de servidores Linux Jonathan de Matos https://jonathandematos.wordpress.com/
Conteúdo Seleção do servidor Instalando o Linux Gerência de usuários Configurando firewall Instalando e configurando Apache HTTP Instalando e configurando PHP Instalando MySQL Instalando e configurando FTP
Tipo de servidor Servidor Web Web + PHP (Apache HTTP) Web + Perl (Apache HTTP) Web + Java (Apache Tomcat) Web para conteúdo estático (Nginx, lighttpd) Web de alta demanda (Varnish) Servidor de DHCP (udhcpd, isc-dhcp,...) Servidor de DNS (bind, unbound) Servidor de Log (Syslog, rsyslog, logstash, elasticsearch) Servidor de gerência de redes (Nagios, Zabbix, cacti, nfsen,...)
Tipo de servidor Servidor de arquivos NFS Samba (SMB Windows) Servidor de autenticação (LDAP, NIS,...) Servidor de E-mail (postfix) Servidor de Banco de Dados MySQL, Postgres, Sybase, Mongo, HSQL Servidor FTP (proftp, pureftp,...) Servidor de Impressão (cups)
Distribuição Debian Slackware Ubuntu (server) Fedora Red Hat CentOS SUSE OpenSUSE
Instalação Conhecer a rede Conhecer o armazenamento Saber qual tipo de servidor você precisa Entender as mídias de instalação DVD CD Pendrive (recomendado) Ferramenta dd
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Instalação
Verificação da instalação e gerência de usuários Com o término da instalação o sistema irá reiniciar e estar pronto para a configuração Depois do login como root é adequado verificar o estado do armazenamento Ferramenta mount e df É importante também verificar a conectividade Ferramentas como ping, traceroute, ifconfig Alterar as senhas utilizadas na instalação para senhas mais seguras e remover usuários inúteis
Gerência de usuários A alteração de senha é realizada utilizando o utilitário passwd A gerência de usuários (adição, remoção e modificação) pode ser realizada com os utilitários adduser, userdel e usermod As ferramentas em linha de comando do Linux possuem help e páginas de manual O help geralmente é acessível com a opção -h Os manuais pela ferramenta man
Gerência de usuários Não é recomendável utilizar o sistema como superusuário (root) Para isso existe a ferramenta sudo e su Os usuários que deverão ter nível de permissão mais alto devem ser colocados no grupo sudo Para colocar permissões especiais para algum usuário pode ser utilizada a ferramenta visudo para editar indiretamente o arquivo sudoers
Diretórios Os diretórios mais importantes do Linux são: / raiz do sistema /home diretórios dos usuários (dentro deste diretório haverá um diretório para cada usuário) /etc arquivos de configuração /bin e /usr/bin executáveis /var arquivos de trabalho (logs, páginas, spool, ) /tmp arquivos temporários e que serão apagados a qualquer momento Diretórios podem ser comuns ou então pontos de montagem, sendo essa diferença não perceptível para o usuário ou programas
Conectividade O primeiro programa que em geral deve ser instalado em um servidor de qualquer tipo é o servidor do protocolo SSH Isso possibilita que o servidor vá para um rack ou então que você não precise mais de um console virtual Em seguida deve-se tomar mais uma medida de segurança, ativando o firewall O firewall é implementado no kernel e pode ser configurado com a ferramenta iptables
Firewall
Firewall Em um servidor com endereço exposto na Internet, podem haver várias tentativas diárias de conexões não autorizadas Dependendo do tipo do servidor que será instalado, as portas que serão mantidas abertas são diferentes HTTP 80 SSH 22 FTP 21 Postgres 5432 MySQL 3306
Firewall O bloqueio pode ser feito com DROP ou REJECT com o iptables iptables -P INPUT DROP iptables -P INPUT REJECT iptables -A INPUT -s 200.200.200.200 -j DROP A abertura de uma porta pode ser realizada com ACCEPT iptables -A INPUT -p tcp dport 22 -j ACCEPT As regras podem ser listadas com -L
Apache HTTP Server O Apache HTTP Server é um programa que basicamente permanece ouvindo por padrão a porta 80 (padrão do protocolo HTTP definido pela IANA) ou 443 (HTTPS) Ele é conhecido popularmente como Apache apenas, porém existem várias outras ferramentas do grupo Apache O Apache é um dos web servers mais conhecidos e bem sucedidos no seu meio devido a sua robustez, porém ele tem alguns problemas
Apache HTTP Server Ele permite a execução de scripts em diversas linguagens através de uma ideia básica chamada CGI A execução de scripts externos podem ser realizadas usando FastCGI ou módulos no Apache Além do CGI, o Apache também possui estrutura multi-processos, chamada prefork ou worker
Apache HTTP Server Um dos principais problemas do Apache é o alto consumo de memória com muitas conexões Para isso existem estruturas de clusters, proxy reversos, caches e outros servidores web O Apache também é bom para atendimento de requisições web dinâmicas, porém consome muitos recursos para requisições estáticas
Apache (configuração) Na nova estrutura de configuração, os sites são configurados em arquivos separados no diretório /etc/apache2/sites-available Uma vez criado o arquivo de configuração do seu novo site no diretório citado, deve-se criar um link simbólico no diretório /etc/apache2/sites-enable para o mesmo Os nomes dos arquivos são livres, mas recomenda-se usar nomes significativos
Apache (configuração) Se os arquivos de configuração não estiverem neste local, pode ser que o Apache não foi instalado No Debian, a instalação de programas mais comuns deve ser realizada pelo apt. apt-get install apache2 Não é recomendável a instalação de nenhum programa em um servidor Debian que não esteja disponível nos repositórios comuns
Apache (configuração) Existem configurações do apache nos arquivos /etc/apache2/apache2.conf e /etc/apache2/ports.conf O Apache também permite o uso de módulos extras, como SSL, autenticação, cache, dav, proxy, ftp, entre outros Os módulos disponíveis podem ser encontrados, juntamente com sua configuração, no diretório /etc/apache2/modsavailable
Apache (configuração) Um dos módulos muito utilizados atualmente é o que possibilita a execução de scripts PHP Para ativar um módulo, deve ser criado um link simbólico para o seu arquivo de configuração no diretório /etc/apache2/mods-enabled No caso do PHP, pode ser que o módulo não esteja disponível, pois são necessários alguns pacotes Uma das formas de descobrir qual o nome exato do pacote para a instalação é usando a ferramenta apt-cache apt-cache search [nome aproximado do pacote]
Apache (configuração) Para encontrar o nome do pacote PHP e o módulo para o Apache você pode usar: apt-cache search php grep apache O módulo é o libapache2-mod-php5 Obviamente o pacote do PHP 5 também será instalado graças as dependências dos pacotes do Debian Os links para a ativação serão criados automaticamente, porém existe uma ferramenta para facilitar isso também a2enmod a2ensite a2enconf Criação de usuários no Apache htpasswd -c /etc/apache2/basic.auth teste
Apache (configuração de site) <VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/teste ErrorLog ${APACHE_LOG_DIR}/error_teste.log CustomLog ${APACHE_LOG_DIR}/access_teste.log combined <Location /> Options +Indexes AllowOverride All AuthType basic AuthName "Basic" AuthUserFile /etc/apache2/basic.auth Require valid-user </Location> php_admin_value display_errors on Alias /downloads /home/apache/downloads <Directory /home/apache/downloads> Allow from 127.0.0.1 Deny from all Order deny,allow </Directory> </VirtualHost>
Apache (permissões) Geralmente o Apache executa usando o usuário www-data e o grupo www-data Todos os arquivos dos sites devem ter permissão de leitura para este usuário e grupo Diretórios onde o Apache escreverá arquivos também devem ter permissão para este usuário e grupo escreverem chown [-R] [usuario.grupo] [nome do arquivo] chmod [-R] [ugo+rwx] ou [777] [nome_do_arquivo_ou diretorio] find./ -type d -exec [cmd] {} \; ls -lah Cuidado com diretórios onde os usuários fazem upload de arquivos e diretórios via FTP
MySQL Novamente, o mais correto no Debian é a instalação usando pacotes do repositório oficial apt-get install mysql-server-5.5 Durante a instalação será pedida a nova senha de superusuário do MySQL Importante, não esqueça esta senha Por padrão o MySQL só ouvirá no endereço de localhost é o suficiente no caso de um servidor múltiplo, além de mais seguro Para mudar configurações, por exemplo o endereço de conexão, basta editar o arquivo /etc/mysql/my.cnf
MySQL e PHP O PHP pode acessar o MySQL através de uma biblioteca de conexão Esta biblioteca pertence PHP e deve ser instalada usando o comando apt apt-get install php5-mysql Existem diversas outras bibliotecas para o PHP, sejam para conexão com outros bancos, criação de imagens, envio de e-mail, etc Uma maneira bem simples de saber quais bibliotecas estão disponíveis é usando a função phpinfo();
FTP O acesso usando FTP é uma das maneiras mais comuns de disponibilizar acesso para os clientes aos seus sites Um bom servidor FTP para o Debian é o Pure- FTPd Uma das vantagens é a possibilidade de usar virtual chroot Permite diversos tipos de autenticação A instalação deve ser realizada também pelo apt apt-get install pute-ftpd
FTP O modo mais rápido e não flexível de autenticação é usando as senhas do próprio sistema Desabilita-se a autenticação PAM Habilita-se a autenticação UNIX Cuidar com o login shell do usuário e com o diretório de login Prestar atenção nos grupos dos usuários e na flag setguid do sistema de arquivos Utilizar o VirtualChroot no arquivo /etc/defaults/pure-ftpd e yes no arquivo /etc/pureftpd/conf/chrooteveryone
Conclusão Esta é uma configuração muito básica de um servidor web O mais adequado é não utilizar o mesmo servidor como servidor web e de banco de dados no mesmo servidor, mas Deve-se tomar muito cuidado com um servidor web, pois ele é um atrativo muito grande para invasores e uma ótima vitrine