Барои муҳофизати сервери Ubuntu SSH-ро танҳо бо калидҳо иҷозат диҳед, firewall-ро бо манъи пешфарз иҷро кунед, навсозиҳои бехатариро худкор насб кунед, нокомиҳои такрории воридшавиро банд кунед, танҳо хидматҳои заруриро ошкор кунед ва нусхаҳои эҳтиётии санҷидашуда нигоҳ доред. Ин шаш қадам аксари мутлақи ҳамлаҳоеро, ки сервери оммавӣ мебинад, қатъ мекунанд.
Фармонҳо барои Ubuntu 24.04 LTS мебошанд ва дар Debian 12 бо фарқиятҳои хурд кор мекунанд. Онҳоро ҳамчун корбари дорои sudo иҷро кунед. Агар ҳанӯз асосҳоро иҷро накарда бошед, аз қадамҳои аввал дар VPS-и нав оғоз кунед.
1. Аввал навсозӣ кунед, баъд нав нигоҳ доред
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Санҷед, ки таймер фаъол аст:
systemctl list-timers | grep apt
Акнун навсозиҳои бехатарӣ ҳар рӯз насб мешаванд. Гоҳ-гоҳ бо cat /var/run/reboot-required санҷед, ки оё бозоғозӣ лозим аст.
2. SSH-ро маҳкам кунед
Танҳо калидҳо
Боварӣ ҳосил кунед, ки калиди шумо барои корбари sudo кор мекунад (ниг. калидҳои SSH). Баъд:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf >/dev/null <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
X11Forwarding no
AllowUsers deploy
EOF
sudo sshd -t && sudo systemctl reload ssh
AllowUsersSSH-ро ба ҳисобҳое, ки ном мебаред, маҳдуд мекунад.deploy-ро бо корбари худ иваз кунед.sshd -tфайлро месанҷад; агар чизе чоп накунад, синтаксис дуруст аст.
Пеш аз пӯшидани терминали ҷорӣ аз терминали нав санҷед.
Танзимоти воқеиро санҷед
Файлҳои drop-in бо тартиб хонда мешаванд ва аввалин қимат ғолиб меояд. Тасдиқ кунед, ки sshd воқеан чиро истифода мебарад:
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|allowusers'
Агар файли cloud-init мисли 50-cloud-init.conf PasswordAuthentication yes-ро муқаррар кунад, файли 10--и шумо аввал хонда мешавад ва ғолиб меояд.
3. Firewall бо манъи пешфарз тавассути UFW
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit OpenSSH # allow SSH, rate limit repeated attempts
sudo ufw allow 80,443/tcp # only if you run a web server
sudo ufw enable
sudo ufw status numbered
ufw limit суроғаеро, ки дар 30 сония шаш ё зиёда пайваст мекушояд, банд мекунад, ки ин сканерҳоро суст мекунад.
UFW IPv6-ро низ фаро мегирад, ба шарте ки дар /etc/default/ufw IPV6=yes муқаррар шуда бошад (дар Ubuntu пешфарз ҳамин аст).
SSH-ро ба суроғаҳои худатон маҳдуд кунед
Агар аз суроғаи собит пайваст шавед, SSH-ро танҳо аз он ҷо иҷозат диҳед:
sudo ufw delete limit OpenSSH
sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp # example range
Огоҳӣ дар бораи Docker
Docker қоидаҳои iptables-и худро менависад ва портҳои нашршудаи контейнерҳо UFW-ро давр мезананд. Контейнерҳоро ба localhost бандед (127.0.0.1:8080:80) ва дар пеш reverse proxy гузоред ё дар firewall-и абрӣ филтр кунед. Дастури Docker Compose ин усулро нишон медиҳад.
4. Дар пеш firewall-и абрӣ илова кунед
Firewall-и берун аз сервер ҳатто агар касе UFW-ро хомӯш кунад, кор мекунад ва як маҷмӯи қоидаҳо метавонад серверҳои зиёдро фаро гирад. Дар Wolkra firewall-ҳо stateful мебошанд, қоидаҳои воридотӣ ва содиротиро дастгирӣ мекунанд, ба серверҳо ё интихобгарони нишона татбиқ мешаванд ва ройгонанд. Маҷмӯи маъмули қоидаҳо:
| Самт | Протокол | Порт | Манбаъ |
|---|---|---|---|
| Воридотӣ | TCP | 22 | доираи офис ё VPN-и шумо |
| Воридотӣ | TCP | 80, 443 | ҳар |
| Воридотӣ | ICMP | – | ҳар |
Барои қадамҳо firewall-ҳо дар ҳуҷҷатҳо-ро бинед.
5. Ҳамлаҳои brute force-ро бо Fail2ban банд кунед
sudo apt install -y fail2ban python3-systemd
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
[sshd]
enabled = true
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
backend = systemd журналро бевосита мехонад, ки Ubuntu 24.04 SSH-ро маҳз ҳамин тавр сабт мекунад. Суроғаи худро ба ignoreip дар [DEFAULT] илова кунед, то ҳеҷ гоҳ худатонро банд накунед.
6. Он чиро, ки гӯш мекунад, кам кунед
Ҳар порти кушода чизест, ки бояд патч шавад. Онҳоро рӯйхат кунед:
sudo ss -tulpn
Барои ҳар сатр пурсед, ки оё он бояд аз интернет дастрас бошад. Пойгоҳҳои додаҳо, Redis ва панелҳои админ одатан на. Онҳоро ба 127.0.0.1 ё ба суроғаи шабакаи хусусӣ бандед ва бастаҳоеро, ки истифода намебаред, хориҷ кунед:
sudo apt purge --autoremove <package>
7. Ядро ва стеки шабакаро муҳофизат кунед
Танзимоти пешфарзи Ubuntu оқилонаанд. Чанд танзимоти иловагӣ дар сервери оммавӣ кӯмак мекунанд:
sudo tee /etc/sysctl.d/90-hardening.conf >/dev/null <<'EOF'
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
EOF
sudo sysctl --system
Агар сервер трафикро масирёбӣ кунад, масалан ҳамчун gateway-и VPN, танзимоти redirect-ро гузаронед.
8. sudo-ро бодиққат истифода баред
- sudo-ро танҳо ба касоне диҳед, ки ба он ниёз доранд:
getent group sudoонҳоро рӯйхат мекунад. - Ҳеҷ гоҳ
NOPASSWD: ALL-ро ба ҳисобҳои интерактивӣ нагузоред. sudo-и бепаролро барои автоматикунонӣ ба фармонҳои мушаххас маҳдуд кунед. - Ҳатто агар SSH калидҳоро истифода барад, ба корбари sudo-и худ парол гузоред:
sudo passwd deploy.
9. Логҳо ва воридшавиҳоро назорат кунед
last -n 20 # recent logins
sudo journalctl -u ssh --since today
sudo journalctl -p err -b # errors since boot
Барои якпорчагии файлҳо ва аудити зуд Lynis оғози хуб аст:
sudo apt install -y lynis
sudo lynis audit system
Он индекси мустаҳкамкунӣ ва рӯйхати пешниҳодҳоро чоп мекунад. Ба онҳо ҳамчун ғояҳо муносибат кунед, на фармонҳо.
Консоли Wolkra барои ҳар сервер графикҳои CPU, диск ва шабакаро нишон медиҳад (мониторинг). Авҷи ногаҳонии трафик ё CPU аксар вақт аввалин нишонаи хидмати рахнашуда аст.
10. На танҳо серверро, балки ҳисобро низ муҳофизат кунед
Агар касе ба ҳисоби абрии шумо ворид шуда тавонад, мустаҳкамкунии сервер беҳуда аст. Дар консоли Wolkra:
- тасдиқи дуомила (TOTP)-ро фаъол кунед;
- сеансҳои фаъолро баррасӣ кунед ва аз сеансҳои кӯҳна бароед;
- ба аъзои даста пасттарин нақшеро, ки кор мекунад, диҳед;
- дар ҳар ҷо, ки мумкин бошад, токенҳои API-и танҳо барои хондан, бо маҳдудияти IP ва мӯҳлатдорро истифода баред.
Ниг. бехатарии ҳисоб ва токенҳои API.
11. Нусхаи эҳтиётӣ гиред ва барқароркуниро санҷед
Бехатарӣ барқароркуниро низ дар бар мегирад. Нусхаҳои эҳтиётии ҳаррӯза ё snapshot-ҳоро фаъол кунед ва ҳадди ақал як нусхаро берун аз сервер нигоҳ доред. Баъд як бор ба сервери нав барқарор кунед, то исбот шавад, ки кор мекунад. Дастури стратегияи нусхаи эҳтиётӣ нақшаи пурра дорад.
Рӯйхати санҷишӣ
- Навсозиҳои худкори бехатарӣ фаъоланд
- Танҳо калидҳои SSH, воридшавии root хомӯш,
AllowUsersмуқаррар шудааст - UFW бо манъи пешфарз, танҳо портҳои зарурӣ кушодаанд
- Firewall-и абрӣ дар пеш, SSH ба доираҳои маълум маҳдуд аст
- Fail2ban кор мекунад
- Дар
ss -tulpnчизи ғайричашмдошт нест - Мустаҳкамкунии sysctl татбиқ шудааст
- sudo маҳдуд аст, 2FA дар ҳисоби абрӣ фаъол аст
- Нусхаҳои эҳтиётӣ фаъоланд ва барқароркунӣ санҷида шудааст
Агар ҳангоми сахттар кардани қоидаҳо чизе нодуруст шавад, консоли браузерӣ ва ҳолати наҷот (rescue mode) дар саҳифаи сервер шуморо бе SSH ба сервер бармегардонанд.
Саволҳои маъмул
Муҳимтарин қадам барои муҳофизати сервери Ubuntu кадом аст?
Калидҳои SSH-ро истифода баред ва воридшавӣ бо паролро хомӯш кунед. Аксари ҳамлаҳо ба серверҳои нав тахмини худкори паролҳо мебошанд ва воридшавӣ танҳо бо калид онҳоро қатъ мекунад.
Агар паролҳо хомӯш бошанд, оё Fail2ban лозим аст?
Он камтар муҳим аст, вале ҳамчунон садои логҳоро кам мекунад ва сканерҳоро суст мекунад. Он инчунин барои воридшавиҳои веб ва хидматҳои дигаре, ки парол истифода мебаранд, муфид аст.
Оё порти SSH-ро иваз кунам?
Ин садои логҳоро кам мекунад, вале бехатарии воқеӣ нест. Маҳдуд кардани SSH ба суроғаҳои маълуми манбаъ бо firewall хеле бештар фоида дорад.
Оё UFW кифоя аст ё firewall-и абрӣ ҳам лозим аст?
UFW серверро аз дохил муҳофизат мекунад. Firewall-и абрӣ трафикро пеш аз расиданаш филтр мекунад ва ҳатто агар касе қоидаҳои худи серверро вайрон кунад, кор мекунад. Истифодаи ҳардуяш интихоби хуби пешфарз аст.
Оё ин қадамҳо дар Debian 12 кор мекунанд?
Қариб ҳамааш. Debian ҳамон бастаҳоро истифода мебарад; агар sudo ва ufw набошанд, аввал онҳоро насб кунед.