sábado, 29 de outubro de 2016

Configurando um servidor Linux

Se você ficou empolgado com a possibilidade de executar o .net core no Linux para ver como estão as coisas, há dois cursos bem interessantes na Udacity para ajudar com a sua familiarização do ambiente.

O primeiro curso, é o Linha de Comando Linux Básico que cheguei a fazer o post Executando o Bash no Windows para servir de consulta rápida.

Outro curso muito bem feito pela Udacity é o Configuring Linux Web Servers (Your First Ubuntu Server) que foi fonte para as anotações abaixo:

Alguns comandos ensinados nas aulas

Para atualizar a lista de últimos pacotes disponíveis, que ficam no arquivo /etc/apt/sources.list
sudo apt-get update
Mais info no em "What does “sudo apt-get update” do?"


Para atualizar os pacotes no sistema (Ou seja, atualizar os pacotes instalados)
apt-get upgrade

Para remover pacotes não mais utilizados
apt-get autoremove

Para instalar novos pacotes
apt-get install [pacote]

Para descobrir pacotes disponíveis cada fornecedor linux normalmente mantém uma página para consulta. Você pode consultar os pacotes disponíveis para o Ubuntu neste link.

Administrando super usuários

É uma boa prática de segurança no linux  desabilitar o usuário root para acesso remoto. Para fazer isso, primeiro deve-se criar um usuário que poderá acessar como root:
sudo adduser [usuário]

O pacote finger permite administrar os usuários.Para confirmar que o usuário foi criado:
finger [usuário]

Para logar com o usuário:
ssh [usuário]@[ip] -p [porta]
Exemplo:
ssh student@127.0.0.1 -p 2222

Para forçar a expiração da senha do usuário, basta executar este comando:
sudo passwd -e [usuário]


Para listar usuários que podem acessar como super usuários (sudo):
sudo cat /etc/sudoers
No Ubuntu, os arquivos do diretório /etc/sudoers.d também são incluídos como usuários root, então para saber super usuários também devemos consulta-lo:
sudo ls /etc/sudoers.d

Para mais informações do sudoers:
https://help.ubuntu.com/community/Sudoers

Logando por chave de segurança


Para gerar uma chave pública privada deve-se utilizar o comando:
ssh-keygen

Passo a passo de como definir o SSH key:How To Set Up SSH Keys

Entendendo as permissões no Linux

Todo arquivo ou diretório no linux tem permissão baseado em três grupos:
owner (dono), group (grupo), all users (todos usuário).


Há três tipos de permissões para cada grupo:
r = Read(leitura) = 4
w = Write(escrita) = 2
x = eXecute(executar) =  1

Para ver as permissões dos arquivos do diretório basta executar o comando ls -l



Para alterar as permissões em um arquivo basta executar o comando chmod [octal file permission] (que é composto por 3 números, 1 para cada grupo de permissão. Para dar a permissão - r-- -w- --x deve-se digitar chmod 421)

Para alterar grupo deve-se usar o comando chgrp. Para alterar o dono do arquivo deve-se utilizar o comando chown.


Mais informações em Understanding Linux File Permissions

Portas

A forma de acessar um servidor externamente é sempre por portas. As portas direcionam comandos para aplicativos, e estes podem responder por elas. Há padrões de porta e tipo de aplicativo associado como http é a porta 80. Mais informações "List of TCP and UDP port numbers"

Firewall

Ubuntu vem instalado com o firewall ufw.

Para ver o status deste firewall, basta executar o comando abaixo:
sudo ufw status

Para negar todo recebimento no servidor:
sudo ufw default deny incoming

Para habilitar todo envio:
sudo ufw default allow outgoing

Para habilitar a porta do ssh:
sudo ufw allow ssh

Para habilitar a porta do ssh no vagrant:
sudo ufw allow 2222/tcp

Para habilitar a porta de http básico:
sudo ufw allow www

Para habilitar o firewall
sudo ufw enable

As configurações básicas se encerram aqui, os próximos passos é escolher quais as configurações dos aplicativos que você irá rodar no servidor Linux.

Exemplos de configurações de alguns servidores (em breve quero fazer para o .net core):