Esta resposta não responde realmente quem está tentando entrar no seu host, mas pode dar uma ideia de onde a pessoa está vindo.
Se você for usar senhas para fazer login através do ssh, você deve tomar algumas precauções quanto às pessoas que tentam invadir seu sistema. Para meu uso pessoal, gosto de usar fail2ban
e depois escrevi meu próprio script que usa iptables
e ipset
. A última parte que eu uso para o bloqueio completo de IPs de países veio ao meu host na porta 22. Eu também instalei geoiplookup
como uma maneira de ver de onde o IP está vindo para decidir se eu quero bloquear o país ou não . O script que eu tenho abaixo obtém os conjuntos de IPs de ipdeny.com
. Ele reduziu drasticamente a quantidade de tentativas no meu host desde que deixei a porta 22 aberta a maior parte do tempo.
Instalando fail2ban
:
sudo apt install fail2ban
Normalmente, com fail2ban
, as configurações padrão são OK. Se você quiser alterá-los, copie /etc/fail2ban/jail.conf
as /etc/fail2ban/jail.local
e faça as modificações no arquivo jail.local
que você criou. Você também pode ver tentativas fracassadas no arquivo /var/log/fail2ban.log
.
Instalando geoiplookup
:
sudo apt install geoip-bin
Então você pode ver de onde os endereços IP estão vindo.
~$ geoiplookup 218.87.109.156
GeoIP Country Edition: CN, China
O script de bloqueio de país que eu criei.
Um aplicativo necessário para o bloco de país é ipset
. Este aplicativo permite que iptables
use um bloco de IPs em vez de mostrar todos os endereços IP individuais quando você verificar o status de iptables
.
sudo apt install ipset
Estou certo de que há muito que pode ser limpo. Eu coloquei o meu na minha pasta pessoal e chamei de country_block.bsh
. Como o script faz alterações em iptables
, ele precisa ser chamado de sudo
. Eu adicionei o cheque ao script.
#!/bin/bash
function custom(){
echo "Removing CUSTOM_IP set..."
prts=$(iptables -nvL INPUT | grep "CUSTOM_IP" | awk '{print $15}')
iptables -D INPUT -p tcp -m set --match-set CUSTOM_IP src -m multiport --dport ${prts} -j DROP 2>/dev/null
ipset destroy CUSTOM_IP
ipset -N CUSTOM_IP hash:net
echo "Creating CUSTOM_IP set..."
for i in $(cat custom.zone); do ipset -A CUSTOM_IP $i; done
echo "Creating rules for CUSTOM_IP set..."
iptables -A INPUT -p tcp -m set --match-set CUSTOM_IP src -m multiport --dports ${ports} -j DROP
}
function tablecheck(){
iptables -S INPUT | grep -v ACCEPT
}
# Check for ipset
which ipset >/dev/null
case $? in
1) echo "ipset not found on system. Please install ipset application."
exit 1;;
0);;
esac
# Check for root
if [ "$EUID" -ne 0 ]; then
echo "Please run this script as root"
exit 1
fi
# Set ports
ports=22,10000
# Check for country codes, if none, print list.
if [[ $@ == "" ]]; then
curl http://www.ipdeny.com/ipblocks/ 2>/dev/null | grep "<td>" | awk -F'<p>' '{print $2}' | awk -F'[' '{print $1}' | grep -v -e '^$'
echo "Choose any of the countries by typing in the two letter code between the ( )."
exit
fi
if [[ $1 == "custom" ]]; then
if [ ! -f custom.zone ]; then
echo "Missing custom.zone file. Please create custom.zone file with IP addresses for blocking."
exit
fi
custom
tablecheck
exit
fi
#Set ISO to country code(s).
ISO=$@
#Start Loop for country IP blocks and creating IPTABLES chain(s).
for c in $ISO; do
#Convert to lowercase. If already lowercase, ignored.
c=$(echo $c | awk '{print tolower($0)}')
#Match code to country name
country=$(curl http://www.ipdeny.com/ipblocks/ 2>/dev/null | grep \($(echo $c | awk '{print toupper($0)}')\) | awk -F'<p>' '{print $2}' | awk -F'(' '{print $1}' | sed 's/ //g' | sed 's/,//g')
# Truncate to 31 characters if too long.
country=${country:0:31}
echo "Got country $country..."
echo "Removing Existing Rule for $country (if any)..."
prts=$(iptables -nvL INPUT | grep "$country" | awk '{print $15}')
iptables -D INPUT -p tcp -m set --match-set "$country" src -m multiport --dport ${prts} -j DROP 2>/dev/null
ipset destroy $country
ipset -N $country hash:net
rm $c.zone 2>/dev/null
echo "Downloading IP block for $country..."
wget -P . http://www.ipdeny.com/ipblocks/data/countries/$c.zone 2>/dev/null
echo "Checking for invalid IP ranges in $country zone..."
for i in $(seq 1 7); do grep "/$i$" $c.zone; if [[ $? == "0" ]]; then sed -i "s/\/${i}$/\/24/" $c.zone; echo "Fixed..."; fi; done
echo "Creating iptable block for $country..."
for i in $(cat $c.zone); do ipset -A "$country" $i; done
echo "Adding rule to firewall..."
iptables -A INPUT -p tcp -m set --match-set "$country" src -m multiport --dports ${ports} -j DROP
echo "Added Firewall Rule for $country"
rm $c.zone 2>/dev/null
done
if [[ $# == "1" || $1 -ne "custom" ]]; then
tablecheck
else
if [ ! -f custom.zone ]; then
echo "Missing custom.zone file. Please create custom.zone file with IP addresses for blocking."
tablecheck
exit
fi
custom
fi
if [[ $# -ne "1" ]]; then
tablecheck
fi
#iptables -S INPUT | grep -v ACCEPT
Você pode criar um custom.zone
na mesma pasta que o arquivo country_block.bsh
com apenas IPs que podem estar tentando várias vezes para hackear seu sistema. Adicione-os com /32
no final do endereço IP, como 256.99.265.106/32
. Depois de adicionar seus próprios IPs personalizados, você pode recarregá-los simplesmente executando:
sudo ./country_block.bsh custom
Tenha cuidado para não bloquear seu próprio país ou seu próprio IP público.
Tenha também cuidado para não bloquear nenhuma outra porta que não esteja aberta. Se você bloquear a porta 80, há uma chance de que, se você visitar um site desse país, ela não seja carregada porque não pode retornar ao seu sistema na porta 80.
Em seguida, criei outro script na minha pasta pessoal chamado cb_update.bsh
que contém todos os países que eu quero bloquear.
#!/bin/bash
cd /home/terrance/scripts/
./country_block.bsh cn ru nl de dk fr id ie it kr sg tw vn br ua pt il gb jp pk ar co fi in
Em seguida, adicionei as seguintes linhas ao meu arquivo /etc/crontab
. Ele cobre toda vez que meu sistema é reiniciado e atualiza a lista às 01:05 da manhã.
$ cat /etc/crontab
@reboot root /bin/bash -c 'sleep 20 && /home/terrance/cb_update.bsh'
01 05 * * * root /home/terrance/cb_update.bsh
Se você executar o script sozinho, ele fornecerá os códigos do país:
terrance@terrance-ubuntu:~/scripts$ sudo ./country_block.bsh
AFGHANISTAN (AF)
LAND ISLANDS (AX)
ALBANIA (AL)
ALGERIA (DZ)
AMERICAN SAMOA (AS)
ANDORRA (AD)
ANGOLA (AO)
ANGUILLA (AI)
ANTIGUA AND BARBUDA (AG)
ARGENTINA (AR)
ARMENIA (AM)
ARUBA (AW)
AUSTRALIA (AU)
AUSTRIA (AT)
AZERBAIJAN (AZ)
BAHAMAS (BS)
BAHRAIN (BH)
BANGLADESH (BD)
BARBADOS (BB)
BELARUS (BY)
BELGIUM (BE)
BELIZE (BZ)
BENIN (BJ)
BERMUDA (BM)
BHUTAN (BT)
BOLIVIA (BO)
BOSNIA AND HERZEGOVINA (BA)
BOTSWANA (BW)
BRAZIL (BR)
BRITISH INDIAN OCEAN TERRITORY (IO)
BRUNEI DARUSSALAM (BN)
BULGARIA (BG)
BURKINA FASO (BF)
BURUNDI (BI)
CAMBODIA (KH)
CAMEROON (CM)
CANADA (CA)
CAPE VERDE (CV)
CAYMAN ISLANDS (KY)
CENTRAL AFRICAN REPUBLIC (CF)
CHAD (TD)
CHILE (CL)
CHINA (CN)
COLOMBIA (CO)
COMOROS (KM)
CONGO (CG)
CONGO, THE DEMOCRATIC REPUBLIC OF THE (CD)
COOK ISLANDS (CK)
COSTA RICA (CR)
COTE D'IVOIRE (CI)
CROATIA (HR)
CUBA (CU)
CYPRUS (CY)
CZECH REPUBLIC (CZ)
DENMARK (DK)
DJIBOUTI (DJ)
DOMINICA (DM)
DOMINICAN REPUBLIC (DO)
ECUADOR (EC)
EGYPT (EG)
EL SALVADOR (SV)
EQUATORIAL GUINEA (GQ)
ERITREA (ER)
ESTONIA (EE)
ETHIOPIA (ET)
FAROE ISLANDS (FO)
FIJI (FJ)
FINLAND (FI)
FRANCE (FR)
FRENCH GUIANA (GF)
FRENCH POLYNESIA (PF)
GABON (GA)
GAMBIA (GM)
GEORGIA (GE)
GERMANY (DE)
GHANA (GH)
GIBRALTAR (GI)
GREECE (GR)
GREENLAND (GL)
GRENADA (GD)
GUADELOUPE (GP)
GUAM (GU)
GUATEMALA (GT)
GUINEA (GN)
GUINEA-BISSAU (GW)
GUYANA (GY)
HAITI (HT)
HOLY SEE (VATICAN CITY STATE) (VA)
HONDURAS (HN)
HONG KONG (HK)
HUNGARY (HU)
ICELAND (IS)
INDIA (IN)
INDONESIA (ID)
IRAN, ISLAMIC REPUBLIC OF (IR)
IRAQ (IQ)
IRELAND (IE)
ISLE OF MAN (IM)
ISRAEL (IL)
ITALY (IT)
JAMAICA (JM)
JAPAN (JP)
JERSEY (JE)
JORDAN (JO)
KAZAKHSTAN (KZ)
KENYA (KE)
KIRIBATI (KI)
KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF (KP)
KOREA, REPUBLIC OF (KR)
KUWAIT (KW)
KYRGYZSTAN (KG)
LAO PEOPLE'S DEMOCRATIC REPUBLIC (LA)
LATVIA (LV)
LEBANON (LB)
LESOTHO (LS)
LIBERIA (LR)
LIBYAN ARAB JAMAHIRIYA (LY)
LIECHTENSTEIN (LI)
LITHUANIA (LT)
LUXEMBOURG (LU)
MACAO (MO)
MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF (MK)
MADAGASCAR (MG)
MALAWI (MW)
MALAYSIA (MY)
MALDIVES (MV)
MALI (ML)
MALTA (MT)
MARSHALL ISLANDS (MH)
MARTINIQUE (MQ)
MAURITANIA (MR)
MAURITIUS (MU)
MAYOTTE (YT)
MEXICO (MX)
MICRONESIA, FEDERATED STATES OF (FM)
MOLDOVA, REPUBLIC OF (MD)
MONACO (MC)
MONGOLIA (MN)
MONTENEGRO (ME)
MONTSERRAT (MS)
MOROCCO (MA)
MOZAMBIQUE (MZ)
MYANMAR (MM)
NAMIBIA (NA)
NAURU (NR)
NEPAL (NP)
NETHERLANDS (NL)
NEW CALEDONIA (NC)
NEW ZEALAND (NZ)
NICARAGUA (NI)
NIGER (NE)
NIGERIA (NG)
NIUE (NU)
NORFOLK ISLAND (NF)
NORTHERN MARIANA ISLANDS (MP)
NORWAY (NO)
OMAN (OM)
PAKISTAN (PK)
PALAU (PW)
PALESTINIAN TERRITORY, OCCUPIED (PS)
PANAMA (PA)
PAPUA NEW GUINEA (PG)
PARAGUAY (PY)
PERU (PE)
PHILIPPINES (PH)
POLAND (PL)
PORTUGAL (PT)
PUERTO RICO (PR)
QATAR (QA)
REUNION (RE)
ROMANIA (RO)
RUSSIAN FEDERATION (RU)
RWANDA (RW)
SAINT KITTS AND NEVIS (KN)
SAINT LUCIA (LC)
SAINT PIERRE AND MIQUELON (PM)
SAINT VINCENT AND THE GRENADINES (VC)
SAMOA (WS)
SAN MARINO (SM)
SAO TOME AND PRINCIPE (ST)
SAUDI ARABIA (SA)
SENEGAL (SN)
SERBIA (RS)
SEYCHELLES (SC)
SIERRA LEONE (SL)
SINGAPORE (SG)
SLOVAKIA (SK)
SLOVENIA (SI)
SOLOMON ISLANDS (SB)
SOMALIA (SO)
SOUTH AFRICA (ZA)
SPAIN (ES)
SRI LANKA (LK)
SUDAN (SD)
SURINAME (SR)
SWAZILAND (SZ)
SWEDEN (SE)
SWITZERLAND (CH)
SYRIAN ARAB REPUBLIC (SY)
TAIWAN (TW)
TAJIKISTAN (TJ)
TANZANIA, UNITED REPUBLIC OF (TZ)
THAILAND (TH)
TIMOR-LESTE (TL)
TOGO (TG)
TOKELAU (TK)
TONGA (TO)
TRINIDAD AND TOBAGO (TT)
TUNISIA (TN)
TURKEY (TR)
TURKMENISTAN (TM)
TURKS AND CAICOS ISLANDS (TC)
TUVALU (TV)
UGANDA (UG)
UKRAINE (UA)
UNITED ARAB EMIRATES (AE)
UNITED KINGDOM (GB)
UNITED STATES (US)
UNITED STATES MINOR OUTLYING ISLANDS (UM)
URUGUAY (UY)
UZBEKISTAN (UZ)
VANUATU (VU)
VENEZUELA (VE)
VIET NAM (VN)
VIRGIN ISLANDS, BRITISH (VG)
VIRGIN ISLANDS, U.S. (VI)
WALLIS AND FUTUNA (WF)
YEMEN (YE)
ZAMBIA (ZM)
ZIMBABWE (ZW)
Choose any of the countries by typing in the two letter code between the ( ).
Você pode verificar a qualquer momento os hits que podem estar ocorrendo em seu sistema.
$ sudo iptables -nvL INPUT
Chain INPUT (policy ACCEPT 9523 packets, 3125K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 f2b-proftpd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 21,20,990,989
2847 170K f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
12 548 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set CHINA src multiport dports 22,10000
4 176 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set RUSSIANFEDERATION src multiport dports 22,10000
1 44 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set NETHERLANDS src multiport dports 22,10000
2 88 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set GERMANY src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set DENMARK src multiport dports 22,10000
157 8156 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set FRANCE src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set INDONESIA src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set IRELAND src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set ITALY src multiport dports 22,10000
4 180 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set KOREAREPUBLICOF src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set SINGAPORE src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set TAIWAN src multiport dports 22,10000
947 48804 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set VIETNAM src multiport dports 22,10000
2 92 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set BRAZIL src multiport dports 22,10000
6 264 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set UKRAINE src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set PORTUGAL src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set ISRAEL src multiport dports 22,10000
3 180 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set UNITEDKINGDOM src multiport dports 22,10000
1 44 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set JAPAN src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set PAKISTAN src multiport dports 22,10000
2 88 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set ARGENTINA src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set COLOMBIA src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set FINLAND src multiport dports 22,10000
4 188 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set INDIA src multiport dports 22,10000
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set CUSTOM_IP src multiport dports 22,10000
Espero que isso ajude!