ola pessoal
Apos instalado o apache e as regras do meu iptables no meu slackware 10, estou tentando hospedar minha pagina no meu micro (Adsl sppedy ip-dinamico com cjb.net)
porem, mesmo alterado a pora de 80 para 1099 quando alguem de fora tenta acessar nada acontece...pq sera heim?
(obs eth0 rede e eth1 net)
por favor alguem me ajuda...so quero ter meu servidor de web aqui...só isso...se algume tiver algum modelo de http_conf e firewall q esteja redondo aceito tb..valeu!!
abaixo esta o erro do meu \var\log\syslog quando alguem tenta acessar meu ip:
Jun 12 22:03:12 k72 kernel: Pacote input descartado: IN=ppp0 OUT= MAC= SRC=200.231.250.245 DST=200.232.180.66 LEN=48 TOS=0x00 PREC=0x00 TTL=118 ID=38078 DF PROTO=TCP SPT=2462 DPT=1433 WINDOW=16384 RES=0x00 SYN URGP=0
segue abaixo meu firewall e meu httpd_conf
firewall:
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_state
/sbin/modprobe ipt_MASQUERADE
#Beleza, carregados os módulos, vamos dar um "flushing" no firewall, para não termos problemas do tipo: Porque quando eu tiro o #proxy do navegador ele continua a utilizar a internet?"...
/usr/sbin/iptables -F
/usr/sbin/iptables -Z
/usr/sbin/iptables -X
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT ACCEPT
#Detalhes relevantes: nunca se esqueça de dar um flushing na tabela nat também, e pessoal, pensa bem, você tem que liberar o que #É NECESSÁRIO, e não tudo, por isso o Policy padrão de input e do forward é DROP, porque se não ta nas regras, ou você esqueceu #ou não é para estar liberado! Isso evita acidentes "comuns".
#Habilitando roteamento e demais cositas...
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#No meu firewal nada de scan...
#INPUT
#Vamos liberar o INPUT para a interface de loopback, que só vai ser usada pelo servidor,
#mas com origem de qualquer ip, para não ter perigo de não manipular alguns pacotes:
/usr/sbin/iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -p ALL -s 192.168.254.140 -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -p ALL -s 192.168.254.140 -i lo -j ACCEPT
#Agora uma regra que eu procuro colocar no começo, que na minha opinião melhora um "pouco" a performance do firewall já que a #leitura das regras para os pacotes é linear. Ela diz que toda conexão estabilizada ou relacionada com o meu firewall deve ser #mantida e não analizada pelas proximas regras:
/usr/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Libera as respostas dos DNS para meu firewall
/usr/sbin/iptables -A INPUT -p udp -s 200.204.0.10 --sport 53 -d 192.168.254.140 -j ACCEPT
/usr/sbin/iptables -A INPUT -p udp -s 200.204.0.138 --sport 53 -d 192.168.254.140 -j ACCEPT
#Nada de pacote fragmentado no meu firewall! Se temos um programa criando pacotes despadronizados ou uma tentativa de ataque, o #problema não é meu!
/usr/sbin/iptables -A INPUT -i eth1 -f -j LOG --log-prefix "Pacote INPUT fragmentado: "
/usr/sbin/iptables -A INPUT -i eth1 -f -j DROP
#Não esquecendo de logar o pacote fragmentado para descobrir oquê ele é).
#Evitando Spoofing:
/usr/sbin/iptables -A INPUT -i eth1 -s 192.168.254.0/8 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
#Obs: as mascaras estão corretas.
#Regras para ping, aqui varia muito de admin para admin, eu só libero resposta de ping de outros ips, ping para minha rede #interna e ping do servidor da minha empresa para o firewall do cliente, como ta na ultima linha:
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 8 -i eth0 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp -s 192.168.254.140 -d 192.168.254.140 -j ACCEPT
#Libero o acesso as squid para minha rede interna:
/usr/sbin/iptables -A INPUT -p TCP -i eth0 -s 192.168.254.0/8 --dport 3128 -j ACCEPT
#Libero o acesso ao ssh:
/usr/sbin/iptables -A INPUT -p TCP --dport 22 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP --dport 2121:2122 -j ACCEPT
#Libera resposta de servidores www para meu squid:
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 80 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 443 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 20 -j ACCEPT
/usr/sbin/iptables -A INPUT -p UDP -i eth1 --sport 21 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 21 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 1099 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth0 --sport 1099 -j ACCEPT
/usr/sbin/iptables -A INPUT -p UDP -i eth1 --sport 2121 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 2121 -j ACCEPT
/usr/sbin/iptables -A INPUT -p UDP -i eth1 --sport 2122 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 2122 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp --dport 1099 -j ACCEPT
#Ora de mandar embora as porcarias, agora que ta tudo que eu preciso liberado:
/usr/sbin/iptables -A INPUT -p TCP -i eth0 --sport 2121:2122 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth0 --sport 22 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp --dport 3128 -j REJECT --reject-with tcp-reset
/usr/sbin/iptables -A INPUT -j LOG --log-prefix "Pacote input descartado: "
/usr/sbin/iptables -A INPUT -j DROP
#Não esqueça de sempre logar o que você descarta, pois pode ser uma tentativa de ataque ou uma porta que deve ser liberada para um programa funcionar!
#FORWARD
#Já começamos com barra pesada no forward, descartando os pacotes inválidos, coisa que no ipchains deixa os admins de firewall #loucos:
/usr/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
#Aceita as conexões estabilizada e recionadas com outras feitas nos pcs da minha rede interna:
/usr/sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#Opa, aqui está um dos segredos para o outlook funcionar, uma coisa que ninguém faz e todo mundo reclama que o teu outlook não #funciona, é liberar a resposta e o acesso aos resolvedores de nome, para que o outlook transforme o nome que ele possui no #servidor smtp e pop em um ip:
/usr/sbin/iptables -A FORWARD -p udp -s 192.168.254.140/8 -d 200.204.0.10 --dport 53 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 192.168.254.140/8 -d 200.204.0.138 --dport 53 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.10 --sport 53 -d 192.168.254.140/8 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.138 --sport 53 -d 192.168.254.140/8 -j ACCEPT
#Feito isso, vamos liberar para a minha rede interna as portas que o outlook vai utilizar para acessar os servidores externos ou qq outra porta q eu desejo liberar, em 2 partes a de cima e de baixo
#35451 e 60000:620000 e 1000:1100 do ftp do junior
# 4661 4672 é do emule
#995 do gmail
#ver depois se liberando a potra3128 aqui pra quando eu der squid -N -d 1 -D funcionar certinho , nao vai deixar outros de redes de fora usar minha 3128 para fazer proxy
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 20:22 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 25 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 110 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 465 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 995 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 3128 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 4661:4662 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 35451 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 1000:1100 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 2121:2122 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 192.168.254.0/8 --dport 60000:62000 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 20:22 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 2121:2122 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth0 --sport 2121:2122 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth0 --sport 22 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 20:22 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 465 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 995 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 3128 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 1000:1100 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 2121:2122 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 4661:4672 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 35451 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 60000:62000 -j ACCEPT
#Pronto, o nosso objetivo do outlook funcionar está OK! Agora vamos dropar o resto, nunca se esquecendo de logar isso:
/usr/sbin/iptables -A FORWARD -j LOG --log-prefix "Pacote forward descartado: "
/usr/sbin/iptables -A FORWARD -j DROP
#No caso da rede que eu fiz isso, eram poucos pcs, uns 30, então em masquerei a conexão mesmo, mas nada te impede de usar SNAT:
/usr/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
http_conf
ServerType standalone
ServerRoot "/usr"
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
Listen 192.168.254.140:1099
Listen 1099
Port 40
Port 1099
User nobody
Group nobody
DocumentRoot "/var/www/sites"
NameVirtualHost*
<VirtualHost *>
ServerName localhost
DocumentRoot /var/www/sites
</VirtualHost>