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/mods-
available
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
●