Меня зовут Кирилл. Этот канал — моё хобби: я веду его для развлечения и саморазвития, здесь храню свои рабочие заметки и не только. Я 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