Исходный код вики Proxy
Редактировал(а) Anton Krivchenkov 31.03.2026 00:03
Скрыть последних авторов
| author | version | line-number | content |
|---|---|---|---|
![]() |
8.1 | 1 | {{velocity}} |
| 2 | {{html clean="false"}} | ||
| 3 | <style> | ||
| 4 | /* Стили для кнопки внутри стандартного блока .code */ | ||
| 5 | .code { | ||
| 6 | position: relative !important; /* Позволяет кнопке «прилипнуть» к углу */ | ||
| 7 | } | ||
| 8 | |||
| 9 | .copy-btn-standard { | ||
| 10 | position: absolute; | ||
| 11 | top: 5px; | ||
| 12 | right: 5px; | ||
| 13 | z-index: 100; | ||
| 14 | padding: 3px 8px; | ||
| 15 | font-size: 11px; | ||
| 16 | background: rgba(255, 255, 255, 0.1); | ||
| 17 | color: #fff; | ||
| 18 | border: 1px solid rgba(255, 255, 255, 0.2); | ||
| 19 | border-radius: 3px; | ||
| 20 | cursor: pointer; | ||
| 21 | transition: all 0.2s; | ||
| 22 | } | ||
| 23 | |||
| 24 | .copy-btn-standard:hover { | ||
| 25 | background: rgba(255, 255, 255, 0.2); | ||
| 26 | border-color: #fff; | ||
| 27 | } | ||
| 28 | </style> | ||
| 29 | |||
| 30 | <script> | ||
| 31 | (function() { | ||
| 32 | function addCopyButtons() { | ||
| 33 | // Находим все стандартные блоки макроса {{code}} | ||
| 34 | const blocks = document.querySelectorAll('.code'); | ||
| 35 | |||
| 36 | blocks.forEach(block => { | ||
| 37 | // Проверяем, не добавили ли мы кнопку уже | ||
| 38 | if (block.querySelector('.copy-btn-standard')) return; | ||
| 39 | |||
| 40 | const btn = document.createElement('button'); | ||
| 41 | btn.className = 'copy-btn-standard'; | ||
| 42 | btn.innerText = 'Копировать'; | ||
| 43 | |||
| 44 | btn.onclick = function(e) { | ||
| 45 | e.preventDefault(); | ||
| 46 | // Берем текст блока, исключая текст самой кнопки | ||
| 47 | const textToCopy = block.innerText.replace('Копировать', '').trim(); | ||
| 48 | |||
| 49 | navigator.clipboard.writeText(textToCopy).then(() => { | ||
| 50 | const originalText = btn.innerText; | ||
| 51 | btn.innerText = '✅'; | ||
| 52 | setTimeout(() => { btn.innerText = originalText; }, 1500); | ||
| 53 | }); | ||
| 54 | }; | ||
| 55 | |||
| 56 | block.appendChild(btn); | ||
| 57 | }); | ||
| 58 | } | ||
| 59 | |||
| 60 | // Запуск после загрузки страницы | ||
| 61 | document.addEventListener('DOMContentLoaded', addCopyButtons); | ||
| 62 | // На случай, если страница загружается асинхронно | ||
| 63 | setTimeout(addCopyButtons, 1000); | ||
| 64 | })(); | ||
| 65 | </script> | ||
| 66 | {{/html}} | ||
| 67 | {{/velocity}} | ||
| 68 | |||
![]() |
2.5 | 69 | # Отключение ICMP |
| 70 | |||
![]() |
1.2 | 71 | nano disable_ping.sh |
| 72 | |||
![]() |
2.7 | 73 | -- НЕ ввезде прокатывает )) Зависит от Хостера |
| 74 | |||
![]() |
1.2 | 75 | #!/usr/bin/env bash |
| 76 | set -e | ||
| 77 | |||
| 78 | # Требуются root-права | ||
| 79 | |||
| 80 | # Запретить входящие ICMP echo-request (ping) IPv4 | ||
| 81 | iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # [web:6][web:9] | ||
| 82 | |||
| 83 | # Если используешь IPv6, можно дополнительно глушануть и его: | ||
| 84 | ip6tables -A INPUT -p ipv6-icmp --icmpv6-type echo-request -j DROP # [web:9] | ||
| 85 | |||
| 86 | # Чтобы убедиться: | ||
| 87 | echo "Текущие правила ICMP:" | ||
| 88 | iptables -L INPUT -n | grep icmp || true | ||
| 89 | ip6tables -L INPUT -n | grep icmp || true | ||
| 90 | |||
![]() |
2.2 | 91 | применяем |
![]() |
1.2 | 92 | |
| 93 | chmod +x disable_ping.sh && ./disable_ping.sh | ||
| 94 | |||
![]() |
2.5 | 95 | # Утилиты |
![]() |
2.3 | 96 | |
| 97 | sudo apt update && sudo apt upgrade -y && \ | ||
| 98 | sudo apt install -y \ | ||
| 99 | gpg btop ncdu nload iperf3 mc htop net-tools curl wget tree \ | ||
| 100 | git vim tmux mtr traceroute dnsutils iproute2 \ | ||
| 101 | jq lsof rsync unzip zip \ | ||
| 102 | netcat-openbsd socat \ | ||
| 103 | bash-completion \ | ||
| 104 | unattended-upgrades ufw fail2ban && \ | ||
| 105 | sudo dpkg-reconfigure -plow unattended-upgrades && \ | ||
| 106 | sudo apt clean && sudo apt autoremove -y | ||
| 107 | |||
| 108 | Кратко, зачем что: | ||
| 109 | |||
| 110 | * git – конфиги, dotfiles, скрипты.xda-developers+1 | ||
| 111 | * vim – базовый редактор всегда под рукой.tecmint+1 | ||
| 112 | * tmux – мультиплексор, чтобы сессии не умирали по SSH.admin-companion+1 | ||
| 113 | * mtr, traceroute – диагностика сети, трассировка + статистика.linuxblog+1 | ||
| 114 | * dnsutils – dig, nslookup для проверки DNS.[linuxblog](https://linuxblog.io/linux-sysadmin-tools/) | ||
| 115 | * iproute2 – современный стек ip, ss и т.п. (обычно уже стоит, но можно дотащить).manpages.ubuntu+1 | ||
| 116 | * jq – парсинг JSON в CLI (API, kubectl, docker и т.д.).tecmint+1 | ||
| 117 | * lsof – кто держит порт/файл, очень выручает.dedirock+1 | ||
| 118 | * rsync – бэкапы, заливка на другие сервера.[linuxblog](https://linuxblog.io/linux-sysadmin-tools/) | ||
| 119 | * unzip/zip – работа с zip‑архивами.[linuxblog](https://linuxblog.io/linux-sysadmin-tools/) | ||
| 120 | * netcat-openbsd, socat – проверки портов, простые TCP/UDP туннели.dedirock+1 | ||
| 121 | * bash-completion – автодополнение в bash (если на нём что‑то будешь делать).[linuxblog](https://linuxblog.io/linux-sysadmin-tools/) | ||
| 122 | |||
| 123 | -- | ||
| 124 | |||
![]() |
4.1 | 125 | базовая настройка: |
![]() |
2.3 | 126 | |
| 127 | # UFW | ||
| 128 | sudo ufw default deny incoming | ||
| 129 | sudo ufw default allow outgoing | ||
| 130 | sudo ufw allow OpenSSH | ||
| 131 | sudo ufw enable | ||
| 132 | |||
![]() |
6.1 | 133 | ### fail2ban |
![]() |
5.1 | 134 | |
![]() |
6.1 | 135 | sudo apt install fail2ban -y |
| 136 | sudo bash -c 'cat > /etc/fail2ban/jail.local << "JAIL" | ||
| 137 | [DEFAULT] | ||
| 138 | bantime = 24h | ||
| 139 | findtime = 10m | ||
| 140 | maxretry = 3 | ||
| 141 | |||
| 142 | bantime.increment = true | ||
| 143 | bantime.factor = 2 | ||
| 144 | bantime.maxtime = 4w | ||
| 145 | |||
| 146 | banaction = iptables-multiport | ||
| 147 | banaction_allports = iptables-allports | ||
| 148 | |||
| 149 | ignoreip = 127.0.0.1/8 ::1 | ||
| 150 | |||
| 151 | [sshd] | ||
| 152 | enabled = true | ||
| 153 | logpath = %(sshd_log)s | ||
| 154 | backend = %(sshd_backend)s | ||
| 155 | maxretry = 3 | ||
| 156 | bantime = 48h | ||
| 157 | findtime = 15m | ||
| 158 | mode = aggressive | ||
| 159 | |||
| 160 | [sshd-ddos] | ||
| 161 | enabled = true | ||
| 162 | logpath = %(sshd_log)s | ||
| 163 | backend = %(sshd_backend)s | ||
| 164 | maxretry = 5 | ||
| 165 | bantime = 24h | ||
| 166 | findtime = 30s | ||
| 167 | |||
| 168 | [recidive] | ||
| 169 | enabled = true | ||
| 170 | logpath = /var/log/fail2ban.log | ||
| 171 | maxretry = 3 | ||
| 172 | bantime = 4w | ||
| 173 | findtime = 7d | ||
| 174 | banaction = iptables-allports | ||
| 175 | JAIL | ||
| 176 | apt-get update | ||
| 177 | apt-get install -y fail2ban | ||
| 178 | systemctl enable --now fail2ban | ||
| 179 | systemctl restart fail2ban | ||
| 180 | echo "fail2ban настроен и запущен" | ||
| 181 | ' | ||
| 182 | systemctl enable fail2ban | ||
| 183 | systemctl restart fail2ban | ||
![]() |
5.1 | 184 | |
![]() |
2.5 | 185 | # ZSH |
![]() |
2.4 | 186 | |
| 187 | sudo apt update && sudo apt install -y zsh git fonts-powerline curl && \ | ||
| 188 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended && \ | ||
| 189 | sed -i 's/^ZSH_THEME=.*/ZSH_THEME="agnoster"/' ~/.zshrc && \ | ||
| 190 | grep -q "^ZSH_DISABLE_COMPFIX=" ~/.zshrc && sed -i 's/^ZSH_DISABLE_COMPFIX=.*/ZSH_DISABLE_COMPFIX="true"/' ~/.zshrc || echo 'ZSH_DISABLE_COMPFIX="true"' >> ~/.zshrc && \ | ||
| 191 | sed -i 's/^plugins=(.*/plugins=(git sudo zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc && \ | ||
| 192 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ | ||
| 193 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \ | ||
| 194 | printf "\nalias ll='ls -la'\nalias gs='git status'\nalias d='docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\"'\nalias dcu='docker compose up -d'\nalias dcd='docker compose down'\nalias dl='docker logs'\nalias n='nano'\nalias lzd='lazydocker'\nalias dr='dry'\nalias dcuf='docker compose up -d --force-recreate'\nalias dv='docker ps -a --format \"table {{.Names}}\t{{.Mounts}}\"'\nalias dvc='docker ps -a --format \"{{.Mounts}}\" | tr \",\" \"\n\" | grep -v \"^$\" | sort | uniq'\nalias dvo='comm -23 <(docker volume ls -q | sort) <(docker ps -a --format \"{{.Mounts}}\" | tr \",\" \"\n\" | grep -v \"^$\" | sort | uniq)'\nalias dsp='docker system prune -a --volumes'\nalias ds='docker stats --no-stream'\nalias dcdub='docker compose down && docker compose up --build'\nalias cr_gitlab_repo='/prod/create_repo_and_push.sh'\n" >> ~/.zshrc && \ | ||
| 195 | chsh -s "$(which zsh)" | ||
| 196 | |||
| 197 | дальше | ||
| 198 | |||
| 199 | exec zsh | ||
| 200 | |||
| 201 | что делает: | ||
| 202 | |||
| 203 | * ставит zsh, git и powerline‑шрифты | ||
| 204 | * ставит Oh My Zsh | ||
| 205 | * включает нужную тему и плагины | ||
| 206 | * добавляет твои алиасы | ||
| 207 | * включает ZSH_DISABLE_COMPFIX="true" | ||
| 208 | * делает zsh оболочкой по умолчанию | ||
| 209 | |||
| 210 | -- | ||
| 211 | |||
![]() |
2.5 | 212 | # Докер |
![]() |
2.2 | 213 | |
| 214 | sudo curl -fsSL https://get.docker.com | sh && | ||
| 215 | LATEST=$(curl -sL https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | cut -d'"' -f4) | ||
| 216 | DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} | ||
| 217 | mkdir -p $DOCKER_CONFIG/cli-plugins | ||
| 218 | curl -sSL https://github.com/docker/compose/releases/download/$LATEST/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose | ||
| 219 | chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose | ||
| 220 | docker compose version | ||
| 221 | |||
![]() |
4.1 | 222 | ## Управление докером |
![]() |
2.3 | 223 | |
![]() |
4.1 | 224 | ### ctop |
![]() |
2.3 | 225 | |
| 226 | sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop | ||
| 227 | sudo chmod +x /usr/local/bin/ctop | ||
| 228 | |||
![]() |
4.1 | 229 | ### lzd |
![]() |
2.3 | 230 | |
| 231 | DIR=/usr/local/bin \ | ||
![]() |
7.1 | 232 | curl -fsSL https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | sudo DIR=/usr/local/bin bash && echo "alias lzd='lazydocker'" >> "$HOME/.zshrc" |
