GNU/Linux | Notes – Telegram
GNU/Linux | Notes
2.39K subscribers
111 photos
8 files
75 links
Open Source, Dotfiles, Debian/Ubuntu, Software, Linux, Scripts, Notes, Terminal, Shell, Gnu, Tools, Games, Fun, Free Software Movement.

Автор: Кирилл Рехов
Почта: krekhov.dev@gmail.com
Кто я: https://news.1rj.ru/str/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
Channel created
Меня зовут Кирилл. Этот канал — моё хобби: я веду его для развлечения и саморазвития, здесь храню свои рабочие заметки и не только. Я Linux-программист и сопровождающий deb-пакетов, а также бывший QA-инженер. Работал в Astra Linux, Сбербанке, Честном Знаке, СберТехе и в ряде небольших IT-компаний. Занимал позиции старшего инженера-программиста.

Пишу на C и Bash, обожаю Shell. Меня интересует Open Source разработка и операционная система Debian. Я активный вкладчик в Debian и являюсь Debian Maintainer — сопровождаю более 10 пакетов. В работе использую последний стабильный выпуск на архитектуре x86_64. Также спонсирую некоторые крупные GitHub проекты финансово.

У меня нет технического образования — в IT я пришёл самостоятельно, по книгам. За более чем 5 лет работы в российских компаниях у меня сформировалась своя позиция и философия относительно программного обеспечения. Я считаю, что ПО должно быть свободным и нести идею, цель, попытку улучшить этот мир и удовлетворить потребности пользователя.

Меня вдохновляет делиться знаниями, поэтому я и создал этот канал. Рекламы и мата здесь не будет. Спасибо за внимание.

> Почта: krekhov.dev@gmail.com
> GitHub: https://github.com/krekhovx

> Мой Debian GitLab: https://salsa.debian.org/krekhov
> Мои пакеты в Debian: https://qa.debian.org/developer.php?login=krekhov.dev@gmail.com

#info
👍20🔥981🆒1
Локализация

Набор переменных, который определяет язык приложений, консоли и т.д.

Например, разбор en_US.UTF8
en
- язык.
US - региональная настройка.
UTF8 - кодировка.

Язык - тут думаю понятно =)

Региональная настройка - это определенные параметры, такие как формат даты и времени, валюта,
числовой формат и другие локальные настройки, которые могут отличаться от других стран.

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

Получить все доступные локализации:
$ locale -a


Чтобы изменить локализацию можно задать:
$ export LANG=en_US.UTF8


Если при выводе выдаются ошибки типа: Cannot set LC_CTYPE to default locale: No such file or directory

То скорее всего задается локализация, которая не была сгенерирована. Для этого нужно подправить /etc/locale.gen файл. В этом файле нужно раскомментировать нужную локализацию, например en_US.UTF-8 UTF-8

Затем выполнить:
$ locale-gen


Появится новая локализация:
$ locale -a


Можно запустить приложение с другим языком, например:
$ LANGUAGE=zh_TW vim


LANG - Локализация, установленная в этой переменной используется в качестве значения для всех остальных LC_* переменных.

LANGUAGE - Запасные локализации (нужно для вывода сообщений на разных языках).

#shell #utils
1🔥1
Как поднять себе настроение работая в оболочке?

Я нашел два прикольных пакета в Debian, называются они cowsay и oneko.

Можно позабавиться:
$ apt-get install -y cowsay
$ cowsay "Have a good day!"


Я например добавил cowsay себе в ~/.profile и при каждом входе в оболочку вижу эту забавную надпись (смотреть скриншот).

Забавляемся дальше:
$ apt-get install -y oneko
$ oneko &


За курсором будет бегать прикольный котик!

#utils #fun
👍2
Атака на SSH сервер. Как пользоваться fail2ban. Разбор лога.

Я арендую сервер для своих рабочих нужд у компании reg.ru, я им доверяю. Я слежу за безопасностью ПО на сервере, анализирую логи, принимаю определенные меры безопасности. Недавно я посмотрел вывод команды:
$ journalctl -S today

и увидел там много веселого! (смотреть скриншот в следующем посте), эти строки показывают сообщения об ошибках, связанных с попытками подключения по SSH к моему серверу (они повторяются много раз). Я думаю будет полезно разобрать данную ситуацию, ибо в последнее время активно атакуются Российские IT компании со стороны США, Украины. Не буду томить, здесь простейший перебор на дурачка, перебираются часто встречающиеся пользователи, пароли, чтобы получить доступ к системе, попытка взломать сервер, как я это понял ? Журнал /var/log/auth.log очень резко стал расти в объеме это раз, во-вторых, в журнале видно, что PAM кричит о неудачных попытках входа по SSH от имени различных пользователей (которых нет у меня на сервере) - это обычный перебор.

Объяснение ошибок:

kex_protocol_error
:
Указывает на ошибки в процессе обмена ключами (key exchange) на этапе предварительной аутентификации. Это может быть связано с несовместимостью протоколов или ошибками в передаче данных.

kex_exchange_identification:
Клиент отправил неверный идентификатор протокола. В данном случае клиент попытался подключиться к SSH-серверу, используя запрос HTTP, что является некорректным. Сообщение kex_exchange_identification: banner line contains invalid characters указывает на то, что строка баннера, отправленная клиентом, содержит недопустимые символы.

MaxStartups throttling:
Сервер достиг предела по количеству одновременных незавершенных попыток подключения (MaxStartups). Это механизм защиты от DoS-атак, который ограничивает количество параллельных подключений.

Возможные причины:

- Попытки несанкционированного доступа или автоматизированные сканирования (боты, пытающиеся найти уязвимости).
- Несовместимость протоколов между клиентом и сервером.
- Ошибки конфигурации клиента или сервера SSH.

Рекомендации:

1. Проверка конфигурации:
- Убедитесь, что конфигурация SSH-сервера корректна и соответствует требованиям безопасности.

2. Журналирование и мониторинг:
- Продолжайте мониторинг логов для выявления подозрительной активности.

3. Ограничение доступа:
- Ограничьте доступ к SSH по IP-адресам, если возможно.
- Используйте firewall для блокировки подозрительных IP-адресов.

4. Обновление программного обеспечения:
- Убедитесь, что ваш SSH-сервер и клиент обновлены до последних версий.

5. Использование fail2ban:
- Рассмотрите возможность использования fail2ban или аналогичных инструментов для автоматической блокировки IP адресов, совершающих подозрительные попытки подключения.

Действия:

При конфигурации /etc/ssh/sshd_config я всегда касаюсь одних и тех же строк, ничего нового не придумываю, правило одно - это никаких паролей, вход только по ключам, пароли входа запретить (ибо их можно перебрать), как для пользователей, так и для root, вот основные моменты:
...
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
ClientAliveInterval 120
...


Установка fail2ban сервиса:
$ apt-get install -y fail2ban


Добавить конфигурацию для sshd в /etc/fail2ban/jail.local файл:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400


Перезапустить:
$ systemctl restart fail2ban


Можно понаблюдать процесс блокировки левых IP адресов, которые обращаются к серверу по SSH (блокировка осуществляется после 3 неудачных попыток входа):
$ fail2ban-client status sshd
$ tail -f /var/log/fail2ban.log


Если на вашем сервере работают другие службы, рассмотрите возможность настройки fail2ban для их защиты.

#security
👍31🔥1
Для поста https://news.1rj.ru/str/krxnotes/426 прикладываю лог

#security
Мне все понятно, скрипт-киддикам дали поиграться: https://www.vedomosti.ru/technology/news/2024/03/20/1026915-proukrainskie-hakeri

Заключительный пост к прошлым двум постам:
https://news.1rj.ru/str/krxnotes/426
https://news.1rj.ru/str/krxnotes/428

#security
Что такое трассировка скрипта?

Размещение информативных сообщений в разных точках сценария для отслеживания протекания выполнения скрипта называется трассировкой. Можно прописать в необходимых местах команды echo, а можно в shebang добавить параметр -x, например:
#!/bin/bash -x
...


или:
#!/bin/bash
set -x
...


или без изменения скрипта:
$ bash -x ./noscript.sh


Если нужно отключить данную опцию, можно прописать +x, например:
$ bash +x ./noscript.sh


#shell
👍4
GNU философия

Философия GNU (GNU's Not Unix) заключается в приверженности свободному и открытому программному обеспечению. Основные принципы GNU включают в себя:

Свобода использования: Пользователи имеют право использовать программное обеспечение в любых целях без каких-либо ограничений.

Свобода изучения: Пользователи имеют право изучать, адаптировать и модифицировать программное обеспечение по своему усмотрению.

Свобода распространения: Пользователи имеют право распространять копии программного обеспечения и делиться им с другими.

Свобода улучшения: Пользователи имеют право улучшать программное обеспечение и делиться своими улучшениями с сообществом.

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

#misc #opensource
👍9
Процесс разработки Debian. Архивы пакетов.

#debian
👍1
There’s a kernel of truth in the old Unix joke, "the only command you need to know is man."

#utils
👍2