GNU/Linux | Notes
2.28K subscribers
128 photos
10 files
101 links
Open Source, GNU/Linux, Debian/Ubuntu, Dotfiles, Software, Scripts, Notes, Terminal, Shell, Tools, Games, Fun, Misc, Music, Geek, Free Software Movement.

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

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

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

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

> Почта: krekhov.dev@gmail.com
> GitHub: https://github.com/krekhovx
> Мои пакеты в Debian: https://qa.debian.org/developer.php?login=krekhov.dev@gmail.com

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

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

Установка:
$ apt-get install -y cowsay
$ cowsay "Have a good day!"


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

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


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

#utils #fun
Атака на 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
Для поста https://t.me/krxnotes/426 прикладываю лог

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

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

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

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


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


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


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


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

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

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

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

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

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

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

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

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

#utils
Довольно часто приходится обращаться к Docker, чтобы не засорять свою основную Debian машину ненужными пакетами/зависимостями. Запустить Debian образ и развернуть его в интерактивном режиме можно так:
$ docker run -it debian


Можно подключиться к нужному контейнеру с другого tty/pts (чтобы было больше рабочих окон, терминалов). Узнать идентификатор контейнера и подключиться. На другом терминале выполнить:
$ docker ps
$ docker exec -it <ID> /bin/bash


Аналогичную работу можно произвести и с другими дистрибутивами, просто найти нужный образ и запустить его, поиск на Docker Hub осуществляется таким образом:
$ docker search <rocky-distr-for-example>


#debian
Случайно увидел. Dirk из USA украинизировался! Выглядит очень смешно ))

#fun
Это не реклама, просто делюсь. Приобрел портативную игровую приставку Anbernic RG35XX Plus на базе Linux с возможностью играть в ретро-игры, поддерживает игры с различных платформ типа PSP, PS1, Game Boy и т.д (платформ довольно много, а игр около 5000). Подарок прям радует, сборка отличная, картинка неплохая (IPS экран), но вот для меня экран маловат (разрешение 640x480) глаза устают после часа игры, благо консоль имеет порт Mini HDMI, приобрел кабель и подключаю консоль к монитору, проблема глаз решена. Я удивился как быстро и без проблем картинка подстроилась под большой монитор. Я хотел приобрести Steam Deck, но решил начать с чего-то более простого. Короче, старичкам советую!

#games #fun