DIANA MARTINS


Esta reflexão foi realizada no dia 7/01/2016.
Iniciámos este módulo com uma introdução aos comandos do terminal no sistema operativo Ubuntu. A linha de comandos é um programa que transmite comandos ao sistema operativo, de maneira a que estes sejam executados. No terminal podemos navegar através de ficheiros e pastas, mas de uma forma totalmente baseada numa interface de texto. Este programa é importante pois podemos instalar e executar programas no computador, realizar tarefas e combinar diferentes comandos de forma a lidarmos com tarefas mais difíceis.
Existem algumas informações importantes para o usuário na janela do terminal como por exemplo o prompt, ‘utilizador@host:~$’, isto permite ao usuário saber a sua localização, ou seja, qual o utilizador e em que computador está a trabalhar, o ‘@’ significa que estes estão vinculados, o ‘~’ significa que a localização atual é na pasta pessoal do usuário ativo e o ‘$’ significa que o utilizador é um utilizador normal, sem privilégios, para que o usuário efetue operações como administrador terá de estar registado ‘#’ em vez de ‘$’.
Instalámos o programa Terminator, este programa consiste num terminal com um ambiente gráfico normal mas com a opção de podermos adicionar mais terminais e estes estarem divididos em grelha, todos na mesma janela.
Alguns dos comandos mais comuns são o comando ‘who’ que permite ao utilizador saber quais os utilizadores que estão ligados ao sistema, ‘ls’ este lista os conteúdos de um diretório, o comando ‘cd’ permite deslocarmo-nos entre diretórios do sistema, se usuário quiser em que diretório se encontra no momento, utiliza-se o comando ‘pwd’. O comando ‘apt’ permite a atualização e a instalação de pacotes, este comando apenas pode ser executado como administrador, para isso utiliza-se o comando ‘sudo’ antes, este permite aos usuários comuns terem privilégios de administrador e também para poder haver uma maneira segura e controlada pelo administrador de executar determinadas tarefas dentro do sistema. O comando ‘cp’ permite copiar, o comando ‘mv’ permite mover e o comando ‘rm’ permite remover ficheiros e diretórios, o comando ‘mkdir’ possibilita criar diretórios e ‘touch’ cria um arquivo. Quanto aos utilitários de texto temos o comando ‘cat’, este apresenta o conteúdo de um arquivo, o comando ‘head’ permite ver as dez primeiras linhas de um ficheiro e o comando ‘tail’ possibilita visualizar as dez últimas linhas de um ficheiro, se quisermos editar um ficheiro, utilizamos o comando ‘nano’, o comando ‘grep’ filtra as linhas de um arquivo de acordo com um determinado padrão de pesquisa. Dentro do ficheiro quando existe um ‘#’ antes da linha, significa que essa mesma linha é comentada, ou seja, esta não é executável. O comando ‘du’ permite-nos saber o tamanho de uma pasta. O comando ‘history’ permite visualizar os últimos comandos utilizados. O comando ‘>’ permite redirecionar o output de um comando para um ficheiro, o comando ‘|’ (pipe) permite redirecionar o output de um comandos para outro comando, ‘*’ permite selecionar um determinado grupo de ficheiros. Dentro das opções de rede podemos usar os comandos ‘ifconfig’ este permite configurar os interfaces da rede e ‘ping’ para testar a conectividade. O comando ‘man’ permite aceder ao manual de um determinado comando. O comando ‘remove’ permite remover pacotes e o ‘purge’ remove configurações.
Falámos também de caminho absoluto e caminho relativo, o caminho absoluto começa sempre com uma ‘/’, esta barra é referente ao diretório raiz, a partir de qual, todos os caminhos absolutos derivam, este identifica o caminho de acesso desde a raiz, por exemplo ‘cd /animais/cães/labrador.img’ e o caminho relativo não possui uma ‘/’ antes e indica o caminho de acesso ao ficheiro a partir do diretório atual, por exemplo, ‘cd documentos’.
Depois da consolidação dos comandos através de alguns exercícios realizados num terminal instrutivo no site codecademy, procedemos à criação e instalação do servidor Ubuntu no Virtual Box, quando criamos uma máquina virtual temos de ter em conta a versão do Ubuntu, a memória RAM necessária, o tipo e tamanho de disco rígido virtual, e proceder à instalação através da associação do iso do Ubuntu server, é importante termos conta o fator das atualizações quando queremos instalar um servidor, pois estas devem ser feitas manualmente pelo utilizador e fora da hora de maior fluxo, o utilizador deve também estabelecer uma frequência para as atualizações dependendo de cada um, por último nas definições devemos configurar o adaptador de rede, sendo este adaptador ‘briged’. Depois do servidor instalado procedemos às suas atualizações. No servidor instalámos o SSH (Secure Shell) através do Tasksel, o Taskel é uma ferramenta que permite ao utilizador configurar o seu sistema para poder realizar tarefas específicas (este menu aparece durante o menu de instalação mas pode ser acedida a qualquer momento) o SSH é um protocolo que permite a conexão com outro computador na rede, permitindo assim, que seja possível aceder remotamente. A porta usada para este protocolo é a porta 22. Instalamos também o Nmap, este programa permite fazer uma análise às portas abertas na rede.
Para podermos aceder remotamente a outro computador através do SSH devemos escrever no terminal o seguinte comando, ‘ssh user@host’, para que isto seja possível, a outra maquina tem de estar ligada e o SSH tem de estar instalado no computador remoto. Caso não seja possível fazer a ligação temos de confirmar o endereço do servidor, a conectividade do servidor do cliente e verificar as credencias.
Posteriormente falámos sobre como enviar um ficheiro por e-mail utilizando o terminal e o programa Filezilla, este é um programa do tipo cliente/servidor e que pode ser utilizado para enviar ficheiros para um servidor ou computador através do protocolo STFP (Ssh Transfer File Protocol). Instalamos assim o Filezilla no computador e depois de preenchermos os campos Host, Username, Password e Port e estarmos conectados, efetuamos a copia de um ficheiro localizado no endereço remoto para o endereço local.
Experimentamos também o comando ‘scp’ (secure copy protocol) este protocolo permite copiar ficheiros entre um servidor ssh e uma maquina local, por exemplo ao copiar um ficheiro do servidor para uma maquina iria usar o comando scp origem destino (‘scp user@host:/games/cod.txt /pasta/films/cod.txt). Falámos e experimentamos o comando ‘htop’, este é um gestor de processos e usando o comando ‘killall’ podemos matar os processos que estão a ser executados, mas apenas se o usuário for o ‘dono’ do processo.
Falamos também sobre a segurança das passwords com algumas referencias a Edward Snowden, segundo Edward é preciso menos de um segundo para que seja possível um computador descodificar uma password com oito caracteres, ao termos uma password fraca estamos a comprometer o nosso sistema, por isso a melhor forma de estarmos protegidos é utilizarmos uma passphrase pois esta tem uma encriptação mais forte e combinar esta com palavras, letras, números e carateres especiais.
Depois falámos sobre chaves-privadas e chaves-públicas, uma autenticação por chave-publica é mais segura que uma autenticação por password. Na autenticação por chave-publica, toda a entidade autentificadora é constituída por duas palavras-chave, uma privada e uma publica, cada chave tem propriedades muito específicas, a chave privada é mantida no computador onde estamos ligados enquanto a chave publica esta armazenada num ficheiro ‘ssh/authorized_keys’ em todos os computadores que eu me quero ligar. Quando me ligo a um computador, o servidor SSH usa uma chave publica para bloquear mensagens de maneira que estas só podem ser desbloqueadas através da minha chave privada, isto evita os ataques de força bruta ao servidor, para tentarem adivinhar a password. Em suma a autentificação por chaves num servidor é mais seguro pois este pode criar chaves para que os utilizadores possam ligar-se a um servidor SSH sem utilizarem uma password. Para podermos gerar uma chave RSA privada/publica, e usa-la para iniciar sessão no computador devemos proceder da seguinte forma, criamos uma chave no cliente de ssh usando o seguinte comando ‘ssh-keygen –t rsa’, a chave será gerada e depois escolhemos onde queremos guardar a chave e definimos uma passphrase para a proteger. Depois através do nosso computador via ssh precisamos de transferir a chave rsa cliente (a pública), para o servidor através do comando ‘ssh-
copy-id user@host’.
Para que o nosso servidor esteja mais protegido é necessário mais algumas medidas de segurança, uma delas é alterarmos a porta de serviço do SSH, como a porta padrão do SSH é a porta número 22 e esta é uma das portas default a serem primeiramente procuradas pelos portscaners (ex. nmap), devemos altera-la para uma que não esteja a ser usada, por exemplo a porta 22000. É na pasta etc. que são guardadas as configurações do sistema, por isso dentro dessa pasta acedemos à pasta lls, e é nessa mesma pasta que se encontra o ficheiro llsd_config, é neste ficheiro que iremos efetuar as alterações relativas ao número da porta do ssh. Para que estas alterações fiquem operacionais temos de reiniciar o serviço ssh. Agora quando quisermos aceder via ssh a este servidor temos de referir que a porta é a numero 22000 (‘ssh –p 22000 user@host’). Outra medida de segurança que devemos usar é instalarmos o programa fail2ban, este programa permite bloquear o acesso remoto a uma máquina, bloqueando o IP, após um determinado número de tentativas erradas. O fail2ban já tem as configurações predefinidas mas podemos alterá-las, para o fazermos temos copiar o ficheiro de configuração jail.conf para o ficheiro chamado jail.local pois nunca devemos efetuar alterações no ficheiro jail.conf. Quando abrimos o ficheiro de configuração há vários campos que podem ser alterados mas os principais são o bantime, como o nome indica, é o tempo de bloqueio (em segundos) do IP que tentou entrar e o maxretry, este corresponde ao número de tentativas standard, no fim destas, o IP que tentou entrar é bloqueado, estas duas configurações estão localizadas na secção DEFAULT (caso tenhamos alterado o numero da porta do ssh, essa também precisa de ser configurada no ficheiro, na secção SSH).
Se quisermos observar através do servidor, quais os ip’s que estão a tentar entrar, apenas temos de visualizar as ultimas linhas do ficheiro fail2ban.log mas para que possamos saber a qualquer altura quando é que alguém é banido por tentar entrar no nosso servidor devemos ativar a opção de sermos avisados por e-mail.
Para ativarmos os avisos do fail2ban por e-mail e receber-mos um e-mail cada vez que um IP for banido por tentar aceder ao nosso servidor, temos apenas de alterar dois parâmetros. No ficheiro jail.local procuramos o campo destemail, nesse campo colocamos o nosso e-mail e no campo action devemos alterar para %(action_mw)s, assim iremos receber um e-mail que nos informa sobre qual o IP que foi banido. Sempre que é efetuada alguma alteração é necessário reiniciar o serviço para que este fique operacional. Por ultimo falta apenas instalar um software que permita enviar o e-mail pois o servidor não tem nenhum serviço MTA (Mail Transfer Agent ) um programa que permite receber e enviar e-mails no servidor, podemos assim proceder a instalação do programa sendmail.
Refletindo sobre este módulo penso que o meu aproveitamento e aprendizagem foram positivos. No princípio do módulo senti alguma dificuldade a adaptar-me ao terminal e a usar os seus comandos, pois também nunca tinha trabalhado no mesmo, as adversidades surgiram devido à dificuldade em entender como ‘navegar’ nos seus diretórios, mas depois de alguma prática consegui acompanhar a sua forma de trabalhar e ultrapassar esse obstáculo. Penso que consegui terminar o módulo com os objetivos principais dos mesmos concluídos, como saber proceder à instalação de um servidor, as suas atualizações, à instalação e utilização do serviço ssh e das medidas de segurança de um servidor.
Formador: Tiago Carrondo