Скрипт сканирования портов для Linux

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

Для работы скрипта требуется установленная утилита nmap.
Назначение: Данный скрипт сканирует TCP и UDP порты на хостах из списка.

Теперь перейдем к самому скрипту и описанию его работы!

Описание работы:

Скрипт берёт список хостов из файла $INFILE, и сканирует диапазон, указанный в $SCAN_PORTS. Скрипт выводит результат на экран, и в файл $INFILE.out. В переменной $HOST_TIMEOUT указывается время, после которого скрипт остановит сканирование хоста. В случае если все порты на хосте закрыты, скрипт пингует хост. Если пинг хоста успешный – выводится сообщение «All ports closed». Если пропинговать хост не удалось – выводится сообщкение «Host is down?». При выполнении UDP сканирования необходимо запускать скрипт под рутом. UDP сканирование сильно увеличивает время, необходимое для сканирования хоста, поэтому переменной $SCAN_PORTS необходимо указывать достаточно высокое значение, или сканирование хоста завершится по таймауту, и скрипт выдаст сообщение «All ports closed».

Код скрипта:

#!/bin/bash

INFILE=./list_servers
OUTFILE=$INFILE.out
HOSTS=$(cat $INFILE)
SCAN_PORTS="1-65535"
HOST_TIMEOUT="10m"
MIN_RATE=5000

if [ $UID -ne 0 ]; then
  echo "You should be root to run this script!"
  exit 1
fi

if [ "$EXCLUDE_PORTS" != "" ]; then
  EXCLUDE_PORTS="--exclude-ports $EXCLUDE_PORTS"
fi

for HOST in $HOSTS; do
  PORTS=$(nmap --min-rate $MIN_RATE --host-timeout $HOST_TIMEOUT -p $SCAN_PORTS -Pn -sTU $HOST | grep "open "| cut -d' ' -f1)
  if [ "$PORTS" != "" ]; then
    echo $HOST: $PORTS | tee -a $OUTFILE
  else
    if ping -c3 $HOST >/dev/null; then
      echo "$HOST: All ports closed" | tee -a $OUTFILE
    else
      echo "$HOST: Host is down?" | tee -a $OUTFILE
    fi
  fi
done

Применение:

Создаем скрипт в любом каталоге, там же создаем файл со списком серверов list_servers:

10.10.10.1
10.10.10.2

Результатом работы скрипта будет следующее:

./scan.sh
10.10.10.1: 21/tcp 53/tcp 53/udp 123/udp
10.10.10.2: 25/tcp 53/tcp 80/tcp 110/tcp 143/tcp 443/tcp 465/tcp 587/tcp 993/tcp 995/tcp 53/udp 123/udp

лучше позаботиться о Вашей безопасности сейчас, не ждите пока произойдет взлом :)

Related posts:

  1. Linux: защита скриптов от двойного запуска У всех в повседневной работе присутствуют скрипты, которые выполняются довольно...
  2. Скрипт тестирования производительности БД MySQL В последнее время особенно актуально встает вопрос – оптимально ли...
  3. Мониторинг потерь пакетов на сервере с помощью mtr Потери пакетов – довольно частое явление, особенно у ненадежных хостингов,...
  4. Как проверить корректно ли работает memcached? Проверка корректной работы сервиса – важная основа мониторинга в любом...
  5. Flood скрипт, проверка защиты Вашего оборудования У каждого администратора по сетевой безопасности обязательно имеется свой набор...
You can leave a response, or trackback from your own site.

Оставить комментарий

*