Архив метки: Закрытие уязвимостей

Как защитить ssh в CentOS / RHEL / Fedora

Необходимость обеспечения безопасности sshd

Некоторые системные администраторы могут заметить, что злоумышленники пытаются войти в систему с общими именами пользователей и паролями через SSH.

В системных журналах /var/log/secure можно увидеть записи, аналогичные приведенным ниже для многих распространенных имен пользователей (таких как «admin», «guest», «test» и «root»):

Oct 28 11:11:08 hostname sshd[13412]: Illegal user admin from 172.16.59.10

Oct 28 11:11:12 hostname sshd[13412]: Failed password for illegal user admin from 172.16.59.10 port 33762 ssh2

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

Атака брутфорса – это та, в которой пароль неоднократно угадывается, пока не будет найден правильный.

Как обезопасить демона SSHD?

Есть много способов сделать SSH более безопасным.

Здесь мы обсудим некоторые рекомендации.

Использование TCP Врапперов

Самый простой способ защитить демон SSH – это выборочно запретить доступ к нему с помощью функций из пакета tcp_wrappers-libs.

Этот пакет установлен по умолчанию.

tcpwrappers настраиваются через файлы /etc/hosts.allow и /etc/hosts.deny.

Чтобы полностью запретить доступ к демону SSH, добавьте следующий текст в /etc/hosts.deny:

# vi /etc/hosts.deny

sshd: ALL

Это полностью отключит доступ к демону SSH с любого клиента.

Если есть несколько хостов, которым нужно разрешить подключение, добавьте следующие строки в /etc/hosts.allow:

# vi /etc/hosts.allow

sshd: 192.168.0.1, trusted.one-domain.com, 192.168.23.0/24, *.trusted.net

Это позволит подключаться с IP-адреса 192.168.0.1, имени хоста trust.one-domain.com, сети 192.168.23.0/24 и домена * .trusted.net при запрете любых других подключений.

Помните, вам нужно запретить и разрешить хост / сети.

Использование iptables

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

Но что произойдет, если у вас есть служба SSHD, работающая через Интернет, или в неуправляемой (враждебной) сети, такой как site2site vpn с провайдером?

Вы можете получить больше контроля над доступом с iptables.

Также iptables может дать вам больше гибкости и надежности.

Вы можете перечислить свой набор правил с помощью команды «iptables -nL –line-numbers», чтобы увидеть, какие правила уже существуют, это правила по умолчанию, которые пришли с новой установкой CentOS / RHEL 6:

# iptables -nL --line-numbers

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination         

1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 

5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 



Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination         

1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 



Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

Затем вы можете добавить или удалить правила.

Следующие примеры в цепочке INPUT вставят правило в iptables.

Помните, что вам нужно поставить правило на определенную позицию, т.е. Строка 3, просто над правилами DROP по умолчанию, вы можете указать это следующим образом:

# iptables -I INPUT 3 -p TCP -i eth0 -s 192.168.1.39 --dport 22 -j ACCEPT

Выполнение следующей команды от имени root приведет к удалению всего доступа SSH к 192.168.1.22:

# iptables -I INPUT [line-number] -p tcp -i eth0 -s 192.168.1.22 --dport 22 -j DROP

Пожалуйста, обратитесь к man iptables для дополнительных опций и использования, или autohelp iptables –help для краткого резюме:

# man iptables

# autohelp iptables

Если вы хотите включить определенный хост, вы можете запустить следующую команду, чтобы разрешить доступ:

# iptables -I INPUT [line-number] -p tcp -i eth0 -s 192.168.1.39 --dport 22 -j ACCEPT

Кроме того, одним из лучших вариантов использования брандмауэра в случае службы SSH в небезопасной сети является применение контроля скорости передачи по незащищенным источникам; чтобы сделать это, вам просто нужно использовать:

# iptables -I INPUT [line-number] -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH 

# iptables -I INPUT [line-number] -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 12 --rttl --name SSH -j LOG --log-prefix 'SSH-HIT-RATE: '

# iptables -I INPUT [line-number] -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 12 --rttl --name SSH -j DROP

# iptables -I INPUT [line-number] -p tcp --dport 22 -m state --state NEW -j ACCEPT # on the default fresh-install ruleset this rule is already in place, you can ignore

Эти 3 правила устанавливают скорость прохождения 12 новых попыток подключения в минуту, вам необходимо настроить эти значения в соответствии с вашими потребностями.

Все журналы этого правила появятся в файле /var/log/messages, префикс «SSH-HIT-RATE» используется для облегчения поиска связанных записей.

Пожалуйста, обратите особое внимание, когда вы проверяете свои новые правила.

Если вы допустили некритическую ошибку, вы можете вернуться к предыдущей сохраненной конфигурации, используя «service iptables force-reload».

Когда конфигурация была завершена, вы можете сохранить правила брандмауэра с помощью «service iptables save».

Использование /etc/ssh/sshd_config

Существуют и другие шаги, которые можно предпринять, если ограничение доступа невозможно.

Вот некоторые из лучших практик конфигурации SSHD:

Наиболее рекомендуемое действие, особенно в качестве защиты от атак методом “брутфорса”, должно состоять в том, чтобы предотвратить вход root напрямую через SSH.

Для этого вам нужно изменить строку, которая гласит:

# vi /etc/ssh/sshd_config

#PermitRootLogin yes

следующему виду:

# vi /etc/ssh/sshd_config

PermitRootLogin no

Это изменение потребует, чтобы вы сконфигурировали sudo или использовали su для получения привилегий в качестве пользователя root в сеансе ssh пользователя без полномочий root.

Кроме того, вы можете настроить ssh-ключи для пользователя root и использовать опцию ниже, чтобы позволить пользователю root войти в систему только с ключами.

# vi /etc/ssh/sshd_config

PermitRootLogin without-password

Измените определенный порт, отличный от порта по умолчанию.

Можно изменить его на любое случайное число от 1025 до 65535, так как злоумышленники предположат, что порт 22 будет использоваться для протокола ssh.

Найдите эту строку в /etc/sshd/sshd_config:

#Port 22

Измените это на что-то вроде этого:

Port 1101

Номер порта 1101 просто является примером.

Теперь вам нужно получить доступ к этому серверу через порт 1101 при подключении по ssh:

$ ssh someuser@ssh-server:1101

Убедитесь, что сервер принимает только протокол SSH версии 2:

# Protocol 2,1     ### hash this entry and make below entry to allo only ssh v2.

Protocol 2

Измените время, которое пользователь может проводить с открытым приглашением для входа в систему (значение в секундах):

# Default value is 120 seconds.

# Adjust this value according your needs.

LoginGraceTime 30

Это сокращает некоторые DoS-атаки, которые можно выполнять, имитируя медленный вход в систему.

Сторонние приложения

Чтобы заблокировать доступ к хостам, пытающимся атаковать систему методом брута, можно использовать следующие дополнительные сервисы сторонних пакетов:

Они работают на разных уровнях, обеспечивая разный подход к конкретному событию.

 



2018-12-25T16:53:57
Закрытие уязвимостей

Pakiti: предоставляет механизм мониторинга для проверки состояния исправлений систем Linux

Pakiti предоставляет механизм мониторинга для проверки состояния исправлений систем Linux.

Он использует модель клиент / сервер: клиенты работают на отслеживаемых компьютерах и отправляют отчеты на сервер Pakiti для оценки.

Отчет содержит список пакетов, установленных в клиентской системе, который подвергается анализу, выполненному сервером.

Сервер Pakiti сравнивает версии с другими версиями, полученными от различных поставщиков.

Обнаруженные уязвимости, идентифицированные с помощью идентификаторов CVE, сообщаются как результат вместе с уязвимыми пакетами, которые необходимо обновить.

Он имеет веб-интерфейс, который предоставляет список зарегистрированных систем.

Собранная информация помогает системным администраторам поддерживать правильное управление исправлениями и быстро определять машину, уязвимую к конкретным уязвимостям.

Обрабатываемая информация также доступна через программные интерфейсы.

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

Установка и использование



2018-12-25T09:22:25
Закрытие уязвимостей

Несколько уязвимостей в коде сервера NFS FreeBSD

FreeBSD – бесплатная операционная система с открытым исходным кодом.

NFS (Network File System) – это серверное и клиентское приложение, которое превращает FreeBSD в сервер обмена файлами.

Пользователи могут загружать или обновлять файлы на удаленном сервере NFS.

NFS является стандартом для устройств NAS (подключенных к сети) или совместно использует данные для веб-серверов.

Новая ошибка, обнаруженная в коде сервера NFS, которая может позволить удаленному злоумышленнику свернуть сервер NFS, что приведет к атаке отказа в обслуживании (DoS).

Другая возможность – выполнить произвольный код на сервере.

Несколько уязвимостей в коде сервера NFS FreeBSD

Из списка рассылки:

Сетевая файловая система (NFS) позволяет хосту экспортировать некоторые или все его файловые системы, чтобы другие хосты могли обращаться к ним по сети и монтировать их, как если бы они были локальными. FreeBSD включает как серверные, так и клиентские реализации NFS.

Недостаточная и неправильная проверка кода сервера NFS может привести к отказу в обслуживании или, возможно, удаленному выполнению кода через специально созданный сетевой пакет.

Обходной путь недоступен, но системы, которые не предоставляют службы NFS, не уязвимы.

Кроме того, настоятельно рекомендуется, чтобы порт службы NFS (номер порта 2049 по умолчанию) был защищен с помощью брандмауэра на базе хоста или сети, чтобы предотвратить возможность подключения произвольных и ненадежных клиентов.

Как исправить уязвимости FreeBSD NFS

Можно исправить FreeBSD с помощью бинарного метода.

Все, что вам нужно сделать, это ввести следующие две команды в качестве пользователя root:

# uname -mrs

# freebsd-update fetch

freebsd-update to patch nfs server issue detected on Nov 28 2018

Установите обновления:

# freebsd-update install

Installing updates... done.

После исправления просто перезагрузите ваш FreeBSD:

# reboot

или

# shutdown -r now

Проверка

После перезагрузки убедитесь, что у вас появилось новое ядро.

Вы можете узнать версию FreeBSD и номер патча, выполнив следующие команды:

# freebsd-version

# uname -mrs

FreeBSD version and patch level

Обратите внимание: если вы используете настраиваемое ядро, вам необходимо скомпилировать ядро FreeBSD.

Бинарный метод, основанный на freebsd-update, работает только в том случае, если вы используете стоковое ядро FreeBSD.

# svn update /usr/src/

# more /usr/src/UPDATING

# cp -v /usr/src/share/examples/jails/VIMAGE /usr/src/sys/amd64/conf/VIMAGE

# cd /usr/src/

# make -j 16 KERNCONF=VIMAGE kernel

# reboot

# freebsd-verion 

 

 



2018-11-29T16:31:19
Закрытие уязвимостей

Безопасность WordPress: хакеры могут получить ваш IP-адрес и как избежать этого

Сегодня я нашел уязвимость в WordPress. Хакеры могут использовать его, чтобы получить исходный IP-адрес вашего сервера, чтобы они могли запустить DDOS-атаку.

Вот как они могут это получить и как вы можете остановить это.

Как получить исходный IP-адрес сервера через регистрацию пользователя

Шаг 1. Зарегистрируйте учетную запись на своем сайте WordPress.

Перейдите к одному из следующих URL-адресов, чтобы зарегистрировать аккаунт

yourdomain.com/wp-admin



yourdomain.com/wp-login.php



yourdomain.com/wp-login.php?action=register

Введите имя пользователя и адрес электронной почты.

Как администратор вашего сайта WordPress, вы получите уведомление по электронной почте о том, что новый пользователь регистрирует учетную запись на вашем сайте.

В то же время ваш сайт отправит электронному письму новому пользователю (потенциальному атакующему), чтобы установить пароль.

Шаг 2. Откройте исходное сообщение электронной почты

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

В Gmail откройте письмо, отправленное WordPress, и в правом верхнем углу нажмите стрелку раскрывающегося списка и выберите показать оригинал.

В Mozilla Thunderbird откройте письмо, отправленное WordPress.

В правом верхнем углу нажмите кнопку «More» и выберите «View Source» в раскрывающемся меню.

Вот как выглядят первые несколько строк исходного сообщения:

Return-Path: <admin@yourdomain.com>   

Received:from yourdomain.com([12.34.56.78])<< Это оригинальный IP-адрес вашего сервера!

        by smtp.gmail.com with ESMTPSA id 388343daereqrefa.19.2016.01.05.21.32.31

        for <the-hacker@gmail.com>

        (version=TLS1 cipher=AES128-SHA bits=128/128);

        Tue, 05 Jan 2016 21:32:33 -0800 (PST)

В строке Received: from хакер может увидеть исходный IP-адрес вашего сервера!

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

X-Received: by 10.66.155.8 with SMTP id qrer3439005dfd.18.1452058439952;

        Tue, 05 Jan 2016 21:33:59 -0800 (PST)

Return-Path: <smtp@external.com>

Received:from yourdomain.com ([12.34.56.78]) << Это оригинальный IP-адрес вашего сервера!

        by smtp.external.com with ESMTPSA id rewre134373dfa.35.2016.01.05.21.33.57

        for <the-hacker@gmail.com>

        (version=TLS1 cipher=AES128-SHA bits=128/128);

        Tue, 05 Jan 2016 21:33:59 -0800 (PST)

Почему это плохо для вас?

Если вы используете службу CDN ( а вы должны), исходный IP-адрес вашего сервера защищен CDN.

Когда люди ищут IP-адрес вашего сервера в DNS, они получат IP-адрес, указывающий на узел CDN.

Если хакер запускает DDOS-атаку на ваш домен, этот плохой DDOS-трафик будет поступать на узлы CDN, развернутые по всему миру вашим поставщиком CDN.

Ваш исходный сервер не получит эти вредоносные DDOS-запросы.

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

За короткий промежуток времени ваша загрузка сервера увеличивается, и ваша пропускная способность заканчивается.

Легальные посетители получат сообщение об отказе в обслуживании в своем браузере.

Как остановить это

Вы можете остановить его, отключив регистрацию пользователя на своем сайте WordPress.

На панели инструментов WordPress откройте «Настройки»> «Общие».

Снимите отметку в графе Членство – 




Членство

Членство

Ссылка регистрации на вашем сайте исчезнет.

Таким образом, посетители не могут зарегистрироваться на вашем сайте, и ваш сайт не будет отправлять какие-либо письма хакерам.

Суть

Ваш веб-сервер должен отправлять электронную почту только себе или администратору.

Вы должны настроить свой почтовый сервер на другом сервере.

 



2018-11-20T16:31:19
Закрытие уязвимостей

Поиск общедоступной среды Grafana с Google дорками

Grafana – это потрясающий инструмент, который позволяет визуализировать ваши журналы.

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

Есть только одна вещь, которая, кажется, забывается, когда дело доходит до таких удивительных проектов, как проект Grafana.

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

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

Google Dork:

intext:Docs Support Plans Community Grafana New version available! -grafana.com -grafana.org inurl:/login

 

см. также

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.



2018-10-24T16:57:20
Закрытие уязвимостей

Как обновить / установить критические обновления безопасности ядра Oracle без перезагрузки

В основном обновление ядра Linux потребует перезагрузки системы.

Новое ядро не вступает в силу до перезагрузки системы.

В среднем ядро Linux получает обновления безопасности и исправления ошибок примерно раз в месяц.

Для критической системы мы не можем планировать время простоя один раз в месяц, потому что у нее много зависимостей, и мы не получим одобрение руководства.

Как преодолеть это? Да, у нас есть опция в Oracle Premier Support.

Она называется Ksplice.

Что такое Ksplice

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

Он обновляет текущее изображение ядра без необходимости перезагрузки.

Он обновляет текущее ядро в памяти.

Обновление Ksplice вступает в силу сразу же после его применения.

Это не изменение на диске, которое вступает в силу только после последующей перезагрузки.

Убедитесь, что ваша система должна быть зарегистрирована в Unbreakable Linux Network (ULN), чтобы использовать Ksplice.

Вы можете использовать Oracle Ksplice, если у вас есть учетная запись поддержки Oracle Linux Premier.

Обратитесь к следующему URL-адресу для регистрации системы с помощью Unbreakable Linux Network (ULN).

После того, как вы прошли регистрацию в Unbreakable Linux Network (ULN), подпишите свои системы на канал Ksplice для Oracle Linux и установите на них программное обеспечение Ksplice Uptrack

Как зарегистрировать систему для использования Oracle Ksplice в ULN

Если у вас уже есть учетная запись в ULN, вы можете зарегистрировать свою систему для использования Ksplice Uptrack.

Залогиньтесь в ULN @ http://linux.oracle.com.

Нажмите кнопку регистрации Ksplice Uptrack Registration на домашней странице ULN и выберите идентификаторы поддержки клиентов (CSI), которые вы хотите использовать, и нажмите «Register».

На экране отображается подтверждение, что была создана учетная запись Ksplice, и письмо электронной почты, содержащее ключ доступа Ksplice.

То же самое было проверено через портал ULN.

Используйте учетную запись Oracle SSO для входа в веб-интерфейс Ksplice по адресу https://status-ksplice.oracle.com/ и регистрации систем.

На данный момент система не зарегистрирована. То же самое было проверено на следующем скриншоте.

Как установить Ksplice Uptrack

Просто запустите следующие команды для установки Ksplice Uptrack.

Убедитесь, что вы запускаете следующие команды как root.

Он предлагает скрипт установки, поэтому запустите следующие команды как root и замените YOUR_ACCESS_KEY своим ключом доступа.

Если вы хотите включить автоматическое обновление, установите autoinstall = yes в файле /etc/uptrack/uptrack.conf после установки.

# wget -N https://www.ksplice.com/uptrack/install-uptrack

# sh install-uptrack YOUR_ACCESS_KEY

В качестве альтернативы мы можем добавить параметр –autoinstall в команду install-uptrack.

# sh install-uptrack YOUR_ACCESS_KEY --autoinstall


По умолчанию Ksplice Uptrack будет переустанавливать перезагружаемые обновления во время процесса загрузки, чтобы вы оставались в безопасности даже после перезагрузки.

Вы можете настроить это поведение, изменив параметр install_on_reboot в /etc/uptrack/uptrack.conf.

# vi /etc/uptrack/uptrack.conf

install_on_reboot = [no or yes]

Да, теперь я могу видеть список зарегистрированных систем.

Просмотр доступных обновлений и установленных обновлений.

Используйте приведенную ниже страницу, чтобы разрешить или запретить системе использовать ksplice uptrack.

Чтобы перечислить доступные обновления Ksplice, используйте следующие команды uptrack-upgrade.

# uptrack-upgrade -n

или

# uptrack-show --available

Available updates:

[fiq04xbb] CVE-2013-2237: Information leak on IPSec key socket.

[9q4luou3] CVE-2014-3687: Remote denial-of-service in SCTP stack.

Чтобы установить все доступные обновления Ksplice:

# uptrack-upgrade -y

The following steps will be taken:

Install [guclwyc2] CVE-2012-0957: Information leak in uname syscall.

Install [j4d07e02] Kernel panic in IPv4 ARP and IPv6 Neighbor Discovery.

Install [r8og1ec4] CVE-2013-1979: Privilege escalation with UNIX socket credentials.

Install [fiq04xbb] CVE-2013-2237: Information leak on IPSec key socket.

Install [9q4luou3] CVE-2014-3687: Remote denial-of-service in SCTP stack.

Installing [guclwyc2] CVE-2012-0957: Information leak in uname syscall.

Installing [j4d07e02] Kernel panic in IPv4 ARP and IPv6 Neighbor Discovery.

Installing [r8og1ec4] CVE-2013-1979: Privilege escalation with UNIX socket credentials.

Installing [fiq04xbb] CVE-2013-2237: Information leak on IPSec key socket.

Installing [9q4luou3] CVE-2014-3687: Remote denial-of-service in SCTP stack.

Your kernel is fully up to date.

Effective kernel version is 3.8.13-118.20.3.el6uek

Просмотр установленных обновлений.

# uptrack-show

Installed updates:

[guclwyc2] CVE-2012-0957: Information leak in uname syscall.

[j4d07e02] Kernel panic in IPv4 ARP and IPv6 Neighbor Discovery.

[r8og1ec4] CVE-2013-1979: Privilege escalation with UNIX socket credentials.

После запуска команды uptrack-upgrade мы можем видеть, как эффективное ядро запускает компьютер.

Ksplice Uptrack не изменяет вывод uname. Запустите uptrack-uname, чтобы увидеть обновленное запущенное ядро на машине.

# uname -r

3.8.13-68.2.2.el6uek



# uptrack-uname -r

3.8.13-118.20.3.el6uek


Чтобы удалить все обновления из ядра.

# uptrack-remove -y

или

# uptrack-remove --all

The following steps will be taken:

Remove [guclwyc2] CVE-2012-0957: Information leak in uname syscall.

Remove [j4d07e02] Kernel panic in IPv4 ARP and IPv6 Neighbor Discovery.

Remove [r8og1ec4] CVE-2013-1979: Privilege escalation with UNIX socket credentials.

Remove [fiq04xbb] CVE-2013-2237: Information leak on IPSec key socket.

Remove [9q4luou3] CVE-2014-3687: Remote denial-of-service in SCTP stack.

Чтобы удалить Uptrack.

# yum -y remove uptrack


 



2018-10-24T10:45:21
Закрытие уязвимостей