Como permitir o acesso SSH/FTP com base no país usando o Geoip
- 4598
- 1017
- Mrs. Christopher Okuneva
O banco de dados GeoIP possui registros de localização geográfica com base no endereço IP. Usando este banco de dados, podemos procurar qualquer IP pertencente a qual país usando a linha de comando Linux. Este artigo o ajudará a permitir acesso SSH ou FTP (VSFTPD) com base no país do usuário. Este exemplo usa invólucros de TCP para proteger seus serviços.
Instale o banco de dados Geoip e GeoIP
Primeiro, instale o Geoip Binary para Linux e seu banco de dados com base no seu sistema operacional. Para os usuários do CentOS e Redhat, o Binário e o banco de dados Geoip são combinados em um único pacote.
No CentOS e Redhat:
sudo yum install geoip
No Ubuntu e Debian:
sudo apt-get install geoip-bin geoip-database
Crie o script de filtro SSH/FTP
Agora, crie um script de shell que verifique todos os endereços IP de conexão recebida e pesquisam seu país correspondente usando o banco de dados GeoIP e permitiu apenas aqueles países cujo código é definido em Allow_countries variável no script.
vim/usr/local/bin/ipfilter.sh
#!/Bin/Bash # Licença: WTFPL # Códigos de país separados por espaço em maiúsculos espaciais para aceitar allow_countries = "em nós" Logdeny_facility = "AuthPriv.Observe "se [$ # -ne 1]; então echo" Uso: 'nome de base $ 0' "1> & 2 Exit 0 # Retornar verdadeiro no caso da edição de configuração fi se [[" 'eco $ 1 | grep ': "" != ""]]; então country = "/usr/bin/geoiplookup6" $ 1 "| awk -f": "" print $ 2 '| awk -f "," 'print $ 1' | Cabeça -n 1 'else country = "/usr/bin/geoiplookup" $ 1 "| awk -f": "" print $ 2' | awk -f "," 'print $ 1' | cabeça -n 1 'fi [[$ country = "endereço IP não encontrado" || $ Allow_countries = ~ $ country]] && Response = "permitir" || Resposta = "negar" se [["$ resposta" == "permitir"]]; Em seguida, Logger -P $ logdeny_facility "$ Responder SSHD Connection de $ 1 ($ country)" Sair 0 else Logger -P $ Logdeny_facility "$ Responder SSHD Connection de $ 1 ($ country)" Sair 1 FI
Script SROUCE: https: // GIST.Github.com/jokey2k/a74f56955124880749e7
Faça este script executável
chmod +x/usr/local/bin/ipfilter.sh
Restringir conexões SSH/FTP
Agora aplique restrições de SSH e FTP usando invólucros TCP. Primeiro, precisamos negar a todos adicionando abaixo a linha em /etc/hosts.negar
.
/etc/hosts.negar:
sshd: tudo vsftpd: todos
Agora edite /etc/hosts.permitir
e permita apenas os IPs permitidos pelo seu script de filtro IP.
/etc/hosts.permitir:
sshd: all: spawn/usr/local/bin/ipfilter.sh %a vsftp: all: spawn/usr/local/bin/ipfilter.sh %a
Acima das restrições de FTP são apenas para VSFTPD. Além disso, verifique se você ativou (tcp_wrappers = sim) em sua configuração vsftpd. Você também pode criar regras semelhantes para qualquer outro serviço suportado por um wrapper TCP.
Teste
Por fim, teste seu servidor, login usando SSH ou FTP de locais diferentes e analisados e analise os arquivos de log de acesso. Abaixo estão alguns logs de demonstração criados pelo IPFilter.sh.
27 de fevereiro 13:03:29 Tecadmin Raiz: negar a conexão SSHD de 212.191.246.202 (PL) 27 de fevereiro 13:34:28 Tecadmin Raiz: negar a conexão SSHD de 212.181.246.202 (SE) 27 de fevereiro 13:34:36 Tecadmin Raiz: negar a conexão SSHD de 211.181.246.203 (KR) 27 de fevereiro 13:35:00 Tecadmin Raiz: negar a conexão SSHD de 221.191.146.204 (JP) 27 de fevereiro 15:11:04 Tecadmin Raiz: Permitir a conexão SSHD de 49.15.212.12 (in) 27 de fevereiro 15:11:09 Tecadmin Raiz: Permitir a conexão SSHD de 149.15.212.12 (EUA) 27 de fevereiro 15:11:22 Tecadmin Raiz: Permitir a conexão SSHD de 49.15.156.123 (in) 27 de fevereiro 15:11:32 Tecadmin Raiz: Permitir conexão SSHD de 231.15.156.123 (endereço IP não encontrado) 27 de fevereiro 15:14:04 Tecadmin Raiz: negar a conexão SSHD de 111.15.15.123 (CN) 27 de fevereiro 15:14:56 Tecadmin Raiz: Permitir conexão SSHD de 49.15.110.123 (in)
Em toras, você pode dizer que todos os IPs pertencentes aos EUA (Estados Unidos) e na (Índia) são permitidos. Além disso, se algum IP não corresponder no banco de dados GEOIP será permitido por padrão. O restante dos IPs de outros países correspondentes são negados.
- « Como baixar e fazer upload de arquivos usando a linha de comando FTP
- Php - loop entre duas datas »