Меня зовут Кирилл. Этот канал — моё хобби: я веду его для развлечения и саморазвития, здесь храню свои рабочие заметки и не только. Я 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
Пишу на 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🔥9❤8✍1🆒1
Локализация
Набор переменных, который определяет язык приложений, консоли и т.д.
Например, разбор en_US.UTF8
en - язык.
US - региональная настройка.
UTF8 - кодировка.
Язык - тут думаю понятно =)
Региональная настройка - это определенные параметры, такие как формат даты и времени, валюта,
числовой формат и другие локальные настройки, которые могут отличаться от других стран.
Кодировка - определяет соответствие между символами и числовыми значениями, которые используются
компьютером для их хранения и обработки.
Получить все доступные локализации:
Чтобы изменить локализацию можно задать:
Если при выводе выдаются ошибки типа: Cannot set LC_CTYPE to default locale: No such file or directory
То скорее всего задается локализация, которая не была сгенерирована. Для этого нужно подправить
Затем выполнить:
Появится новая локализация:
Можно запустить приложение с другим языком, например:
LANG - Локализация, установленная в этой переменной используется в качестве значения для всех остальных LC_* переменных.
LANGUAGE - Запасные локализации (нужно для вывода сообщений на разных языках).
#shell #utils
Набор переменных, который определяет язык приложений, консоли и т.д.
Например, разбор 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, называются они
Можно позабавиться:
Я например добавил
Забавляемся дальше:
За курсором будет бегать прикольный котик!
#utils #fun
Я нашел два прикольных пакета в 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, я им доверяю. Я слежу за безопасностью ПО на сервере, анализирую логи, принимаю определенные меры безопасности. Недавно я посмотрел вывод команды:
и увидел там много веселого! (смотреть скриншот в следующем посте), эти строки показывают сообщения об ошибках, связанных с попытками подключения по SSH к моему серверу (они повторяются много раз). Я думаю будет полезно разобрать данную ситуацию, ибо в последнее время активно атакуются Российские IT компании со стороны США, Украины. Не буду томить, здесь простейший перебор на дурачка, перебираются часто встречающиеся пользователи, пароли, чтобы получить доступ к системе, попытка взломать сервер, как я это понял ? Журнал
Объяснение ошибок:
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 адресов, совершающих подозрительные попытки подключения.
Действия:
При конфигурации
Установка fail2ban сервиса:
Добавить конфигурацию для sshd в
Перезапустить:
Можно понаблюдать процесс блокировки левых IP адресов, которые обращаются к серверу по SSH (блокировка осуществляется после 3 неудачных попыток входа):
Если на вашем сервере работают другие службы, рассмотрите возможность настройки fail2ban для их защиты.
#security
Я арендую сервер для своих рабочих нужд у компании 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
👍3❤1🔥1
Мне все понятно, скрипт-киддикам дали поиграться: 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
Заключительный пост к прошлым двум постам:
https://news.1rj.ru/str/krxnotes/426
https://news.1rj.ru/str/krxnotes/428
#security
Что такое трассировка скрипта?
Размещение информативных сообщений в разных точках сценария для отслеживания протекания выполнения скрипта называется трассировкой. Можно прописать в необходимых местах команды
или:
или без изменения скрипта:
Если нужно отключить данную опцию, можно прописать
#shell
Размещение информативных сообщений в разных точках сценария для отслеживания протекания выполнения скрипта называется трассировкой. Можно прописать в необходимых местах команды
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
Философия GNU (GNU's Not Unix) заключается в приверженности свободному и открытому программному обеспечению. Основные принципы GNU включают в себя:
Свобода использования: Пользователи имеют право использовать программное обеспечение в любых целях без каких-либо ограничений.
Свобода изучения: Пользователи имеют право изучать, адаптировать и модифицировать программное обеспечение по своему усмотрению.
Свобода распространения: Пользователи имеют право распространять копии программного обеспечения и делиться им с другими.
Свобода улучшения: Пользователи имеют право улучшать программное обеспечение и делиться своими улучшениями с сообществом.
GNU философия призывает к сотрудничеству, обмену знаниями и созданию программного обеспечения, которое будет доступно для всех без ограничений и безопасно для использования.
#misc #opensource
👍9
👍2
Что такое виртуальные пакеты?
Виртуальный пакет не существует сам по себе, он служит для обозначения того, что разные реальные пакеты могут предоставлять одинаковую функциональность. Другими словами: виртуальные пакеты представляют собой абстракции, которые не содержат собственных файлов, а служат для обозначения функциональности, предоставляемой одним или несколькими реальными пакетами.
Например, существует виртуальный пакет
Это позволяет системам управления пакетами (таким как
Когда пользователь пытается установить виртуальный пакет
Еще пример, существует виртуальный пакет
Для удобного просмотра информации о пакетах я использую
#debian
Виртуальный пакет не существует сам по себе, он служит для обозначения того, что разные реальные пакеты могут предоставлять одинаковую функциональность. Другими словами: виртуальные пакеты представляют собой абстракции, которые не содержат собственных файлов, а служат для обозначения функциональности, предоставляемой одним или несколькими реальными пакетами.
Например, существует виртуальный пакет
mail-transport-agent. Он обозначает любую программу, которая может работать как почтовый транспортный агент (MTA). Реальные пакеты, такие как postfix, exim4, sendmail, msmtp и т.д, могут удовлетворять эту роль (смотреть скриншот).Это позволяет системам управления пакетами (таким как
apt) гибко управлять зависимостями, предоставляя пользователю выбор из множества возможных реализаций.Когда пользователь пытается установить виртуальный пакет
mail-transport-agent, пакетный менеджер сообщает, что есть несколько реальных пакетов, которые предоставляют эту функциональность. Однако пакетный менеджер не выбирает автоматически один из них, так как они являются альтернативами, и пользователь должен сам выбрать, какой именно реальный пакет установить.Еще пример, существует виртуальный пакет
mcedit, при его установке скачается реальный пакет mc и его компоненты (mcedit связь с mc), грубо говоря это alias на необходимые пакеты. Еще пример, пакет awk предоставляет на выбор три пакета: original-awk, mawk, gawk.Для удобного просмотра информации о пакетах я использую
aptitude, очень полезный инструмент для работы мейнтейнера.#debian
👍3