Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

Мой чеклист для новых серверов

Билинги, adult, веб дизайн и все что связано с созданием сайтов
httpstop
Контактная информация:
Сообщения: 2
Зарегистрирован: Сентябрь 2025

Мой чеклист для новых серверов

Скрипт предназначен для ОС Ubuntu.
Нынешняя версия скрипта проверена только на ОС Ubuntu 24.04 LTS.
Вероятно, скрипт будет работать и на более ранней версии Ubuntu 22.04 LTS.

Скрипт был написан для использования одним человеком и с самого начала не задумывался к публикации "для всех", поэтому код скрипта не содержит тестов, глубоких разветвлений if-else на все случаи жизни, поддержки множества операционных систем и прочего. Написать текст этого поста было и то сложнее. :-)

Для чего этот скрипт подходит?

Скрипт подходит для быстрой ручной проверки выданного вам сервера на соответствие вашим требованиям. Лично мне это необходимо для защиты от хостеров-рукожопов, которые могут выдать неправильный конфиг сервера.

Для чего этот скрипт не подходит?

Скрипт не выдаёт оценок. Скрипт не подходит настройки чего бы то ни было, поиска бэкдоров/руткитов/буткитов, противодействия целевым атакам правительственных хакеров и тому подобного.

Примечание:

В скрипте не используется флаг -e для интерпретатора bash, поэтому скрипт не остановится при возникновении ошибки (которая может возникнуть штатно). Все ошибки пользователь должен разрешать самостоятельно: продолжить/прервать выполнение скрипта.

Любой этап проверки можно пропустить, работа скрипта может быть прервана на любом этапе. Скрипт можно запускать многократно.

Чеклист, который _выполняет пользователь_ при помощи скрипта:
✓ Проверка информации по neofetch
✓ Проверка предположительной даты установки ОС
✓ Проверка поддержки виртуализации
✓ Проверка объема оперативной памяти
✓ Проверка списка блочных устройств
✓ Проверка дисков (если на виртуальной машине данная команда выдаст ошибку - это норма)
✓ Проверка информации о внешнем IP адресе через сервис ipinfo.io (в качестве альтернативы вы можете использовать wtfismyip.com)
✓ Проверка доступности произвольного порта (по умолчанию 31337)
✓ Проверка списка открытых в настоящий момент портов
✓ Проверка списка пользователей в /etc/passwd
✓ Тестовая перезагрузка системы

Как использовать:
0. Прочитать глазами код, который вы получили от меня (анонимуса из интернетов) и планируете запускать на своём сервере
1. Сохранить код в файл на сервере, например, ~/checklist.sh
2. Установить права на исполнение файла:

Код: Выделить всё

~ $ chmod +x checklist.sh
3. Запустить скрипт

Код: Выделить всё

~ $ ./checklist.sh
При повторном запуске пропустить шаги 1-2.

Если вы сохранили скрипт в /tmp и выполнили перезагрузку сервера, скрипт будет удален системой во время загрузки, как и все остальные временные файлы.

Код скрипта:

Код: Выделить всё

#!/usr/bin/env bash

fancy_echo() {
  local fmt="$1"; shift

  # shellcheck disable=SC2059
  printf "\n$fmt\n"
}

start_item() {
  local title="$1"; shift

  fancy_echo "● $title\n"
}

next_item() {
  fancy_echo "Press 'c' to continue or CTRL-C to interrupt"
  while true; do
    read -s -n 1 -r answer
    if [[ "$answer" == "C" || "$answer" == "c" ]]; then
      break
    fi
  done
}

finish() {
  fancy_echo "This was the last test."
  fancy_echo "Done!\n"
}

show_banner() {
  fancy_echo "Ubuntu Server Checklist (c) special for DamageLiB"
  next_item
}

install_deps() {
  fancy_echo "Installing dependencies ..."
  sudo apt update
  sudo apt install -y curl neofetch python3 smartmontools
}

check_os_boot() {
  start_item "Check operating system boot"

  echo -n "Reboot server? [yes/no]: "
  read -r answer
  case "$answer" in
    YES | Yes | yes)
      sudo shutdown -r now
      ;;
    NO | No | no)
      fancy_echo "Skip reboot"
      ;;
    *)
      fancy_echo "Invalid answer '$answer'"
      check_os_boot
      ;;
  esac
}

check_neofetch_info() {
  start_item "Check neofetch info"

  neofetch

  next_item
}

check_os_install_date() {
  start_item "Check operating system install date"

  echo "/var/log/installer created at:"
  stat --format=%w /var/log/installer

  next_item
}

check_listening_addresses() {
  start_item "Check listening addresses"

  sudo ss -tunlp

  next_item
}

check_virtualization_support() {
  start_item "Check virtualization support"

  if grep -Eqs "svm|vmx" /proc/cpuinfo ; then
    echo "Virtualization supported!"
  else
    echo "Virtualization is NOT supported!"
  fi

  next_item
}

check_memory() {
  start_item "Check memory"

  free -m

  next_item
}

check_block_devices() {
  start_item "Check block devices"

  lsblk

  next_item
}

check_disks() {
  start_item "Check disks"

  lsblk -p | grep disk | awk '{print $1}' | xargs -n1 sudo smartctl -a

  next_item
}

check_ipinfo() {
  start_item "Check IP address"

  curl https://ipinfo.io/text

  next_item
}

check_firewall_input_policy() {
  local www_root="/tmp/python/www"

  start_item "Check firewall INPUT policy"
  echo "Press CTRL-C to stop HTTP server and continue executing the script"

  mkdir -p "$www_root"
  echo "ok" > "$www_root/index.html"
  /usr/bin/python3 -m http.server -d "$www_root" 31337

  next_item
}

check_users() {
  start_item "Check users list"

  grep -v -E '/bin/false|nologin' /etc/passwd

  next_item
}

show_banner
install_deps

check_neofetch_info
check_os_install_date
check_virtualization_support
check_memory
check_block_devices
check_disks
check_ipinfo
check_firewall_input_policy
check_listening_addresses
check_users
check_os_boot

finish
Аватара пользователя
CRACK211
Контактная информация:
Сообщения: 188
Зарегистрирован: Ноябрь 2015

Re: Мой чеклист для новых серверов

Скрипты для проверки Linux-серверов:
Начнем с известного и любимого LinPEAS.Писать про него нечего. Но вдруг кто не знает. https://github.com/peass-ng/PEASS-ng/tr ... er/linPEAS
Неплох, но, пожалуй, больше для безопасников. Позволяет быстро (относительно) оценить состояние сервера. В общем, https://github.com/rebootuser/LinEnum
Еще одна версия скрипта для красных. Примечателен легкостью, быстротой и политическим сообщением https://github.com/diego-treitos/linux- ... numeration

Вернуться в «Биллинги, веб дизайн»