LinuxSkill - Сводки с прода и Шпаргалки
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4
Ko'proq ko'rsatish📈 Telegram kanali LinuxSkill - Сводки с прода и Шпаргалки analitikasi
LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 904 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 282-o'rinni va Rossiya mintaqasida 59 555-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 10 904 obunachiga ega bo‘ldi.
07 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -45 ga, so‘nggi 24 soatda esa -2 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 14.72% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.79% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 606 marta ko‘riladi; birinchi sutkada odatda 632 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 5 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent docker, linux, bash, devops, скрипт kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам.
Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале.
📩 По всем вопросам: @chorapov
Зеркало в MAX: https://max.ru/LinuxSkill
РКН https://vk.cc/cMUwm4”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 08 Iyul, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
# 1. Тотальный сброс привилегий ядра (Capabilities).
# Сбрасываем все и выдаём только нужную для bind на порты <1024.
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE -d nginx
# 2. Блокировка эскалации через SUID/SGID бинарники (в Dockerfile).
# ВАЖНО: синтаксис '-perm /6000', а НЕ '+6000' (последний давно не работает в GNU find).
RUN find / -xdev -perm /6000 -type f -exec chmod a-s {} \; || true
# 3. Использование gosu вместо sudo в ENTRYPOINT.
# sudo плодит процессы и криво обрабатывает сигналы PID 1. gosu самоустраняется (exec).
exec gosu appuser "$@"
Изоляция файловой системы и ядра
# 4. Корневая ФС только для чтения; для записи монтируем именованный том.
# Атакующий не сможет скачать малварь или переписать скрипты в контейнере.
docker run --read-only --tmpfs /tmp -v /host/data:/app/data:rw -d myapp
# 5. Изоляция тома через SELinux (метка :Z).
# :Z = приватная метка ТОЛЬКО для этого контейнера (:z, строчная — общая для нескольких).
docker run -v /host/secret:/data:Z -d db_service
# 6. Кастомный профиль AppArmor (синтаксис через '=', а не ':').
# Профиль ДО этого нужно загрузить: sudo apparmor_parser -r -W /etc/apparmor.d/custom-nginx
docker run --security-opt apparmor=custom-nginx-profile -d nginx
Защита от отказа в обслуживании (DoS)
# 7. Лимит файловых дескрипторов (по дефолту на systemd-хостах ~1048576).
# Режет атаки, открывающие тысячи соединений/файлов.
docker run --ulimit nofile=1024:2048 -d backend_app
# 8. Жёсткий лимит RAM + запрет свопа.
# memory-swap = memory (256m=256m) означает СВОП ОТКЛЮЧЁН: утечка не выжрет своп хоста.
docker run -m 256m --memory-swap 256m -d heavy_service
Сеть и аутентичность образов
# 9. Отключение межконтейнерного обмена (ICC) — через daemon.json, НЕ /etc/default/docker.
# Файл /etc/docker/daemon.json:
# { "icc": false, "iptables": true }
# Затем: sudo systemctl restart docker
# (старый DOCKER_OPTS в /etc/default/docker на systemd-хостах игнорируется)
# 10. Принудительная проверка подписей образов (Content Trust).
# Блокирует pull/run образов без валидной криптоподписи.
export DOCKER_CONTENT_TRUST=1
docker pull myorg/backend:latest
Интегрируй эти параметры в свои Compose-манифесты и пайплайны. Безопасность начинается с принципа наименьших привилегий.
❗️❗️❗️ Нравится формат? Ставь 👍
👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Docker #Security #DevOps #SysAdmin# /etc/nginx/sites-available/backend (проверено парсером nginx)
upstream backend {
server 100.64.0.5:8080; # IP Proxmox-контейнера внутри сети Netbird
keepalive 32;
}
server {
listen 80;
server_name myapp.ru;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# поддержка WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
}
}
Активация и проверка конфига перед перезапуском:
sudo ln -s /etc/nginx/sites-available/backend /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx # nginx -t = обязательная проверка синтаксиса
Вариант 2: Внешняя VPS + Safeline WAF
Перед приложением ставится комбайн Safeline: фильтрует трафик, режет ботов, спасает от SQLi, XSS, Command injection, Path traversal и RCE. Работает как reverse-proxy на движке Tengine с семантическим анализом.
Быстрый старт Safeline одной командой (актуальный официальный установщик):
# manager.sh сам поставит Docker, скачает образы и поднимет весь стек
bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
Ручной деплой (официальный способ — compose скачивается, а не пишется руками):
Стек состоит из 6 контейнеров (postgres, fvm, detector, mgt, mario, tengine), поэтому compose берём готовый и настраиваем через .env:
# 1. Директория (нужно ≥5 ГБ)
sudo mkdir -p /data/safeline && cd /data/safeline
# 2. Официальный docker-compose (руками его собрать нельзя — сервисов много и они связаны)
sudo wget https://waf.chaitin.com/release/latest/compose.yaml
# 3. Файл окружения (пароль обязателен, иначе postgres не стартует)
sudo tee .env > /dev/null << 'EOF'
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=CHANGE_ME_strong_password
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
ARCH_SUFFIX=
RELEASE=
REGION=-g
EOF
# 4. Запуск
sudo docker compose up -d
# 5. Получить логин/пароль админа
sudo docker exec safeline-mgt resetadmin
Панель управления: https://<IP-твоей-VPS>:9443
⚠️ На ARM-серверах меняй ARCH_SUFFIX=-arm; Personal Edition на ARM не работает — нужна Pro-лицензия.
Внедряй эти подходы, чтобы не только анализировать трафик, но и на 100% скрывать IP своих приложений.
❗️❗️❗️ Нравится формат? Ставь 👍
👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Security #WAF #Docker #DevOps
# 1. Создать директорию и сразу в нее перейти
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 2. Подняться на N уровней вверх. Если аргумент не передан, поднимаемся на 1 (защита от syntax error)
up() {
local d=""
local limit="${1:-1}"
for ((i=1; i<=limit; i++)); do d+="../"; done
cd "$d"
}
# 3. Быстрый поиск файла по имени в текущей директории
ff() {
find . -type f -iname "*$1*"
}
# 4. Быстрый поиск директории по имени
fd() {
find . -type d -iname "*$1*"
}
# 5. Узнать размер директории. Если путь не передан, считаем текущую (.)
dirsize() {
du -sh "${1:-.}"
}
Работа с процессами и историей
# 6. Найти процесс, отсекая из вывода сам grep
psg() {
ps aux | grep -i "$1" | grep -v grep
}
# 7. Посмотреть N последних введенных команд (по умолчанию 10)
h() {
history | tail -n "${1:-10}"
}
# 8. Быстрый поиск по истории команд
hg() {
history | grep "$1"
}
Сеть и порты
# 9. Поднять HTTP-сервер в текущей папке (по умолчанию порт 8000)
serve() {
python3 -m http.server "${1:-8000}"
}
# 10. Узнать свой внешний IP-адрес
myip() {
curl -s ifconfig.me
}
# 11. Узнать IP-адрес нужного домена
ipinfo() {
dig +short "$1"
}
# 12. Показать все открытые слушающие порты
ports() {
ss -tuln
}
Система и безопасность
# 13. Полная очистка терминала вместе с буфером прокрутки
cls() {
clear && printf '\e[3J'
}
# 14. Универсальная распаковка архива с проверкой существования файла
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2|*.tbz2) tar xjf "$1" ;;
*.tar.gz|*.tgz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Неизвестный архив" ;;
esac
else
echo "Файл '$1' не найден"
fi
}
# 15. Безопасный rm: защита от пустого вызова и регистронезависимое подтверждение (Y/y)
rm() {
if [ -z "$1" ]; then
command rm
return
fi
ls -FCsd -- "$@"
read -p 'Удалить безвозвратно? [y/N] ' ans
if [[ "$ans" =~ ^[Yy]$ ]]; then
command rm -rf -- "$@"
fi
}
Все конструкции используют конструкцию ${1:-значение}, которая спасает bash от падения при пустых переменных. Добавь нужные блоки в свой файл конфигурации и выполни команду source ~/.bashrc для применения изменений.
❗️❗️❗️ Нравится формат? Ставь 👍
👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Bash #CLI #DevOps #Bashrcsystemctl enable nftables, чтобы защита пережила перезагрузку.
❗️❗️❗️ Нравится формат? Ставь 👍
👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Security #nftables #Firewall #DevOps