Selinux
Captive Portal completo com o Squid no CentOS 7
by Spawnzao on Jan.17, 2016, under Iptables, Linux, PHP, Selinux, Software Livre, Squid
O captive portal para redes wireless são uma mão na roda, ainda mais em redes que utilizam autenticação ntlm ou outra autenticação via navegador. Entretanto, por mais que existam diversos captive portal disponíveis na internet, as vezes eles não se adequam perfeitamente as nossas necessidades, uns por se focarem em lan houses, outros por não serem compatíveis com nossa base de usuários (ex: ldap, mysql, sqlserver, …), outros por não terem um log completo de todos os acessos dos usuários, dentre outros problemas.
Então, utilizando o squid montei um captive portal, dividido em 3 partes.
No squid temos 2 scripts que fazem a verificação dos usuários autenticados e seus determinados ips, o primeiro script verifica se o ip da máquina está autenticado, caso não esteja, retorna HTTP Status Code 302 (redirecionamento) e a url do captive portal para o usuário se autenticar, caso o ip esteja autenticado ele prossegue a url desejada. No segundo script, verificamos novamente se o ip está autenticado, caso ele não esteja, retorna erro para o squid e a navegação é negada, caso ele esteja autenticado, ele busca no banco de dados o usuário e informa para o squid para que a sessão seja logada, impedindo que os acessos fiquem sem um usuário responsável. O squid está configurado em modo transparente, nas portas http (3128) e https (3129), entretanto no https estamos utilizando para tunelar todas as conexões, caso deseja abrir as conexões essa configuração deverá ser feita a parte. O firewall, captura todas as conexões de portas conhecidas e redireciona para o squid, as que utilizam texto plano, como por exemplo o telnet (porta 23), são redirecionadas para a porta 3128 e as conexões critografadas, como por exemplo o ssh (porta 22), são redirecionadas para a porta 3129. Com isso não saberemos qual a url acessada e qual o conteúdo, mas o ip e a porta para aquele determinado usuário estará salvo.
Para armazenar as sessões dos usuários autenticados utilizo o mysql, nele temos 3 tabelas, a primeira é a sessions, que armazena as sessões dos usuários autenticados, a segunda é a logs, que armazena tudo que acontece no captive portal e por último a tabela disallow, que armazena os usuários bloqueados, que não conseguirão fazer a autenticação no portal, tem como objetivo bloquear usuários coringas, convidados, usuários que violaram os termos de uso, dentre outros.
E por último o portal web que realiza a autenticação dos usuários, desenvolvido em PHP e subdividido em 2 partes, a primeira que realiza a verificação do nome e senha do usuário na base de dados LDAP e a segunda que realiza o gerenciamento das sessões, logs e usuários bloqueados utilizando o banco de dados mysql.
Deixar um pouco de conversa e colocar a mão na massa.
Configurar o Fail2ban no Centos 7
by Spawnzao on Jun.12, 2015, under Linux, Selinux, Software Livre
Manter um servidor hoje na internet requer alguns recursos mínimos de segurança, e hoje vamos configurar o Fail2ban, uma ótima ferramenta para evitar atauqes de força bruta no servidor.
O fail2ban fica auditando os arquivos de logs, procurando por múltiplos erros de login, e caso encontre 5 erros seguidos ele executa uma action, que normalmente é um bloqueio do ip de origem por 600 segundos. Podemos também configurá-lo para toda vez que ocorra um bloqueio ele nos informe por e-mail e também nos diga um WHOIS desse ip, para termos mais informações sobre o ip atacante.
A nova versão do Fail2ban além de ficar muito mais robusta e completa, trás suporte a multiplos serviços, como por exemplo: apache, modsecutiry, proftpd, vsftpd, mysqld, dentre outros, importantíssimo para manter a segurança de nossos servidores.
Instalar o Repositório epel:
yum install https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
Instalar os pacotes do Fail2ban:
yum install fail2ban-systemd fail2ban-sendmail fail2ban-server whois
Eu não utilizo o Firewalld, mas quem utiliza precisa instalar o pacote:
yum install fail2ban-firewalld
Antes de fazer a nossa configuração, precisamos acertar um erro no arquivo jail.conf, que impede que o sistema envie e-mail caso haja algum bloqueio.
Alterar porta do SSH no CentOS 7
by Spawnzao on Dec.11, 2014, under Iptables, Linux, Selinux, Software Livre
A porta default do SSH (tcp 22) recebe uma quantidade enorme de ataques, e a maioria delas podem ser evitadas modificando a porta de acesso do SSH.
Nesse tutorial vamos ver o passo a passo completo para alterarmos a porta de acesso do serviço SSH.
Primeiro vamos editar o arquivo de configuração do SSH, para isso digite:
vim /etc/ssh/sshd_config
Vamos alterar a porta que default é 22 para 2242:
Port 2242