По итогу внедренного сервиса передачи данных — ProFTPD уже имеем, что на моей системе Ubuntu 18.04 Server:

Но в дополнении к уже выше указанному и применяемому у меня, я обычно руководствуюсь еще одними правилами — это по максимому на сколько мне известно скрывать болтливость сервисов от своей версии.

Шаг №1: Отключить болтливость SSH сервиса на сервере:

ekzorchik@navy:~$ echo "hello" | nc 172.33.33.21 22

SSH-2.0-OpenSSH_7.6p1

Protocol mismatch.

ekzorchik@navy:~$ strings /usr/sbin/sshd | grep OpenSSH_7

OpenSSH_7.6p1 Ubuntu-4ubuntu0.3

OpenSSH_7.6p1

OpenSSH_7.6

ekzorchik@navy:~$

ekzorchik@srv-bionic:~$ sudo apt-get install hexedit

ekzorchik@srv-bionic:~$ sudo cp /usr/sbin/sshd /tmp/sshd.backup

ekzorchik@srv-bionic:~$ sudo cp /tmp/sshd.backup /tmp/sshd.new

ekzorchik@srv-bionic:~$ sudo hexedit /tmp/sshd.new

Если нажать клавишу TAB то вы переключитесь между HEX (Hexa string to search:) & ASCII (Ascii string to search:) областями, затем сочетание клавиш Ctrl + S и производим поиск упоминания OpenSSH_7 и нажимаем Enter,

Поиск упоминания об SSH в бинарнике

и так несколько раз Ctrl + S и слово SSH, agent, OpenSSH — это все и более в зависимости что показал вывод:

strings /usr/sbin/sshd | grep OpenSSH_7

Если нашли, то изменяем на произвольное, к примеру оставляем только OpenSSH, для этого нажимаем клавишу TAB — это мы опять переключаемся на область HEX и где нужный символ после OpenSSH нажимаем клавишу d или клавишу 0 (что наверное наиболее правильно), к примеру итог:

Результат затертого упоминания SSH Version

Чтобы сохранить внесенные изменения нажимаем сочетание Ctrl + x

Save changes (Yes/No/Cancel) ? Y

После чего проверяем, что действительно внесли везде изменения:

ekzorchik@srv-bionic:~$ sudo strings /tmp/sshd.new | grep OpenSSH_7

ekzorchik@srv-bionic:~$

вывод пуст. Отлично.

Заменяем оригинальный бинарник своим:

ekzorchik@srv-bionic:~$ sudo rm /usr/sbin/sshd

ekzorchik@srv-bionic:~$ sudo cp /tmp/sshd.new /usr/sbin/sshd

ekzorchik@srv-bionic:~$ sudo systemctl restart ssh.service

ekzorchik@srv-bionic:~$ sudo nano /etc/ssh/sshd_config

DebianBanner no

PrintLastLog no

ekzorchik@srv-bionic:~$ sudo service ssh restart

Проверяю, на сколько теперь информативен сервис SSH:

ekzorchik@navy:~$ echo "hello" | nc 172.33.33.21 22

SSH-2.0-OpenSSHP

Protocol mismatch.

ekzorchik@navy:~$ telnet 172.33.33.21 22

Trying 172.33.33.21...

Connected to 172.33.33.21.

Escape character is '^]'.

SSH-2.0-OpenSSHP

]

Protocol mismatch.

Connection closed by foreign host.

ekzorchik@navy:~$

ekzorchik@navy:~$ sudo nmap -T4 -A 172.33.33.21 -p 22

PORT STATE SERVICE VERSION

22/tcp open ssh (protocol 2.0)

| fingerprint-strings:

| NULL:

|_ SSH-2.0-OpenSSHP

Вот только есть одно, но, если на сервере будут устанавливаться обновления, то Ваш измененный бинарник может быть затерт. К тому же если натравить сетевой сканер nmap, действительно натравить, то какую-то информацию можно извлечь, но точно сказать нельзя:

1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :

SF-Port22-TCP:V=7.60%I=7%D=4/9%Time=5E8ED426%P=x86_64-pc-linux-gnu%r(NULL,

SF:12,"SSH-2\.0-OpenSSHP\r\n");

Это отпечаток с которым nmap сравнивает получаемые значения при сканировании.

Шаг №2: Но если не используется доступ из доверенных сетей, то правила такие:

ekzorchik@srv-bionic:~$ sudo nano /etc/ssh/sshd_config

а) Изменить дефолтный порт подключения на выше 1024

#Port 22

б) Запретить root авторизацию, только под пользователем и после повышение привилегий если нужно через sudo

PermitRootLogin no

в) Принудительно использовать версию протокола 2

Protocol 2

г) Использовать белый список тех кто может подключаться к системе.

AllowUsers ekzorchik alektest1

д) Изменение времени ожидания авторизации с 2 минут на 1

#LoginGraceTime 2m

LoginGraceTime 1m

е) Отключение от сеанса если отсутствует активность в шелле

#Нет активность 15 минут, разъединяемся

ClientAliveInterval 900

ClientAliveCountMax 0

ж) И мое самое любимое настроить fail2ban, если обнаружены попытки подбора пароля, то бан на неделю.

з) Если доступ не привычная связка логин и пароль, а по ключу, то пункт д) не нужен.

PasswordAuthentication no

PubkeyAuthentication yes

и) Задействовать технологию Port-Knocking на подключение по SSH. Правда не вижу смысла, если доступ ограничен подсетями или доступ через публичный ключ.

Шаг №3: Отключить болтливость ProFTPd сервиса на сервере:

ekzorchik@srv-bionic:~$ sudo nano /etc/proftpd/proftpd.conf

ServerIdent off

ServerName "PENTAGON"

ekzorchik@srv-bionic:~$ sudo systemctl restart proftpd

Шаг №4: Обязательно самостоятельно просканировать данный хост с другой станции сетевым сканером nmap:

(Это сканирование с системы другой сети: 172.35.35.4)

ekzorchik@srv-nas:~$ sudo nmap -T4 -A 172.33.33.21 -p 21,22

Starting Nmap 6.40 ( http://nmap.org ) at 2020-04-09 10:05 MSK

Nmap scan report for 172.33.33.21

Host is up (0.00080s latency).

PORT STATE SERVICE VERSION

21/tcp filtered ftp

22/tcp filtered ssh

Too many fingerprints match this host to give specific OS details

Network Distance: 2 hops

(Это сканирование с системы этой же сети: 172.33.33.16)

ekzorchik@navy:~$ sudo nmap -T4 -A 172.33.33.21 -p 21,22

PORT STATE SERVICE VERSION

21/tcp open ftp ProFTPD

| ssl-cert: Subject: commonName=172.33.33.21/organizationName=ekzorchik/stateOrProvinceName=Russian/countryName=RU

| Not valid before: 2020-04-08T17:12:41

|_Not valid after: 2030-04-06T17:12:41

22/tcp open ssh OpenSSH 7.6p1 (protocol 2.0)

| ssh-hostkey:

| 2048 c5:97:fb:b0:f1:4e:31:a2:42:ca:cc:81:a0:e4:70:6f (RSA)

| 256 e9:6c:a6:ac:0b:d2:1d:f8:35:91:18:d9:8d:e9:c0:ee (ECDSA)

|_ 256 2f:31:49:03:ae:53:88:dd:e7:3e:18:9a:7d:04:d8:2a (EdDSA)

MAC Address: 82:3F:A9:F7:A6:87 (Unknown)

Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port

Device type: general purpose

Running: Linux 3.X|4.X

OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4

OS details: Linux 3.10 - 4.8, Linux 3.2 - 4.8

Network Distance: 1 hop

Service Info: Host: 172.33.33.21; OS: Unix

Итого, даже малая часть правильных настроек обезопасит Ваши ресурсы от несанкционированных посягательств. Проверено на себе, уже более 8 лет мои ресурсы не страдают, т.е. если делаешь для себя, то делаешь на совесть.

На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.