Como bloquear um intervalo de endereço IP com o UFW

3

Estou tentando bloquear um intervalo de endereços IP no meu servidor Ubuntu 16.04LTS de um país específico, ou seja, China, Irã, etc.

Eu esperava encontrar um script ou algo que eu pudesse executar para criar uma lista de atualização dinâmica. Como em apenas coloquei códigos de país e ele preenche automaticamente a lista atual de algum lugar, em seguida, acrescentei meu intervalo de blocos. Facilitando a atualização da lista de endereços à medida que eles mudam. Mas, para começar, usei blocos de ip do país para encontrar uma lista de endereços para a China e salvou-os em um arquivo de texto intitulado "chinaiprange.txt"

Após algumas pesquisas, encontrei o seguinte comando para inseri-las todas de uma vez de este exemplo

while read line; do sudo ufw insert 1 deny from $line to any; done < chinaiprange.txt

No entanto, quando eu o executo, recebo a seguinte saída: ERROR: Bad source address

Os endereços são salvos no seguinte formato:

1.0.1.0/24 
1.0.2.0/23
1.0.8.0/21
...

Se houver uma maneira melhor de fazer isso, seria ótimo, mas deixar-me saber o que estou fazendo de errado seria tão impressionante. Agradecemos antecipadamente!

    
por mrhatter 10.06.2016 / 01:40

2 respostas

0

Releia man ufw . Existem duas invocações ufw semelhantes que você está confundindo:

   ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out] [log|log-all] PORT[/PROTOCOL]

   ufw [--dry-run] [rule] [delete] [insert NUM] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

Você provavelmente quer

sudo ufw insert 1 deny on eth0 from $line 
    
por waltinator 10.06.2016 / 03:39
1

Eu não acho que haja algo errado com a sintaxe do seu comando (seja do comando ufw , ou do laço bash - embora seja uma boa prática citar a variável $line ie ie ... from "$line" to any ... ) .

O erro ERROR: Bad source address indica um problema com a cadeia de endereços propriamente dita, e podemos adivinhar que isso pode ser devido aos términos de linha CR-LF no estilo DOS - que você pôde confirmar abrindo o arquivo chinaiprange.txt em nano

A solução é consertar os finais de linha, usando qualquer um dos métodos bem conhecidos como:

  • executando seu arquivo por meio do comando dos2unix
  • usando tr ou sed - por exemplo, sed -i 's/\r$//' chinaiprange.txt
  • abrindo o arquivo em vi e executando :set ff=unix seguido por :wq para salvar novamente
por steeldriver 11.06.2016 / 14:46