









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
Os melhores documentos à venda: Trabalhos de alunos formados
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
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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