









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Procedimentos para instalação do Asterisk com CentOS:
Tipologia: Notas de estudo
1 / 16
Esta página não é visível na pré-visualização
Não perca as partes importantes!










Revisão 1.
04 Jan 2012 Vila Nova de Gaia, Porto – Portugal.
Servidores baseados em RedHat e CentOS (versão gratuita do RedHat) instalam por padrão diversos serviços e pacotes desnecessários, além de uma configuração padrão um tanto permissiva. Para isto criei este pequeno checklist pós-instalação para adicionar um pouco mais de segurança ao ambiente, além de uma configuração básica de firewall.
Lembre-se de instalar o servidor utilizando apenas o grupo server , desabilite quaisquer interface gráfica, além de consumir memória, espaço em disco e ser inútil, instala diversos arquivos que podem vir a ser vulneráveis no sistema.
Muitas destas dicas também trazem melhorias de desempenho e liberam recursos, principalmente memória, desativando serviços desnecessários. Vamos ao checklist:
1. Nunca utilize o super utilizador root diretamente, crie utilizadores comuns
Devemos sempre evitar o compartilhamento da senha do super utilizador, e obrigatoriamente bloquear quaisquer uso direto do mesmo. Para isto, devemos primeiramente adicionar os utilizadores administradores do sistema. Isto deve-se ao fato de que quando se permite o acesso remoto como super utilizador, estamos vulneráveis a uma palavra passe apenas, além de não termos muitas informações registradas. Quando se utiliza utilizadores comuns que se tornam super utilizador, fica registrado quem utilizou e quando estes poderes.
2. Criar o utilizador de suporte
É muito importante ter um utilizador para o suporte, e ter o habito de mudar a password deste utilizador toda vez que realizar um procedimento neste servidor. Para criar um utilizador siga os passos abaixo:
**# adduser suporte
Changing password for user suporte. New UNIX password: 12345678 BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: 12345678 passwd: all authentication tokens updated successfully.
quando solicitado a password coloque “12345678”. Obs.: tudo minúsculo.
Para instalar o pacote do servidor e o pacote do cliente execute os comandos abaixo;
# yum -y install openssh-server openssh-clients
Inicie o serviço:
# chkconfig sshd on
# service sshd start
Medidas de segurança: edite “/etc/ssh/sshd_config”, para isto utilize o editor de sua preferencia:
# vim /etc/ssh/sshd_config
Mudar a porta padrão, ou seja fazer o ssh executar em uma porta não-padrão como
3030 ;
Port 3030 ( linha 13 )
Protoco 2,
Para desabilitar o login do “root”, editar ou adicionar a seguinte linha:
PermitRootLogin no ( retire o # descomente linha 39 )
HostbasedAuthentication no
PermitEmptyPasswords no
UsePrivilegeSeparation yes
AllowTcpForwarding no
X11Forwarding no
StrictModes yes
Outra opções que devem ser levada em consideração, mas que gera uma possível
manutenção posterior, é a limitação dos usuários que podem utilizar este serviço,
através da opção AllowUsers. Ou seja, basta adicionar no arquivo de configuração:
AllowUsers suporte user2 user3 ( incluir contexto na linha 42 )
Na ultima se estiver comentada, descomete, se não tiver, inclua o texto abaixo;
Subsystem sftp /usr/libexec/openssh/sftp-server ( verifique a linha 120, se
estiver comentada, remova o # descomente )
Guarde e feche o ficheiro. Depois de feita as alterações, force a atualização do serviço utilizando o comando: # service sshd restart
6. Desabilite o acesso remoto a serviços portmap
Na grande maioria das vezes, não utilizamos o serviço portmap , e o mesmo é uma grande fonte de vulnerabilidades e por isto, iremos bloquear o acesso a ele. Primeiramente, iremos bloquear totalmente o acesso a este serviço, editando o arquivo /etc/hosts.deny e adicionando a seguinte linha: portmap: ALL
Agora liberamos o acesso apenas para o próprio servidor, ou seja, localhost , editando o arquivo /etc/hosts.allow e adicionando as seguintes linhas: portmap: localhost portmap: 127.0.0. portmap: 192.168.1. Caso você utilize este serviço, adicione no arquivo de permissões o endereço e o IP do cliente.
7. Remover serviços desnecessários
A seguinte lista de serviços deve ser removido, e claro que você deve ajustar esta lista para contemplar a sua necessidade:
NetworkManager NetworkManagerDispatacpid apmd autofs avahi-daemon avahi-dnsconfd bluetooth conman cpuspeed cups dc_client dc_server dhcdbd dund firstboot gpm haldaemon
8. Remova pacotes desnecessários
A seguinte lista de pacotes devem ser removidos, e claro que você deve ajustar esta lista para contemplar a sua necessidade:
acpid alsa-lib alsa-utils apmd bluez-gnome centos-release-notes cpuspeed dos2unix dosfstools esound finger firstboot-tui GConf gnome-mime-data gnome-mount gnome-python2-bonobo gnome-python2-canvas gnome-python2-extras gnome-python2-gconf gnome-python2-gnomevfs gnome-python2-gtkhtml gpm hicolor-icon-theme metacity NetworkManager nfs-utils OpenIPMI OpenIPMI-libs portmap redhat-menus samba samba-client samba-common subversion system-config-display system-config-kdump system-config-network system-config-nfs system-config-samba system-config-securitylevel system-config-soundcard
talk tux xkeyboard-config xorg-x11-drv-evdev xorg-x11-drv-keyboard xorg-x11-drv-mouse xorg-x11-drv-vesa xorg-x11-drv-void xorg-x11-filesystem xorg-x11-fonts-base xorg-x11-server-utils xorg-x11-server-Xnest xorg-x11-server-Xorg xorg-x11-server-Xvfb xorg-x11-utils xorg-x11-xauth xorg-x11-xfs xorg-x11-xinit xorg-x11-xkb-utils ypbind yp-tools
Crie um arquivo (por exemplo, pacotes-a-remover.txt ) contendo a lista que deve ser removida, e utilize o seguinte script para facilitar o trabalho:
# for pkg in $(cat pacotes-a-remover.txt); do rpm -e $pkg; done
Muitos pacotes podem não ser removidos por existirem dependência, ou nem estarem instalados.
9. Resolução de nomes de máquinas
Você deve certificar-se que o próprio servidor está listado no arquivo de hosts, relacionando o mesmo a localhost e IP 127.0.0.1. Edite o arquivo /etc/hosts e localizando a seguinte linha:
127.0.0.1 SERVIDOR.DOMINIO SERVIDOR localhost.localdomain localhost
Caso não esteja listado, adicione. Edite também o arquivo /etc/host.conf e altere a ordem de pesquisa para respeitar primeiramente o arquivo de hosts local, depois utilizar o DNS externo. Além disto, devemos habilitar o retorno de múltiplas respostas e a proteção de spoof. O arquivo deve ficar assim:
Aqui segue um exemplo de como é uma configuração padrão no /etc/fstab :^10
/dev/VolGroup00/LogVol01 /tmp ext3 defaults 1 1 /dev/VolGroup00/LogVol02 /home ext3 defaults 1 1
E como deve ficar após a alteração:
/dev/VolGroup00/LogVol01 /tmp ext3 noexec,nodev,nosuid 1 1 /dev/VolGroup00/LogVol02 /home ext3 noexec,nodev,nosuid 1 1
Para remontar novamente estas partições sem reinicializar o servidor, utilize o comando:
mount -o remount /tmp mount -o remount /home
12. Desabilite consoles desnecessários
Edite o arquivo /etc/inittab e desabilite os consoles de 3 a 6, comentando ou removendo as seguintes linhas:
3:2345:respawn:/sbin/mingetty tty 4:2345:respawn:/sbin/mingetty tty 5:2345:respawn:/sbin/mingetty tty 6:2345:respawn:/sbin/mingetty tty
Para forçar as alterações realizadas, utilize o comando:
# telinit q
13. Habilite o sincronismo de hora
Manter os relógios dos servidores sincronizados é essencial para a boa saúde dos seus sistemas, e mais ainda para a saúde mental do auditor (e do técnico que vai escrever um relatório para ele) em caso de auditorias. Não é necessário possuir um servidor NTP em sua rede, visto que hoje em dia as conexões de internet são muito confiáveis e rápidas, podemos utilizar o próprio pool de servidores do ntp.org. Verifique se o pacote ntp está instalado, utilizando o comando:
# rpm -qi ntp
Se retornar a mensagem “ package ntp is not installed ”, você terá que instalar o pacote, utilizando o seguinte comando:
# yum install ntp
Uma vez instalado, edite o arquivo /etc/ntp.conf , e confira se a lista de servidores está habilitada. No caso do CentOS, a lista de servidores utilizada é:
server 0.centos.pool.ntp.org server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org
E no RedHat, utiliza-se os seguintes servidores:
server 0.rhel.pool.ntp.org server 1.rhel.pool.ntp.org server 2.rhel.pool.ntp.org
Antes de habilitar o serviço, sincronize o relógio do servidor, utilizando o comando (troque o servidor para centos ou rhel, dependendo do seu caso):
# ntpdate 0.centos.pool.ntp.org
Depois habilite o serviço de NTP, utilizando os comandos:
**# service ntpd start
Você pode eleger um servidor da sua rede para manter o sincronismo com servidores do ntp.org, e ele propagar este serviço para sua rede de servidores.
Para isto, você deve incluir o endereço da sua rede no arquivo /etc/ntp.conf , adicionando a seguinte informação:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
Alterando a rede e a máscara para a sua configuração. Lembre-se de reinicializar o serviço caso tenha alterado.
Nos outros servidores da sua rede, comente ou remova os servidores externos, e adicione o IP do seu servidor NTP. Para testar, pode utilizar o mesmo comando ntpdate com o IP do seu servidor como parâmetro.
FIN,PSH,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j tcpflags /sbin/iptables -A OUTPUT -d 127.0.0.0/8 -o! lo -j logspoof /sbin/iptables -A OUTPUT -s 127.0.0.0/8 -o! lo -j logspoof /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j tcpflags
Para que as alterações feitas no iptables sejam mantidas quando reinicializado o servidor, devemos gravá-las utilizando o seguinte comando:
service iptables save
16. Bloqueando tráfego de redes privadas
Por que permitir tráfego de redes privadas (listadas na RFC 1918 [1]) em servidores com tráfego exclusivo de internet? Para bloquear este tráfego, utilize:
/sbin/iptables -N loginternal /sbin/iptables -A loginternal -m limit --limit 3/min --limit-burst 3 -j LOG --log- prefix "Private network: " --log-level info /sbin/iptables -A loginternal -j DROP /sbin/iptables -A INPUT -d 10.0.0.0/8 -j loginternal /sbin/iptables -A INPUT -s 10.0.0.0/8 -j loginternal /sbin/iptables -A INPUT -d 192.168.0.0/16 -j loginternal /sbin/iptables -A INPUT -s 192.168.0.0/16 -j loginternal /sbin/iptables -A INPUT -d 172.16.0.0/12 -j loginternal /sbin/iptables -A INPUT -s 172.16.0.0/12 -j loginternal /sbin/iptables -A OUTPUT -d 10.0.0.0/8 -j loginternal
/sbin/iptables -A OUTPUT -s 10.0.0.0/8 -j loginternal /sbin/iptables -A OUTPUT -d 192.168.0.0/16 -j loginternal /sbin/iptables -A OUTPUT -s 192.168.0.0/16 -j loginternal /sbin/iptables -A OUTPUT -d 172.16.0.0/12 -j loginternal /sbin/iptables -A OUTPUT -s 172.16.0.0/12 -j loginternal
Lembre-se de gravar as alterações realizadas no firewall utilizando o comando:
# service iptables save
17. Bloqueando ataques de força bruta
Hoje em dia, ataques de força bruta contra serviços tipo SSH são extremamente comuns. Este tipo de ataque cessa caso o servidor pare de responder. Utilizando iptables , podemos criar uma regra para registrar e bloquear temporariamente o IP que acessar mais de 3 vezes com intervalos menores que 1 minuto este serviço (ou outros, como FTP ). Para tal, utilize os seguintes comandos:
/sbin/iptables -N logforce /sbin/iptables -A logforce -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Brute force: " --log-level info /sbin/iptables -A logforce -j DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j logforce
O tempo de bloqueio é o mesmo tempo de intervalo máximo entre as tentativas, que neste caso é de 1 minuto (60 segundos). Não custa lembrar novamente de salvar as alterações realizadas no firewall utilizando o comando:
# service iptables save
Sempre que você alterar alguma configuração através do comando iptables , e quiser manter esta configuração mesmo após a reinicialização do servidor, utilize o seguinte comando:
# service iptables save
Para transformar seu firewall em restritivo, habilitando acesso somente as portas 22 e 80 TCP , utilize os seguintes comandos:
/sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
É interessantes neste caso liberar todo acesso através da interface de loopback (lo). Para isto, utilize os seguintes comandos:
/sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A OUTPUT -o lo -j ACCEPT
Caso você queira registrar tentativas de conexão a quaisquer outra porta que não esteja habilitada, utilize o seguinte comando:
/sbin/iptables -A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Dropped: " --log-level info
Se for adicionado outras regras de permissão após este comando, deve-se alterar manualmente o arquivo de regras e posicioná-la como última regra de entrada, caso contrário irá registrar todos pacotes de regras que estiverem abaixo dela também.
Por enquanto estas são as dicas que conheço, e com o tempo vou alterando este artigo para atualizações ou inclusão de novas dicas. Caso você tenha uma dica para incluir, envie como comentário que será muito bem vindo!
1.0 – 13/Dez/2010 – Primeira versão. 1.1 – 14/Dez/2010 – Adicionado item sobre Apache e PHP. 1.2 – 20/Dez/2010 – Adicionado item sobre algorítimo de criptografia de senhas. 1.3 – 04/Jan/2012 – Adicionado criar utilizador
Professor Especialista Angelo de Barros Delphini
Endereços neste artigo: [1] RFC 1918: http://www.ietf.org/rfc/rfc1918.txt