Я только что установил новый сервер, у меня есть следующее:
После просмотра журнала ошибок nginx я вижу постоянный ошибки, которые выглядят как попытки взломать SSL с иранских и российских IP. Например:
2019/09/23 17:42:38 [crit] 6611#6611: *5000095 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.234.166.113, server: 0.0.0.0:443
2019/09/23 17:42:40 [crit] 6611#6611: *5000225 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 31.2.143.221, server: 0.0.0.0:443
2019/09/23 17:42:48 [crit] 6611#6611: *5001090 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 89.36.99.104, server: 0.0.0.0:443
2019/09/23 17:42:49 [crit] 6611#6611: *5001232 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 86.57.113.197, server: 0.0.0.0:443
2019/09/23 17:42:50 [crit] 6611#6611: *5001276 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.121.174.179, server: 0.0.0.0:443
2019/09/23 17:43:00 [crit] 6611#6611: *5002221 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.74.187.51, server: 0.0.0.0:443
2019/09/23 17:43:00 [crit] 6611#6611: *5002250 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 178.236.102.93, server: 0.0.0.0:443
2019/09/23 17:43:01 [crit] 6611#6611: *5002327 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.106.78.245, server: 0.0.0.0:443
2019/09/23 17:43:05 [crit] 6611#6611: *5002733 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 178.236.102.93, server: 0.0.0.0:443
2019/09/23 17:43:12 [crit] 6611#6611: *5003431 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.212.171.209, server: 0.0.0.0:443
2019/09/23 17:43:19 [crit] 6611#6611: *5004092 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 5.115.250.119, server: 0.0.0.0:443
2019/09/23 17:43:29 [crit] 6611#6611: *5005018 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 158.58.64.8, server: 0.0.0.0:443
2019/09/23 17:43:34 [crit] 6611#6611: *5005514 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 31.59.166.195, server: 0.0.0.0:443
2019/09/23 17:43:37 [crit] 6611#6611: *5005762 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 31.2.170.98, server: 0.0.0.0:443
2019/09/23 17:43:37 [crit] 6611#6611: *5005792 SSL_do_handshake() failed (SSL: error:1408F0C6:SSL routines:ssl3_get_record:packet length too long) while SSL handshaking, client: 31.59.166.195, server: 0.0.0.0:443
Это потому, что мой хозяин co. назначили мне грязный IP-адрес, который был целью предыдущих атак, или это что-то более безопасное?
В любом случае, если я не смогу решить эту проблему, журналы будут заполняться достаточно быстро.
Кажется, это не проблема безопасности. Взгляните на этот ответ: https://stackoverflow.com/a/28010608/9361998
В качестве обходного пути (если вы хотите остановить этот запрос) вы можете заблокировать IP-адрес с помощью следующего скрипта
Теория очень проста:
Если у вас установлен python, вы можете запустить этот простой скрипт
import sys
import re
# Save the input data into a string
raw = sys.stdin.read().strip()
BAN_COUNT = 3
# Split the lines of the log
data = raw.split("\n")
to_ban = {}
# Iterate the lines
for item in data:
# Extract IP
ip = re.findall(r"[0-9]+(?:\.[0-9]+){3}", item)
# Due to the filter, we can have only 1 IP
if len(ip) == 1:
# print("Found IP to BAN -> {}".format(ip[0]))
# If IP alredy found increase counter
if ip[0] in to_ban:
to_ban[ip[0]] += 1
# First time that we encounter the IP, create new entry in dict
else:
to_ban[ip[0]] = 1
# Create iptables mask for ban
for keys in to_ban.keys():
if to_ban[keys] >= BAN_COUNT:
# BAN MASK
# Use this for ban
# ban_mask = 'iptables -A INPUT -s {} -j DROP'.format(keys)
# Use this for test purpouse
ban_mask = 'echo "iptables -A INPUT -s {} -j DROP"'.format(keys)
print(ban_mask)
Теперь, когда у нас есть скрипт python, который берет строки ввода, извлекает ip, подсчитывает, сколько раз они сравнивают в тексте, и выводит команду iptables для запрета ip, мы можем проанализировать nginx
журнал.
Сохраните сценарий как ban.py
cat /var/log/nginx | egrep "1408F0C6" | python ban.py | xargs command
В этом методе вы собираетесь банить каждый ip, который попадает в ошибку рукопожатия.