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