Verificar se existe uma tabela tem registos para um determinado tipo

O objetivo é verificar se para um determinado ID existem registos numa tabela devolvendo true/false em vez do número de registos. Aqui ficam 2 formas de fazer isto.

Utilizando IF:

SELECT IF(COUNT(*) > 0, TRUE, FALSE) AS NewResult
FROM itemtypes
WHERE parentid = 1

Utilizando CASE:

SELECT case when COUNT(*) > 0 
            then 1
            else 0
       end AS NewResult
FROM itemtypes
WHERE parentid = 1

Moodle infectado com ad by…

Em algumas categorias e disciplinas do Moodle apareciam DIVs com publicidade no cabeçalho e no rodapé… A publicidade estava na descrição das próprias categorias e disciplinas e foi adicionada involuntariamente por um dos admins/responsáveis porque tinha o browser infectado…

Para verificar quais as tabelas do Moodle que têm scripts, faz-se uma pesquisa na base de dados…

moodle_search_script

Se aparecer algum resultado diferente de 0, pode ser ali que estão os scripts.

VSFTPD: desativar dns reverse lookups

Tenho um servidor de FTP a correr (vsftpd) que está configurado para banir IPs que falhem o login 5 vezes seguidas. Funciona tudo corretamente excepto nas situações em que o reverse de um IP aponta para um endereço inválido. Basicamente o PAM faz o lookup, regista em /var/log/secure e o fail2ban lê o ficheiro para bloquear. Como o fail2ban não consegue resolver esses nomes, então isto permitia que alguns IPs tentasse aceder indefinidamente ao servidor e nunca fossem bloqueados!

Solução… alterar a configuração do vsftpd para não fazer o reverse lookup.

Informação relevante aqui: vsftpd bug fix

 

the DNS reverse lookup feature was implemented without any way to disable
it. This update contains the parameter 'reverse_lookup_enable', which
allows users to enable or disable the DNS reverse lookup functionality.
(BZ#498548)

 

MySQL fails to start

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'host' is marked as crashed and last (automatic?) repair failed

MySQL 4.1.22 não arrancava… a tabela host, db, user estava marcada como danificada.

– Instalar uma versão nova

– na instalação atual renomear os ficheiros das tabelas (ex. host.frm, host.MYD, host.MYI p/ host_.frm, host_.MYD, host_.MYI)

– copiar os ficheiros das tabelas da versão nova para o local da danificada

– iniciar o servidor MySQL

– aceder ao MySQL administrator e reparar as tabelas renomeadas

– desligar o servidor MySQL

– remover as tabelas copiadas

– renomear as tabelas originais para o nome original (ex. host_.frm, host_.MYD, host_.MYI p/ host.frm, host.MYD, host.MYI)

– iniciar o servidor MySQL

– reparar todas as base de dados/tabelas

mysqlcheck -u root -p -o -c --auto-repair --all-databases

 

Eventualmente pode também ser necessário alterar as definições do MySQL (my.ini) para incluir a opção innodb_force_recovery = 1. Mais info aqui: http://dev.mysql.com/doc/refman/4.1/en/forcing-innodb-recovery.html

Plugins Moodle

Quando tiver algum tempo tenho que estudar bem as funcionalidades destes plugins.

 

GISMO

GISMO, a graphical interactive student monitoring and tracking system that extracts tracking data from an online course maintained with Moodle, and generates graphical representations that can be explored by course instructors.

https://moodle.org/plugins/view.php?plugin=block_gismo

 

GMoodle

GMoodle é um sistema de gerenciamento da Plataforma Moodle. Atende a necessidade de integração de vários ambientes Moodle. Oferece agilidade no gerenciamento e diversos tipos de relatórios não disponíveis no Moodle.
É uma ferramenta de gestão de website Moodle projetado para instituições que precisam extrair relatórios mais gerenciais, o que o Moodle não oferece. Além disso, permite integrar diversos ambientes Moodle, de diferentes versões, distribuídos em vários servidores. É uma ferramenta projetada para ser um armazém de dados do Moodle destinado para emissão de relatórios gerenciais.

http://www.badiu.net/nportal/index.php?option=com_content&view=article&id=6

Upgrade to CentOS 6.5 from CentOS 6.x

1. Change to root User

su -
## OR ##
sudo -i

 

2. Backup all important data

  • Backup /etc diretory
  • Backup important logs /var/log
  • Backup web server configs and sites
  • Dump MySQL databases
  • Dump PostgreSQL databases
  • Backup all what you need if something goes wrong

 

3. Check list of packages that are going to be updated

yum list updates

 

4. Upgrade with yum update

Official way to do upgrade:

yum update

Another way to do update is first clean all, second update glibc, yum, rpm and python packages and then update other packages like following:

yum clean all
yum update glibc* yum* rpm* python*
yum update

 

5. Reboot

reboot

 

6. Check CentOS 6.5 (Final) release info and Check your entire system

cat /etc/redhat-release
## Output ##
CentOS release 6.5 (Final)

Following needs redhat-lsb package

lsb_release -a
## Output ##
LSB Version:    :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:        6.5
Codename:       Final

Check that your system is working normally and test every services.

 

Source: http://www.if-not-true-then-false.com/2011/upgrade-centos-6/

Fail2ban – testar configurações

To test your configs, check your apache-badbots.conf and find the failregex.

Code:

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$

 

Chose one entry from “badbots” and run fail2ban-regex with a test-string against your apache-badbots.conf:

Code:

fail2ban-regex '1.2.3.4 - - [12/Feb/2013:10:53:59 +0100] "GET / HTTP/1.1 200" 39460 "-" "autoemailspider"' /etc/fail2ban/filter.d/apache-badbots.conf

 

You should get something like “Success, the total number of match is 1”

Comandos linux

Ligações activas

netstat -ant

Contar nº de ligações na porta 80

netstat -ant | grep ":80" | wc -l

Contar nº de ligações na porta 3306

netstat -ant | grep ":3306" | wc -l

Verificar a natureza das ligações activas

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n

Indica o nº de tipo de ligações activas

netstat -ant | grep 80 | awk '{print $6}' | sort | uniq -c | sort -n

Bloquear bots no Apache

Code:

#Joomla com_jce exploit
SecRule HTTP_User-Agent "BOT for JCE" "deny,status:500,id:5000218,msg:'Joomla com_jce code exec'"

#Joomla com_jce exploit
SecRule REQUEST_URI "/images/stories/.+\.php" "deny,status:500,id:5000219,msg:'Joomla com_jce code exec'"

The first blocks the user agent. That exploit puts PHP files into site.com/images/stories/something.php if it is successful, so the 2nd rule blocks access to those in case they change user agent.

Even with the .htaccess or this first rule, you should still use the 2nd rule. Changing user agents is very simple.

 

Outra sugestão:

https://github.com/bluedragonz/bad-bot-blocker