Se netstat -tapnl | grep 25
não retornar algo como 0: 0: 0: 0: 25 (ou o IP paticular que você consulta), significa que nada está escutando nessa porta e o IPTables não é o problema - ou pelo menos não o problema somente .
Eu atualizei meus iptables no Ubuntu 10.04, mas não parece ter nenhum efeito nas portas abertas.
Quando executo iptables --list
, a linha a seguir é exibida
Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere tcp dpt:smtp
No entanto, quando tento fazer uma varredura de porta para ver se a porta 25 está aberta, ela responde como fechada. Poderia haver algo mais upstream que está bloqueando a porta? Ou preciso fazer algo para 'reiniciar' o firewall depois de modificar as tabelas de IP?
Linux Noob aqui, se não for bem recebido ...
Ele provavelmente responde como fechado porque você não tem um serviço escutando nessa porta.
Algumas distribuições do Linux (estou olhando para minha instalação do RHEL principalmente) definem o sendmail para escutar apenas no host local. Então, se eu estivesse fazendo meu portscan de outro computador, ele retornaria como fechado.
Além disso, alguns provedores (estou olhando para minha Cox aqui) bloquearão entrada 25. Então, se eu estava digitalizando de um scanner baseado na web como GRC's Shields Up, ele retornará como se eu tivesse definido para DROP vez de aceitar. Eles fazem isso como uma maneira de combater o spam em toda a Internet. Seu ISP pode ter uma política para enviar de volta uma mensagem de porta fechada em vez de permitir que você atenda.
A sugestão anterior de que você não tem um serviço ouvindo na porta 25 é a mais provável.
Outra sugestão é verificar as regras e as interfaces. Por exemplo, execute:
iptables -L -v
também mostrará as interfaces. Portanto, pode haver regras diferentes para interfaces diferentes (especialmente a interface lo que normalmente será ACCEPT para todo o tráfego).
Apenas para fornecer um pouco mais de informações sobre o uso do netstat. A opção de linha de comando -p (como sugerido acima) fará com que o netstat exiba o programa que está associado ao soquete / porta. Neste caso o exim deve aparecer na saída indicando que é responsável pela conexão da porta 25. Mas há um detalhe um pouco sutil sobre o uso dessa opção. Devido à segurança, o netstat mostrará apenas os nomes dos programas para os aplicativos que você possui. Então, se você ainda não está fazendo seus testes como root, o netstat não mostrará qual aplicativo possui a porta 25. Em geral, não se deve criar o hábito de correr como root, mas neste caso é um passo útil.
Outro detalhe um pouco relacionado aqui é o uso do telnet. Esta aplicação é uma ferramenta de análise de rede muitas vezes perdida. Um teste muito rápido para ver se a porta 25 está fazendo alguma coisa é simplesmente fazer o telnet (isso funciona muito bem para qualquer número de outras portas de serviço). Tente telneting para localhost, 127.0.0.1, seu IP e seu hostname. A razão pela qual eu apontei é que o exim pode estar rodando e pode ter aberto a porta 25 de alguma forma, mas se algo for quebrado sobre o exim (digamos que alguém mexeu com o arquivo de configuração de uma maneira desajeitada) o uso do netstat não diga-lhe a porta 25 não está falando. E um telnet rápido na vontade.
Se você quiser se sentir unixy old school, você pode usar o nc para o mesmo propósito. Ou, se você preferir a abordagem sledge hammer, olhe a man page do nmap (na verdade, eu não recomendo olhar esta página man para um usuário mais novo, o nmap é terrivelmente complicado). E para mais diversão, tente fazer telnet na porta ssh, é instrutivo.
Tente
$ lsof -i :25
Se você não obtiver nenhum resultado, não terá um servidor de e-mail em execução (ou qualquer tipo de serviço em execução nessa porta).
Eu me lembro de ter um problema parecido com o postfix. Embora o postfix estivesse em execução, a varredura de porta não mostrava a porta 25 como aberta. O problema foi a seguinte linha foi comentada no arquivo
/etc/postfix/master.cf
smtp inet n - - - - smtpd
remova o comentário.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere tcp dpt:smtp
Quais conexões devem ser permitidas? O que já é permitido?
Basicamente, você pode alterar sua regra para o seguinte:
iptables -A INPUT -p tcp --dport 25 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT