:: Criar novo CHAIN
# iptables -t filter -N PING-CHAIN
:: Excluir CHAIN
# iptables -t filter -X PING-CHAIN
:: Utilizar CHAIN criado
# iptables -t filter -p icmp -j PING-CHAIN
:: Alterar Politica do CHAIN
# iptables -t filter -P INPUT DROP
:: Logs para entradas local
# iptables -t filter -A INPUT -j LOG --log-prefix "FW TAB=FILTER CHA=INPUT "
:: Logs para forward na porta 80/TCP
# itpables -f filter -A FOWARD -p tcp --dport 80 -j LOG --log-prefix "FW TAB=FILTER CHA=FORWARD "
:: Liberar acesso local a porta 22/TCP
# iptables -t filter -A INPUT -d localhost -p tcp --dport 22 -j ACCEPT
:: Liberar forward para porta 80/TCP
# iptables -t flter -A FORWARD -s 192.168.0.30 -d 172.17.0.1 -p tcp --dport 80 -j ACCEPT
:: Liberar conexão através de seu estado
# iptables -t filter -A FOWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
:: Utilizar range de IPs
# iptables -t filter -A FORWARD -m iprange --src-range 192.168.0.10-192.168.0.20 -d 200.200.199.199 -j ACCEPT
# iptables -t filter -A FORWARD -s 1921.68.0.1 -m iprange --destination-range 172.17.0.1-172.17.0.3 -j ACCEPT
:: Utilizar Intervalo de Portas
# iptables -t filter -A INPUT -p tcp --dport 1024:65535 -j DROP
:: Utilizar Múltiplas Portas
# iptables-t filter -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
:: Inserir regra entre regras já existentes
# iptables -t filter -I INPUT 1 -j LOG
:: Limitando por MAC Address
# iptables -t filter -A INPUT -m mac --mac-source 00:80:AD:2B:60:1C -j DROP
:: Limitando número de conexões por intervalo temporal (Ex.: 2 por segundo)
# iptables -t filter -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT
:: Realizar MASQUERADE (Geralmente utilizado para IPs dinâmicos)
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
:: Realizar SNAT (NAT de Origem)
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 200.200.199.199
:: Realizar DNAT (Nat de Destino) da porta 80/TCP para porta 80/TCP
# iptables -t nat -A PREROUTING -d 200.200.199.199 -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.1
:: Realizar DNAT da porta 80/TCP para 8080/TCP
# iptables -t nat -A PREROUTING -d 200.200.199.199 -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.1:8080
:: Visualizar Regras
# iptables -t filter -nvL
# iptables -t filter -nL FORWARD --line-number
# iptables -t nat -nvL --line-number
:: Limpar Regras
# iptables -t filter -F
# iptables -t filter -F FORWARD
:: Excluir Regras (Forma 1 --line-number)
# iptables -t filter-nvL --line-number
Verificar o número da linha que deseja excluir, depois:
# iptables -t filter -D <line-number>
Onde:
line-number: número da linha onde está a regra que será excluída
:: Excluir Regras (Forma 2 -D)
Digitar o mesmo comando para inserção da Regra, mas ao invés de utilizar o parâmetro -A (Append) utilizar o parâmetro -D (Delete)
# itpables -t filter -D -s localhost -j DROP
terça-feira, 19 de julho de 2011
quarta-feira, 13 de julho de 2011
Monitorando as eths com mrtg
Existem maneiras bem simples de monitorar as eth de um servidor Linux, uma delas é utilizando o mrtg, procedimento que veremos a seguir.
:: Instalando pacotes necessários
# apt-get install mrtg apache2
:: Configurando o mrtg
1) Crie o seguinte script que fará a leitura do arquivo /proc/net/dev. Este arquivo contêm informações sobre as estatísticas de tráfego em cada eth. O script fará a leitura da quantidade de bytes recebidos e enviados e terá como saída estes valores, um em cada linha.
# vim /root/getStats.sh
#!/bin/sh
awk '
/'$1':/ {
$0=substr($0,index($0,":")+1);
print $1;print $9
}
' /proc/net/dev
2) Transforme este arquivo como executável
# chmod +x /root/getStats.sh
3) Crie o arquivo de configuração para o mrtg
# vim /root/mrtg.conf
WorkDir: /var/www/mrtg
Target[eth0]: `/root/getStats.sh eth0`
Title[eth0]:"Trafic on eth0"
MaxBytes[eth0]:100000
PageTop[eth0]: <h2>Trafic on eth0</h2>
Options[eth0]: growright,bits
4) Crie um script que irá executar o mrtg
# vim /root/run_mrtg.sh
#!/bin/bash
env LANG=C /usr/bin/mrtg /root/mrtg.conf
5) Transforme este arquivo em executável
# chmod +x /root/run_mrtg.sh
:: Demais configurações
1) Criar o diretório para o mrtg gerar as páginas e os gráficos
# mdkir /var/www/mrtg
2) Incluir o script no contrab para executar a cada 5 min
# crontab –e
*/5 * * * * /root/run_mrtg.sh
:: Executando manualmente
# env LANG=C /usr/bin/mrtg /root/mrtg.conf
Obs.: É normal surgirem erros durante as três primeiras execuções.
:: Visualizando o trabalho
Aponte o navegador para http://<ip_servidor>/mrtg/eth0.html
Aguarde mais 5 minutos e verifique que o gráfico começa ser gerado.
Você pode restringir o acesso a estas informações através do próprio apache. Dê uma olhada no artigo Configurar Auntenticação Básica no Apache.
Até +
:: Instalando pacotes necessários
# apt-get install mrtg apache2
:: Configurando o mrtg
1) Crie o seguinte script que fará a leitura do arquivo /proc/net/dev. Este arquivo contêm informações sobre as estatísticas de tráfego em cada eth. O script fará a leitura da quantidade de bytes recebidos e enviados e terá como saída estes valores, um em cada linha.
# vim /root/getStats.sh
#!/bin/sh
awk '
/'$1':/ {
$0=substr($0,index($0,":")+1);
print $1;print $9
}
' /proc/net/dev
2) Transforme este arquivo como executável
# chmod +x /root/getStats.sh
3) Crie o arquivo de configuração para o mrtg
# vim /root/mrtg.conf
WorkDir: /var/www/mrtg
Target[eth0]: `/root/getStats.sh eth0`
Title[eth0]:"Trafic on eth0"
MaxBytes[eth0]:100000
PageTop[eth0]: <h2>Trafic on eth0</h2>
Options[eth0]: growright,bits
4) Crie um script que irá executar o mrtg
# vim /root/run_mrtg.sh
#!/bin/bash
env LANG=C /usr/bin/mrtg /root/mrtg.conf
5) Transforme este arquivo em executável
# chmod +x /root/run_mrtg.sh
:: Demais configurações
1) Criar o diretório para o mrtg gerar as páginas e os gráficos
# mdkir /var/www/mrtg
2) Incluir o script no contrab para executar a cada 5 min
# crontab –e
*/5 * * * * /root/run_mrtg.sh
:: Executando manualmente
# env LANG=C /usr/bin/mrtg /root/mrtg.conf
Obs.: É normal surgirem erros durante as três primeiras execuções.
:: Visualizando o trabalho
Aponte o navegador para http://<ip_servidor>
Aguarde mais 5 minutos e verifique que o gráfico começa ser gerado.
Você pode restringir o acesso a estas informações através do próprio apache. Dê uma olhada no artigo Configurar Auntenticação Básica no Apache.
Até +
sexta-feira, 1 de julho de 2011
Múltiplas Instâncias do MySQL
O MySQL server possui um recurso interesse de permitir a carga de várias instâncias no mesmo servidor (realizado através do mysqld_multi), permitindo assim que você possa distribuir a carga de acesso em seus ESQUEMAS DE BANCO através destas várias portas, como por exemplo a 3306/TCP (porta padrão MySQL) e a 3307/TCP. Abaixo segue um pequeno manual de como as configurações necessárias, lembrando que esta configuração foi aplicada na Distro Debian versão 6.
:: Instalar o MySQL
# apt-get install mysql-server
# /etc/init.d/mysql stop
:: Configurando o Ambiente
# mkdir /mysql && mkdir /mysql/socket && mkdir /mysql/pids && mkdir /mysql/3306 && mkdir /mysql/3307
# chown mysql:mysql /mysql –R
:: Instalando a Base Padrão do MySQL
# mysql_install_db --basedir=/usr/ --datadir=/mysql/3306
# mysql_install_db --basedir=/usr/ --datadir=/mysql/3307
:: Criando o arquivo de configuração
# vim /mysql/my.cnf
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi
password = multi
[mysqld1]
socket = /mysql/socket/mysql1.sock
port = 3306
pid-file = /mysql/pids/pidfile1.pid
datadir = /mysql/data/3306
language = /usr/share/mysql/english
user = multi
[mysqld2]
socket = /mysql/socket/mysql2.sock
port = 3307
pid-file = /mysql/pids/pidfile2.pid
datadir = /mysql/data/3307
language = /usr/share/mysql/english
user = multi
Obs.: mysqld# informa o número do Grupo MySQL; user e password são dados do usuário que possui permissão de realizar SHUTDOWN do MySQL.
:: Conectando as bases e configurando as permissões
O usuário e a senha padrão das bases récem criadas são:
Usuário: root
Senha: {vazia/nenhuma/semNada}
# mysql –u root –p –S /mysql/socket/mysql1.sock
mysql> GRANT SHUTDOWN ON *.* TO multi@localhost IDENTIFIED BY 'multi';
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql –u root –p –S /mysql/socket/mysql2.sock
mysql> GRANT SHUTDOWN ON *.* TO multi@localhost IDENTIFIED BY 'multi';
mysql> FLUSH PRIVILEGES;
mysql> quit
Nota: Observe que realizamos a conexão com o MySQL através do SOCKET e não da PORTA.
:: Subindo as Instâncias
# mysqld_multi –defaults-file=/mysql/my.cnf start 1
# mysqld_multi –defaults-file=/mysql/my.cnf start 2
Obs.: O parâmetro 1 no final do comando indica qual instância será iniciada. Ex.: [mysqld1]. Para subir todas as instâncias ao mesmo tempo basta remover o número do GRUPO no final do comando. Os logs do mysqld_multi são gravados /var/log/syslog.
:: Checando a carga
# mysqld_multi –defaults-file=/mysql/my.cnf report 1
# mysqld_multi –defaults-file=/mysql/my.cnf report 2
ou, para todas
# mysqld_multi –defaults-file=/mysql/my.cnf report
ou
# netstat –na | grep /mysql/socket
:: Shutdown das Instâncias
# mysqld_multi –defaults-file=/mysql/my.cnf stop 1
# mysqld_multi –defaults-file=/mysql/my.cnf stop 2
ou, para todas:
# mysqld_multi –defaults-file=/mysql/my.cnf stop
:: Configurando o Startup Automático
Como realizamos a instalação do mysql via apt-get, todas as configurações para o startup automático foram criadas, faltando apenas a alteração do arquivo /etc/init.d/mysql para atender nossas necessidades. Então:
# vim /etc/init.d/mysql
#!/bin/bash
case "${1:-''}" in
'start')
mysqld_multi --defaults-file=/mysql/my.cnf start
;;
'stop')
mysqld_multi --defaults-file=/mysql/my.cnf stop
;;
'restart')
stop
start
;;
'status')
mysqld_multi --defaults-file=/mysql/my.cnf report
;;
*)
echo "Usage: $SELF start|stop|restart|status"
exit 1
;;
esac
:: Pontos Importantes
Mesmo configurando outro arquivo my.cnf a inicialização do MySQL lê os parâmetros de configuração do arquivo /etc/mysql/my.cnf, então para liberar acesso as conexões remotas não se esqueça de comentar a linha:
[...]
# bind-address = 127.0.0.1
[...]
Para acessar o MySQL através da porta devemos também alterar este arquivo, informado em qual socket queremos realizar a conexão, assim fiz as seguintes alterações na seção [cliente]:
[...]
[client]
port = 3306
socket = /mysql/socket/mysql1.sock
# port = 3307
# socket = /mysql/socket/mysql2.sock
[...]
Desta forma você pode adicionar/remover o comentário de qual instância será realizada a conexão e acessar através do comando:
# mysql -u root -p
Você pode consultar a documentação do mysqld_multi acessando http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html ou # man mysqld_multi
Até a próxima.
Assinar:
Postagens (Atom)