Linux пользователь без прав

Создание пользователя полностью без прав для SSH proxy через putty

В свете последних событий по блокировки всё и вся в России было принято решение скинуться и купить VPS на пятерых знакомых, и создать простой гproxy через SSH туннель. Инструкция как это сделать используя putty есть в интернете в большом количестве. Единственное что не написано это как сделать настройки максимально безопасно для самого VPS’a.

Хотелось бы сделать пользователя полностью без прав, чтобы при подключении к серверу, пользователь не мог прочитать никакие настройки и изменить какие либо файлы. Желательно чтобы вообще ничего не смог сделать, ему в принципе делать ничего и не нужно.

максимум что удалось сделать, чтобы все работало, это создать пользователя без группы: # useradd -m -s /bin/bash -g nogroup -G nogroup anastasia

Далее в папку /home/anastasia/.ssh помещаем файл ключ и авторизуемся по ключу, а не по паролю.

Варианты создать VPN, не рассматриваются т.к. нужно только браузер пустить в обход блокировке, а не всю систему целиком.

На сколько такой вариант настройки VPS и создания пользователя можно считать безопасным и есть ли варианты как-то еще обрезать права пользователю, но при условии чтобы всё работало как proxy?

в .ssh/authorized_keys можно прописать доп. ограничения типа no-pty no-X11-forwarding и ограничить доступ с конкретного ip

нельзя писать в место шелла /bin/false, после авторизации сразу выкидывает и сессия закрывается. так уже пробовала, не получается.

ограничения по IP делать нельзя, у нас динамические IP.

Так это же для этого и надо. Только тоннель должен работать.

по ограничениям authorized_keys написано в справке sshd.

Если указать шелл: /bin/false то соединение СРАЗУ после авторизации закрывается, тоннель тоже закрывается, putty закрывается, всё закрывается. Соединение должно висеть и не закрывать. Тут нужно что-то другое. как вариант указать в качестве sella файл: /home/anastasia/bash

но мне не нравиться это решение, как то это через одно место 🙁

о соединение СРАЗУ после авторизации закрывается

В настройках клиента надо указать что бы шелл не запускал.

Читайте также:  Linux восстановить удаленные файлы xfs

У консольного это -N Do not execute a remote command. This is useful for just forwarding ports.

у Putty: Connection => SSH => Dont start shell or command at all

Анонимус дурной — не слушай. Шелл /bin/false — по факту запрет входа в систему, например, такие аккаунты используются для запуска демонов.

1) Всех юзеров можно лепить как nobody/nogroup — этого более чем достаточно в 99,99% случаев и вполне секурно.

2) Если хочется прям совсем изолировать, то всех юзеров в чрут. Команды запускать нельзя (если их не подсовывать в каждую хомдир), про сам сшелл не очень помню поведение, но для туннелей самое оно.

Кусок конфига OpenSSH сервера:

Match Group nogroup ChrootDirectory %h X11Forwarding no 

-N Do not execute a remote command. This is useful for just forwarding ports.

Проблема интерпретации того что написано. Что бы это все сделать на машине нужен рабочий сшелл. `-N` просто дает возможность запустить SSH-клиент в не интерактивном режиме.

Match User proxy ForceCommand read a; exit 

Кстати, уже была такая тема, советую посмотреть тред: ssh tunnel (авторизация без шелл)

Подведя итог получаем: — при создании пользователя уменьшаем ему права указав другую группу за место «user» указываем «nogroup», также указываем другой shell за место «/bin/bash» указываем «/bin/false», полная команда:

# useradd -m -s /bin/false -g nogroup -G nogroup anastasia 

в файле /home/anastasia/.ssh/authorized_keys дописываем строки, чтобы запретить все что только можно: no-X11-forwarding,no-user-rc,no-agent-forwarding,no-pty

должно быть как-то так (это все в одну строку, ключ вырезан):

no-X11-forwarding,no-user-rc,no-agent-forwarding,no-pty ssh-rsa AAAA. aQ== anastasia@FiveVPS 

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

вот команды для firewall, в примере порт для SSH 54787-й:

iptables -I INPUT 1 -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp -j DROP iptables -A INPUT -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p UDP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p UDP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT # -------------------------------------------------------------------------------------- # Блокирование bruteforce-атак (подбор пароля вслепую) на SSH и аналогичные сервисы: # Создаем цепочку для проверки попыток соединений на защищаемый порт: iptables -N ssh_brute_check # Если за последние 20 минут (1200 секунд) с одного адреса было 3 или более новых соединений — блокируем этот адрес: iptables -A ssh_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 3600 --hitcount 3 -j DROP # В противном случае — разрешаем, и при этом заносим в список iptables -A ssh_brute_check -m recent --set -j ACCEPT # Все попытки открыть новое соединение по SSH направляем на проверку iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 54787 -j ssh_brute_check # --------------------------------------------------------------------------------------- # политика по умолчанию все запретить: iptables -P INPUT DROP iptables -P FORWARD DROP ip6tables -A INPUT -j DROP ip6tables -A FORWARD -j DROP # Сохраняем правила файрвола: iptables-save > /etc/iptables.rules ip6tables-save > /etc/ip6tables.rules 

При подключении через putty используя ключи дополнительно ставим галочку Connection => SSH => Dont start shell or command at all.

Читайте также:  Отключение linux в консоли

а при подключении через ssh в linux, команда выглядит так:

ssh -i ~/.ssh/FiveVPS_priv_SSH_key_file -D 127.0.0.1:8034 -N -l anastasia -p 54787 10.20.30.40 

Эти настройки не полные, тут только то что отличается от стандартных настроек которыми завален интернет.

Посмотрите на настройки, я ничего не упустила, может что-то забыла или сделала не так?

Источник

Как создать пользователя Linux, который не может войти в систему

По соображениям безопасности вам может потребоваться создать пользователя Linux без возможности входа. Джек Валлен покажет вам, как это сделать.

У системных администраторов Linux, бывают случаи, когда вам может понадобиться создать пользователя, который не имеет возможности войти в систему. Когда этот тип пользователя будет необходим? Скажем, например, вы должны создать пользователя для правильной работы приложения, но вы не хотите, чтобы у этого пользователя был домашний каталог или возможность входа в систему.

Безопасность. Чем больше пользователей в вашей системе Linux, тем больше шансов, что злоумышленники могут взломать ее и нанести ущерб. Это особенно верно, когда мы говорим о пользовательской учетной записи, которая не будет использоваться реальным человеком, поэтому она не будет отслеживаться никоим образом.

Есть несколько способов справиться с этой задачей, но я хочу показать вам правильный способ сделать это.

Что вам нужно

  1. Работающий экземпляр любого дистрибутива Linux
  2. Учетная запись пользователя с привилегиями sudo

Как создать учетную запись Linux

Помните, мы создаем учетную запись Linux, которая не может войти в систему. Другими словами, это системная учетная запись. Допустим, учетная запись, которую вы хотите создать, называется nouser . Есть два правильных способа создания этой системной учетной записи.

Первый способ требует, чтобы вы вручную сконфигурировали оболочку, чтобы пользователь не мог войти в систему. Войдите на свой сервер Linux или на рабочий стол и введите команду:

sudo adduser nouser --shell=/bin/false 

Это установит оболочку в /bin/false , поэтому пользователь nouser не сможет войти в систему. Вам будет предложено ввести и подтвердить пароль, а затем заполнить информацию для пользователя:

Читайте также:  Oracle linux network manager

Следующий метод использует параметр —system следующим образом:

sudo adduser nouser --system 

Приведенный выше метод создает учетную запись без пароля и без оболочки, поэтому он не может войти в систему. Тем не менее, вышеуказанный метод также создает домашний каталог. Если вы не хотите, чтобы домашний каталог создавался, команда будет выглядеть так:

sudo adduser nouser --system --no-create-home 

Если вам абсолютно не нужен домашний каталог для учетной записи, абсолютный самый безопасный метод — последний метод. Почему? Потому что нет пароля для учетной записи, а также нет домашнего каталога.

Как добавить пользователя в группу

Часто системные учетные записи относятся к группам. Скажем, этот пользователь должен входить в группу www-data. Для этого сначала нужно создать пользователя с помощью команды adduser , а затем добавить его в группу www-data с помощью команды:

sudo usermod -aG www-data nouser 

Теперь у вас есть системная учетная запись, которая не может войти в систему, которая входит в группу www-data.

Поздравляем, теперь вы знаете, как создавать пользователей системы Linux, которые не могут войти в систему и не имеют домашнего каталога — используйте этих пользователей с умом.

Источник

Оцените статью
Adblock
detector