Архив рубрики: Публикации

Kerio Control IPsec VPN.

Назначением описываемого далее VPN является подключение через Kerio Control пользователей, расположенных за пределами локальной сети организации к серверу в локальной сети для работы со спец. ПО. Все участники схемы подключены в Интернет.

VPN создан с помощью Kerio Control 9.3.5. Керио установлен, настроен и работает. У ЛВС назначен внешний статический IP-адрес. Для VPN использован протокол IPsec (сокращение от IP Security) wiki. Клиенты подключаются через встроенное в Windows приложение для VPN.

Порядок действий.

1.Активация VPN сервера.

2.Настройка сервера VPN IPsec.

3.Настройка правил трафика.

4.Настройка пользователя VPN в сервер.

5.Настройка VPN-клиента.

6.Подключение к VPN.

7.Автозапуск VPN при включении ПК.

 

1.Активация.

Активация VPN-сервера в Kerio Control происходит на вкладке бокового меню «Интерфейсы».  Необходимо кликнуть по VPN-серверу мышкой два раза и войти в настройку. Для добавления нового VPN в нижней части окна нажмите на кнопку «Добавить» и выберите желаемый способ из раскрывшегося списка.

 

2.Настройки VPN-сервера.

Переходим в свойства VPN-сервера и выполняем следующие настройки.

1.Включить сервер IPsec VPN – отмечаем галочкой.

2.VPN-сеть: 192.168.100.0 — удобный IP-адрес для сети VPN.

3.Маска 255.255.255.0 – маска, соответствующая IP.

4.Сертификат первоначально не используем. Когда VPN заработает можно добавить сертификат.

5.Использовать сертификат для клиентов – галочку не ставим.

6.Использовать предопределенный ключ: указываем сложный ключ-пароль из латинских букв разного регистра, цифр и спец.символов.

7.Включить аутентификацию MS-CHAPv2 – отмечаем галочкой.

На вкладках KerioVPN, DNS, WINS настройки не изменялись. Если Керио привязан к домену, в настройках DNS нужно указать IP-адрес DC.

Нажимаем ОК для сохранения настроек. Сервер IPsec VPN начнет работать.

 

3.Правила трафика.

Для работы VPN понадобятся разрешающие правила трафика.  Переходим в боковом меню в раздел «Правила трафика» и создаем новые или редактируем существующие правила. Должно получится 3 правила как на картинке ниже.

Internet access (NAT) – правило позволяет выходить в Интернет. В графе «Источник» должны быть указаны «Клиенты VPN».

Local traffic – правило разрешает локальный трафик. VPN клиенты получают доступ к общим ресурсам в локальной сети.

VPN – правило разрешает подключение из Интернета в Керио по Ipsec и Kerio VPN.

 

4.Настройка пользователя VPN в сервер.

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

 

Открываем редактирование пользователя и на вкладке права отмечаем галочку «Пользователь может подключ., используя VPN».

 

На вкладке «Адреса» каждому клиенту можно назначить статический IP-адрес в VPN.

Нажимаем ОК для сохранения введенных параметров.

Настройка VPN подробно расписана в официальном мануале Керио.

 

5.Настройка VPN-клиента.

Клиентами VPN будут компьютеры с ОС Windows 7 и Windows 10, расположенные вне локальной сети и подключенные к Интернету.

Создадим новое VPN подключение в Центре управления сетями и общим доступом. Для Windows 7-10 этот процесс почти одинаковый.

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

 

Выбираем вариант подключения – Подключение к рабочему месту.

 

Если ранее в компьютере уже создавались VPN подключения, то на возникший вопрос – «Использовать имеющееся подключение» выбираем ответ – «Нет, создать новое».

 

Выбираем «Использовать мое подключение к Интернету (VPN).

 

В следующем шаге мастера указываем внешний статический IP адрес Керио. Имя указываем любое понятное.

 

Указываем имя VPN пользователя в Керио и его пароль.

 

Через некоторое время после нажатия кнопки «Создать» подключение будет готово.

 

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

 

На вкладке «Безопасность» вводим следующие настройки.

1.Тип VPN: L2TP Ipsec VPN.

2.Шифрование данных: обязательное (отключится, если нет шифрования).

3.Разрешить следующие протоколы: Протокол Micrsoft CHAP версии 2 (MS-CHAP v2)

 

На этой же вкладке «Безопасность» переходим в дополнительные свойства.

1.Отмечаем точкой настройку – «Для проверки подлинности использовать предварительный ключ.

2.Вводим ключ-пароль, такой же как в настройках Керио.

3.Нажимаем ОК для сохранения.

 

Переходим на вкладку «Сеть».

1.Выбираем Протокол Интернета версии 4 (TCP/IP).

Нажимаем кнопку «Свойства».

 

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

 

На вкладке параметры IP есть настройка «Использовать основной шлюз в удаленной сети».

Если галочка стоит, то весь трафик пойдет через Керио. В этом случае его можно контролировать, и он попадает под все правила и настройки Kerio Control. Недостаток в замедлении скорости передачи.

Если галочку убрать, то пользователь VPN будет использовать свой стандартный шлюз для выхода в Интернет, а в Керио будут идти только пакеты для назначенных целей.

Дополнение.

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

Проблема решается статическим маршрутом на ПК клиента VPN.

1.В командной строке вводим



для уточнения номера соединения. (VPN-KERIO = 65)

При каждом новом создании, пересоздании VPN-соединения номер меняется.

2.Вводим маршрут



192.168.1.0 mask 255.255.255.0 — сеть назначения с маской

192.168.100.1 – IP-адрес VPN-сервера (VPN шлюз)

metric 1 –  метрика

if 65 – номер интерфейса

-p – сохранение маршрута после перезагрузки ПК.

 

Удаление маршрута (если понадобится).



 

6.Подключение VPN.

Чтоб активировать VPN, нажимаем на значок компьютера (сеть) в нижней правой части экрана. В раскрывшемся списке выбираем нужное соединение и нажимаем кнопку «Подключение».

 

В открывшемся подключении вводим логин и пароль учетной записи пользователя VPN.  Нажимаем кнопку «Подключение».

 

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

Если все настройки выполнены правильно и нет проблем с Керио, его активацией, дистрибутивом, версией и прочих нюансов, то произойдет VPN подключение.

Можно пробовать пинговать сервер в локальной сети с компьютера VPN клиента. Часто доступу препятствует антивирус. Так же можно проверить доступ к общим папкам в локальной сети или подключение к удаленному рабочему столу сервера.

В меню Kerio Control отобразятся подключенные пользователи в разделе «Клиенты VPN».

 

7.Автозапуск VPN при включении ПК.

Все действия выполняются на ПК клиента VPN. Автозапуск осуществляется через добавления параметра в реестре.

1.Входим в реестр Windows. Win+R >> regedit

 

2.Переходим по ветке каталогов.

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun – автозапуск для всех пользователей.

(HKEY_CURRENT_USER – только для текущего пользователя)

 

3.Создаем новый строковый параметр со значением rasdial VPN-KERIO admin Password12345.

vpn – любое понятное имя латиницей

rasdial – приложение, которое запускает VPN

VPN-KERIO – название VPN соединения (как при создании)

admin – имя VPN пользователя в Керио

Password12345– пароль VPN пользователя в Керио

Нажимаем ОК и перезагружаем ПК.

Теперь после входа в учетную запись будет появляться командная строка с ходом подключения к VPN.

VPN подключится автоматически.



Скрипт Python для мониторинга сетевого подключения

Постоянное подключение наших устройств к Интернету становится скорее основной потребностью, чем дополнительной привилегией.

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

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

 

Требования к проекту

Для этого проекта нам понадобятся только:

  • Основы программирования на Python
  • Базовое понимание компьютерных сетей.
  • Удобно пользоваться терминалом.

 

Логика проекта

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

 

Что такое время работы и простоя сети?

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

 

Как определить время простоя

Теперь, когда мы знаем, что такое простои в Интернете, вы, возможно, задаетесь вопросом: «Как нам его определить?»

Не усложняя наш код, мы можем использовать ping. Проверка связи — это метод, при котором мы постоянно проверяем связь с надежным сервером, например Cloudflare или Google DNS, а затем ждем ответа.

Если мы пингуем сервер и нет ответа, мы отмечаем это конкретное время и продолжаем пинговать, пока не получим пинг и не отметим время.

По разнице во времени мы можем отметить, когда и как долго не работал интернет.

Мы также должны быть осторожны при пинге отдельного сервера, потому что мы можем ошибочно принять пинг за DDoS-атаку, что может привести к блокировке нашего IP-адреса, что приведет к отрицательным результатам.

Вот блок-схема, объясняющая эту концепцию:

Скрипт Python для мониторинга сетевого подключения

 

Давайте теперь погрузимся в код, показывающий, как реализовать эту логику:

 

Теперь покажите мне код

Как обычно, в Python мы начинаем с импорта необходимых библиотек. Затем мы создаем файл журнала в текущем рабочем каталоге.

Мы используем библиотеку сокетов для отправки запроса на внешний IP-адрес в первой функции. В этом примере мы используем общедоступный DNS-адрес Cloudflare, который имеет очень высокое время безотказной работы. Мы также передаем порт, и, поскольку это DNS-сервер, используем порт 53.

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

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

import socket

import time

import datetime

import os

import sys

LOG_FNAME = "network.log"

FILE = os.path.join(os.getcwd(), LOG_FNAME)

def send_ping_request(host="1.1.1.1", port=53, timeout=3):

try:

socket.setdefaulttimeout(timeout)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((host,port))

except OSError as error:

return False

else:

s.close()

return True

def write_permission_check():

try:

with open(FILE, "a") as file:

pass

except OSError as error:

print("Ошибка создания файла журнала")

sys.exit()

finally:

pass

def calculate_time(start, stop):

time_difference = stop - start

seconds = float(str(time_difference.total_seconds()))

return str(datetime.timedelta(seconds=seconds)).split(".")[0]

def mon_net_connection(ping_freq=2):

monitor_start_time = datetime.datetime.now()

motd = "Мониторинг сетевого подключения начат в: " + str(monitor_start_time).split(".")[0] + " Отправка запроса ping в " + str(ping_freq) + " секунды"

print(motd)



with open(FILE, "a") as file:

file.write("n")

file.write(motd + "n")

while True:

if send_ping_request():

time.sleep(ping_freq)

else:

down_time = datetime.datetime.now()

fail_msg = "Сетевое соединение недоступно в: " + str(down_time).split(".")[0]

print(fail_msg)

with open(FILE, "a") as file:

file.write(fail_msg + "n")

i = 0

while not send_ping_request():

time.sleep(1)

i += 1

if i >= 3600:

i = 0

now = datetime.datetime.now()

continous_message = "Постоянная недоступность сети: " + str(now).split(".")[0]

print(continous_message)

with open(FILE, "a") as file:

file.write(continous_message + "n")

up_time = datetime.datetime.now()

uptime_message = "Сетевое подключение восстановлено: " + str(up_time).split(".")[0]



down_time = calculate_time(down_time, up_time)

_m = "Подключение к сети было недоступно для " + down_time



print(uptime_message)

print(_m)



with open(FILE, "a") as file:

file.write(uptime_message + "n")

file.write(_m + "n")

mon_net_connection()




Заключение

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



2021-01-25T11:27:42
Python

Как пользоваться командой usermod в Linux?

usermod — это утилита командной строки, позволяющая изменять данные для входа пользователя.

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

Синтаксис команды usermod имеет следующий вид:

usermod [options] USER

Только root или пользователи с sudo доступом могут вызывать usermod и изменять учетную запись пользователя. В случае успеха команда не выводит никаких результатов.

Добавить пользователя в группу

Наиболее типичный вариант использования usermod — добавление пользователя в группу.

Чтобы добавить существующего пользователя во вторичную группу, используйте параметры -a -G после имени группы и имени пользователя:

usermod -a -G GROUP USER

Если вы хотите добавить пользователя сразу в несколько групп, укажите группы после -G параметра, разделенные, (запятыми), без пробелов.

Например, чтобы добавить пользователя linuxizeв gamesгруппу, вы должны выполнить следующую команду:

sudo usermod -a -G games linuxize

Всегда используйте опцию -a (добавить) при добавлении пользователя в новую группу. Если вы не укажете этот параметр, пользователь будет удален из групп, не перечисленных после -G параметра.

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

Изменить основную группу пользователя

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

sudo usermod -g GROUP USER

В следующем примере мы меняем основную группу пользователя linuxize на developers:

usermod -g developers linuxize

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

Изменение информации о пользователе

Чтобы изменить информацию GECOS (полное имя пользователя), запустите команду с параметром -c, за которым следует новый комментарий и имя пользователя:

usermod -c "GECOS Comment" USER

Вот пример, показывающий, как добавить дополнительную информацию пользователю linuxize:

usermod -c "Test User" linuxize

Эта информация хранится в файле /etc/passwd.

Изменение домашнего каталога пользователя

В большинстве систем Linux домашние каталоги пользователей названы по имени пользователя и создаются в каталоге /home.

Если по какой-то причине вы хотите изменить домашний каталог пользователя, вызовите usermodкоманду, указав опцию -d, указав абсолютный путь к новому домашнему каталогу и имя пользователя:

usermod -d HOME_DIR USER

По умолчанию команда не перемещает содержимое домашнего каталога пользователя в новый. Чтобы переместить содержимое, используйте опцию -m. Если новый каталог еще не существует, он создается:

usermod -d HOME_DIR -m USER

Вот пример, показывающий, как изменить домашний каталог пользователя www-data на /var/www:

usermod -d /var/www www-data

Изменение пользовательской оболочки по умолчанию

Оболочка по умолчанию — это оболочка, которая запускается после входа в систему. По умолчанию в большинстве систем Linux в качестве оболочки по умолчанию используется Bash Shell.

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

usermod -s SHELL USER

В приведенном ниже примере мы меняем оболочку пользователя на Zsh:

sudo usermod -s /usr/bin/zsh linuxize

Вы можете узнать, какие оболочки доступны в вашей системе, просмотрев /etc/shells содержимое файла.

Изменение UID пользователя

UID (идентификатор пользователя) — это номер, присвоенный каждому пользователю. Он используется операционной системой для обозначения пользователя.

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

usermod -u UID USER

В приведенном ниже примере показано, как изменить номер «UID» на «1050»:

sudo usermod -u 1050 linuxize

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

Изменение имени пользователя

Хотя не очень часто, иногда вам может потребоваться изменить имя существующего пользователя. Параметр -l используется для изменения имени пользователя:

usermod -l NEW_USER USER

В приведенном ниже примере мы переименование пользователя linuxizeк lisaна «1050»:

sudo usermod -l linuxize lisa

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

Установка даты истечения срока действия пользователя

Дата истечения срока — это дата, когда учетная запись пользователя будет отключена. Чтобы установить дату истечения срока действия пользователя, используйте опцию -e:

sudo usermod -e DATE USER

Срок годности должен быть установлен в формате YYYY-MM-DD.

Например, чтобы отключить пользователя linuxize на 2022-02-21, вы бы выполнить следующую команду:

sudo usermod -e "2022-02-21" linuxize

Чтобы отключить истечение срока действия учетной записи, установите пустую дату истечения срока действия:

sudo usermod -e "" linuxize

Используйте chage команду -l, чтобы просмотреть дату истечения срока действия пользователя:

sudo chage -l linuxize

Last password change : Jul 24, 2018

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

Срок годности хранится в /etc/shadow файле.

Блокировка и разблокировка учетной записи пользователя

Опция -L позволяет заблокировать учетную запись пользователя:

usermod -L USER

Команды вставят восклицательный знак (!) перед зашифрованным паролем. Если поле пароля в /etc/shadow файле содержит восклицательный знак, пользователь не сможет войти в систему, используя аутентификацию по паролю. Другие методы входа в систему, такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены. Если вы хотите заблокировать учетную запись и отключить все методы входа в систему, вам также необходимо установить дату истечения срока действия равной 1.

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

sudo usermod -L linuxize

sudo usermod -L -e 1 linuxize

Чтобы разблокировать пользователя, запустите usermodс -Uопцией:

usermod -U USER

Заключение

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.



2021-01-25T10:07:27
Вопросы читателей

Контрольный список повышения безопасности Windows Server. Часть 2

4. Установка обновления

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

Существуют разные виды обновлений: исправления, как правило, устраняют одну уязвимость; накопительные пакеты — это группа пакетов, которые устраняют несколько, возможно, связанных уязвимостей, а пакеты обновления — это обновления для широкого спектра уязвимостей, состоящих из десятков или сотен отдельных исправлений. Обязательно загляните на многочисленные форумы пользователей Microsoft после выпуска обновления, чтобы узнать, какие впечатления от него испытывают другие люди. Имейте в виду, что версия ОС также является разновидностью обновления, и использование устаревших серверных версий значительно отстает от кривой безопасности.

Если ваш производственный график позволяет это, вам следует настроить автоматические обновления на своем сервере. К сожалению, многим ИТ-отделам не хватает рабочей силы для проверки и тестирования каждого патча, и это может привести к застою, когда дело доходит до установки обновлений. Однако гораздо опаснее оставлять производственную систему без исправлений, чем автоматически обновлять ее, по крайней мере, для критических исправлений. По возможности, обновления следует размещать поэтапно, чтобы тестовые среды получали их на неделю или около того раньше, что дает командам возможность наблюдать за их поведением. Необязательные обновления можно выполнить вручную, поскольку они обычно устраняют незначительные проблемы.

Другие обновления программного обеспечения MS также через Центр обновления Windows, поэтому не забудьте включить обновления для других продуктов, если вы используете Exchange, SQL или другую технологию сервера MS. Каждое приложение необходимо регулярно обновлять и тестировать.

 

5. Конфигурация NTP

Разница во времени всего в 5 минут полностью нарушит вход в Windows и различные другие функции, которые полагаются на безопасность Kerberos. Серверы, являющиеся членами домена, будут автоматически синхронизировать свое время с контроллером домена при присоединении к домену, но на автономных серверах необходимо настроить NTP для синхронизации с внешним источником, чтобы часы оставались точными. Контроллеры домена также должны синхронизировать свое время с сервером времени, чтобы весь домен оставался в рабочем диапазоне фактического времени.

 

6. Конфигурация межсетевого экрана

Например, если вы создаете веб-сервер, вам нужно, чтобы для этого сервера из Интернета были открыты только веб-порты (80 и 443). Если анонимные интернет-клиенты могут общаться с сервером на других портах, это создает огромную и ненужную угрозу безопасности. Если у сервера есть другие функции, такие как удаленный рабочий стол (RDP) для управления, они должны быть доступны только через VPN-соединение, чтобы неавторизованные люди не могли использовать порт по своему желанию из сети.

Брандмауэр Windows — это приличный встроенный программный брандмауэр, который позволяет конфигурировать трафик на основе портов изнутри ОС. На автономном сервере или любом сервере без аппаратного брандмауэра перед ним брандмауэр Windows по крайней мере обеспечивает некоторую защиту от сетевых атак, ограничивая поверхность атаки разрешенными портами. Тем не менее, аппаратный брандмауэр всегда является лучшим выбором, поскольку он разгружает трафик на другое устройство и предлагает больше возможностей для обработки этого трафика, позволяя серверу выполнять свои основные обязанности. Какой бы метод вы ни использовали, ключевым моментом является ограничение трафика только необходимыми маршрутами.

 

7. Конфигурация удаленного доступа

Как упоминалось выше, если вы используете RDP, убедитесь, что он доступен только через VPN, если это вообще возможно. Если оставить его открытым для Интернета, это не гарантирует, что вас взломают, но это дает потенциальным хакерам еще одно вторжение на ваш сервер.

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

Помимо RDP, следует тщательно заблокировать различные другие механизмы удаленного доступа, такие как Powershell и SSH, если они используются, и сделать их доступными только в среде VPN. Telnet вообще не следует использовать, поскольку он передает информацию в виде обычного текста и во многих отношениях крайне небезопасен. То же самое и с FTP. По возможности используйте SFTP или SSH (из VPN) и вообще избегайте незашифрованных коммуникаций.

 

8. Конфигурация службы

Сервер Windows имеет набор служб по умолчанию, которые запускаются автоматически и работают в фоновом режиме. Многие из них необходимы для работы ОС, но некоторые из них не требуются и должны быть отключены, если не используются. Следуя той же логике, что и брандмауэр, мы хотим минимизировать поверхность атаки сервера, отключив все, кроме основных функций. В старых версиях MS server больше ненужных сервисов, чем в новых, поэтому внимательно проверяйте все серверы 2008 или 2003 (!).

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

Наконец, каждая служба работает в контексте безопасности определенного пользователя. Для служб Windows по умолчанию это часто учетные записи локальной системы, локальной службы или сетевой службы. Эта конфигурация может работать большую часть времени, но для приложений и пользовательских сервисов передовой опыт диктует настройку учетных записей для конкретных сервисов, локально или в AD, для обработки этих сервисов с минимально необходимым объемом доступа. Это удерживает злоумышленников, скомпрометировавших приложение, от распространения этого взлома на другие области сервера или домена.

 

9. Дальнейшее упрочнение

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

Хотя контроль учетных записей пользователей (UAC) может раздражать, он служит важной цели абстрагирования исполняемых файлов от контекста безопасности вошедшего в систему пользователя. Это означает, что даже если вы вошли в систему как администратор, UAC предотвратит запуск приложений от вашего имени без вашего согласия. Это предотвращает запуск вредоносных программ в фоновом режиме и предотвращает запуск программ установки или другого кода вредоносными веб-сайтами. По возможности оставляйте UAC включенным.

Советы в этом руководстве помогают защитить операционную систему Windows, но каждое приложение, которое вы запускаете, также должно быть усилено. Общие серверные приложения Microsoft, такие как MSSQL и Exchange, имеют особые механизмы безопасности, которые могут помочь защитить их от атак, таких как программы-  вымогатели,  такие как  WannaCry. Обязательно исследуйте и настраивайте каждое приложение для максимальной устойчивости. Если вы создаете веб-сервер, вы также можете следовать нашему руководству по усилению защиты, чтобы улучшить его безопасность в Интернете.

 

Начало: Контрольный список повышения безопасности Windows Server. Часть 1

Продолжение: Контрольный список повышения безопасности Windows Server. Часть 3



2021-01-25T08:45:38
OS Windows

Можно ли запустить выполнение команд bash в фоновом режиме?

Нет ничего более раздражающего, чем запустить команду в своем терминале и заставить ее работать в течение минут, а иногда и часов, и не иметь возможности снова использовать свой терминал. Конечно, вы можете использовать вкладки, но это неуклюжее решение, и оно не всегда оптимально, потому что вы можете хотеть видеть обновления во время работы. Здесь мы покажем вам несколько различных способов запуска команд bash в фоновом режиме в Linux.

Завершите команду с помощью &

Если вы хотите поместить команду в фоновый режим, используйте & (амперсанд) в конце простой способ сделать это. Таким образом, вы можете выполнить команду в фоновом режиме и продолжать использовать свой терминал во время его работы. Однако у этого есть уловка. Использование &не отключает команду от вас; он просто отодвигает его на задний план. Это означает, что пока вы пытаетесь использовать терминал, все, что команда хочет отправить STDOUT или STDERR все еще будет напечатано, что может отвлекать.

COMMAND &

Когда сеанс терминала закрывается, команда завершается. Вы также можете убить команду jobs, выполнив команду, найдя номер выполняющейся команды и завершив ее с помощью killкоманды. Этот синтаксис выглядит следующим образом:

kill %1

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

& После команды, затем отклонить ее

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

Чтобы использовать этот метод, начните с добавления &.

COMMAND &

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

Просто введите disown в оболочку, и она сделает именно это. (И вы можете еще раз проверить это с помощью команды jobs.)

Теперь вы можете закрыть свой терминал и продолжить свой день. Он по-прежнему будет связывать вещи с STDOUT или STDERR, но как только вы выйдете и снова откроете свой терминал, вы ничего там не увидите. Вы можете снова найти команду с помощью команд top или ps и убить ее с помощью команды kill.

& После команды с /dev/null

Добавление & после команды переместит команду в фоновый режим, но в результате фоновая команда продолжит выводить сообщения в терминал по мере того, как вы его используете. Если вы хотите предотвратить это, подумайте о перенаправлении команды на /dev/null.

COMMAND &>/dev/null &

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

Nohup, с & и /dev/null

В отличие от предыдущих команд, использование nohup позволяет запускать команду в фоновом режиме и продолжать ее выполнение. Как? nohup обходит сигнал HUP (сигнал зависания), что позволяет запускать команды в фоновом режиме, даже когда терминал выключен. Объедините эту команду с перенаправлением на «/dev/null» (чтобы nohup не создавал файл nohup.out), и все перейдет в фон с помощью одной команды.

nohup COMMAND &>/dev/null &

Большинство терминальных программ в Linux сегодня имеют встроенные функции, позволяющие им работать в фоновом режиме без особых усилий. Наряду с этим современные системы инициализации (например, systemd) могут позволять пользователям запускать такие программы, как службы, при загрузке или в любое время.

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

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



2021-01-22T13:46:49
Вопросы читателей

Что такое переменные Bash и как их использовать?

Bash позволяет отображать целые строки текста в отдельные переменные, упрощая его использование и написание скриптов. Как они работают и как их использовать? Давайте выясним.

Что такое переменная?

Переменные — это легко запоминающиеся имена, которые могут содержать разные буквенно-цифровые значения. Они полезны, потому что позволяют применять одну и ту же функцию к разным значениям без необходимости переписывать скрипт/фрагмент кода. Они также упрощают написание сценария/фрагмента кода, поскольку вместо работы с отдельными значениями вы можете использовать одно и то же имя для всех из них.

Переменные в реальном времени

Bash позволяет использовать переменные. Вы можете создавать переменные на лету и повторно использовать их во время текущего сеанса Bash. Они могут помочь вам использовать Bash по-разному, и они исчезнут после завершения текущего сеанса.

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

sitea = https://www.maketecheasier.com

После этого, если вы хотите посетить наш сайт с помощью Firefox, вы можете просто ввести:

firefox $sitea

Намного проще — и читабельнее. Переменная $sitea будет оставаться отображаться на сайте, пока вы не изменили его содержимое вручную или сеанс Bash закончился. И, конечно же, вы можете создать несколько переменных, таких , как siteb, sitec, и sited.

При настройке новых переменных вы можете использовать любые имена по своему усмотрению и хранить в них любые буквенно-цифровые строки. Однако имейте в виду, что они по умолчанию чувствительны к регистру. Таким образом, $sitea не будет таким же, как $SiteA. Также обратите внимание, что вы должны использовать кавычки при сохранении строк со специальными символами внутри них (включая пробелы).

Переменные в скриптах

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

Такой сценарий будет выглядеть примерно так:

#!/bin/bash 

username=Odysseas

echo $username

Приведенный выше пример может показаться излишним; однако по мере увеличения сложности кода переменные становятся незаменимыми. Скрипт может состоять из сотен или тысяч строк и содержать имя пользователя в разных местах. Чтобы лучше понять это, рассмотрим следующий несколько иной сценарий:

#!/bin/bash

username=Linus 

echo Привет, $username. Это простой сценарий, который я написал, который будет повторять ваше имя, то есть $username, часто как реальный пример того, как использовать переменные Bash. Я надеюсь, что это будет сделать это легче понять, как использовать переменные, чтобы улучшить свой рабочий процесс Баша, $username. В этом случае переменное имя пользователя сопоставляется с вашим именем. Всякий раз, когда Bash сталкивается с ним, он заменяет его на $username.

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

Постоянные переменные и псевдонимы Bash

Мы видели, как вы можете временно устанавливать переменные и как, для чего-то более постоянного, вы можете включать их в свои собственные скрипты. Но разве нельзя постоянно устанавливать переменные в Bash? Ответ — большое «да!» и вам нужно отредактировать только один файл: «~/.bashrc».

Откройте файл «~/.bashrc» в вашем любимом текстовом редакторе. Поскольку я предпочитаю нано, я сделал это с помощью:

nano ~/.bashrc

Мы предлагаем вам начать с пробного запуска, добавив только одну переменную, чтобы вы знали, где искать, если процесс не сработает. Переместитесь в конец файла и в новой строке добавьте свою переменную. Например, я установил переменную для своего имени как:

myname="Odysseas Kourafalos"

Сохраните файл и выйдите из редактора. Настройки будут применены не сразу. Введите в свой терминал следующее, чтобы оно вступило в силу:

source ~/.bashrc

Теперь вы можете использовать вновь установленную переменную в сеансе Bash:

echo $myname

Вы можете установить столько переменных, сколько захотите, и значительно упростить свои ежедневные приключения в Bash.

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

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

В заключение, даже если вы навсегда установили переменную в .bashrc, вы можете временно переназначить ей другое значение, как мы видели ранее. Переменная будет представлять новое содержимое до завершения текущего сеанса Bash (после выхода из системы или перезапуска) или до тех пор, пока вы не повторно загрузите файл. bashrc.



2021-01-22T13:28:37
Вопросы читателей