По итогу внедренного сервиса передачи данных — ProFTPD
уже имеем, что на моей системе Ubuntu 18.04 Server:
- Как применять ProFTPD на Ubuntu 18.04
- Доступ к ProFTPD только FTP через TLS
- Настраиваем Firewall-cmd на доступ к ProFTPd
Но в дополнении к уже выше указанному и применяемому у меня, я обычно руководствуюсь еще одними правилами — это по максимому на сколько мне известно скрывать болтливость сервисов от своей версии.
Шаг №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
,
и так несколько раз Ctrl + S
и слово SSH, agent, OpenSSH
— это все и более в зависимости что показал вывод:
strings /usr/sbin/sshd | grep OpenSSH_7
Если нашли, то изменяем на произвольное, к примеру оставляем только OpenSSH
, для этого нажимаем клавишу TAB
— это мы опять переключаемся на область HEX
и где нужный символ после OpenSSH
нажимаем клавишу d
или клавишу 0
(что наверное наиболее правильно), к примеру итог:
Чтобы сохранить внесенные изменения нажимаем сочетание 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.