Строка sshd: username@ipaddress
в /etc/hosts.allow
применяла бы ограничение к службе sshd
(и только в том случае, если она была скомпилирована с поддержкой libwrap
или настроена на использование оболочек TCP ). Это вообще ничего не делает для proftpd
.
Если для подключения вы используете режим scp
или SFTP
WinSCP, вы фактически используете службу sshd
, и proftpd
вообще не будет задействован. Если вы используете режим FTP
или FTPS
, то proftpd
может справиться с ними, а sshd
вообще не будет задействован.
(Запуск ненужной службы с плохо -понятной конфигурацией на сервере, -доступном в Интернете, напрашивается на заражение вредоносным ПО. Ради себя и других пользователей EC2, пожалуйста, не делайте этого.)
Использование формы sshd: username@ipaddress
в /etc/hosts.allow
требует, чтобы на клиенте была запущена identd
или аналогичная служба. identd
— это служба, которая раскрывает локальное имя пользователя, связанное с активным TCP-соединением, всем, кто спрашивает. В наше время это считается опасным и ненужным раскрытием информации, поэтому служба identd
больше не включена и обычно даже не устанавливается по умолчанию в современных системах.
А если клиент не является Unix-подобной системой -, поддерживаемой кем-то, кому вы доверяете, удаленная служба identd
может быть настроена на ложь, даже если она существует и не блокируется брандмауэрами. Подводя итог, добавление имен пользователей в /etc/hosts.allow
вряд ли будет полезным в современной сетевой среде.
Сначала вам нужно будет принимать входящие подключения от каждого авторизованного клиентского хоста, а затем, когда они раскрывают имя пользователя, к которому они хотят подключиться, как (в рамках процедуры аутентификации ), вы можете отклонить не -соответствующие комбинации.
С помощью sshd
вы можете сделать это, добавив что-то вроде этого в ваш файл /etc/ssh/sshd_config
:
AllowUsers user1@ip.address.1 user2@ip.address.2...
Обратите внимание, что это также ограничит обычные подключения SSH, поэтому убедитесь, что вы не заблокировали себя.
Все менеджеры пакетов работают одинаково, что не так уж сложно имитировать, вопрос в деталях реализации.
Если вы не хотите использовать собственный формат пакета, например. что-то вроде RPM или DEB, вы можете просто использовать tar.gz
В этом файле tar.gz вы можете иметь файлы пакетов и вспомогательные файлы, которые содержат :описание, список файлов (, если вы хотите, чтобы пользователь мог искать файлы без извлечения всего архива )и зависимости (могут быть простым списком файлов ).
Построение зависимостей — это тоже не высшая математика. Вы можете использовать ldd
и/или strace
.
Теперь вам нужно создать базу данных файлов пакетов и зависимостей, которые вы можете хранить, например, в. База данных Berkley или SQLite DB.
Затем вам нужно найти способ сканировать эти зависимости всякий раз, когда пользователь хочет установить новый пакет
Наконец, вам нужна база данных установленных файлов и пакетов.
Все это требует тонны кода. Лучше использовать то, что уже есть.
Наконец, конечно, вы можете заново изобрести колесо и сделать все это, но есть буквально тысячи отчетов об ошибках, поданных в отношении проектов с открытым исходным кодом, которые вы могли бы помочь, исправив их.На самом деле никому не нужен новый малоизвестный дистрибутив, который вы будете поддерживать какое-то время, а затем избавитесь от него, потому что у вас нет на это достаточно времени или вы недостаточно мотивированы по разным причинам.