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

Ужесточение безопасности для серверов Linux

Как и в случае с любой другой операционной системой, безопасность сетевого оборудования Linux является главной задачей. В этой статье мы дадим несколько рекомендаций о том, как повысить уровень безопасности ваших серверов Linux. Снимки экрана и примеры синтаксиса относятся к системам, в которых работают дистрибутивы Linux на основе Kali Linux, CentOS, RHEL, Ubuntu и Debian.

 

Шифрование данных для большей информационной безопасности

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

Передача файлов должна выполняться по защищенным протоколам, таким как scp, ssh, rsync или sftp. OpenSSH, SFTP или FTPS (FTP через SSL) добавляют Secure Sockets Layer (SSL) или шифрование TLS к стандартному протоколу передачи файлов (FTP). Используя специальные инструменты sshfs и fuse, также возможно смонтировать файловую систему удаленного сервера или ваш собственный безопасный домашний каталог.

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

# yum erase xinetd ypserv tftp-server telnet-server rsh-server

 

На серверах Linux на базе Debian или Ubuntu для устранения небезопасных сервисов можно использовать команды apt-get или apt:

$ sudo apt-get –purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

 

Для данных в состоянии покоя большинство дистрибутивов Linux позволяют зашифровать жесткие диски перед установкой. В Kali Linux выберите параметры «Управляемое использование всего диска» и «Настроить зашифрованный LVM», чтобы настроить диспетчер зашифрованных логических томов.

 

Изолировать сетевые службы

Чтобы ограничить количество других служб, которые могут быть скомпрометированы из-за нарушения безопасности, администраторы Linux должны запускать разные сетевые службы на отдельных серверах или экземплярах виртуальных машин (ВМ). Программное обеспечение для виртуализации, такое как OpenVZ, может быть установлено отдельно в дистрибутивах RHEL и CentOS Linux.

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

  • Отключите переадресацию IP, установив для параметра ipv4.ip_forward значение 0 в «/etc/sysctl.conf»
  • Отключите переадресацию пакетов при отправке, установив для параметров ipv4.conf.all.send_redirects и net.ipv4.conf.default.send_redirects значение 0 в «/etc/sysctl.conf»
  • Отключите прием перенаправления ICMP, установив для параметров ipv4.conf.all.accept_redirects и net.ipv4.conf.default.accept_redirects значение 0 в «/etc/sysctl.conf»
  • Включите защиту сообщений об ошибках, установив для параметра ipv4.icmp_ignore_bogus_error_responses значение 1 в «/etc/sysctl.conf»

 

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

Чем больше приложений или веб-служб вы установили, тем выше вероятность стать жертвой уязвимостей программного обеспечения или злоумышленниками, которые могут скомпрометировать ваши программы. Поэтому ограничивайте количество установок, которые вы добавляете в основную систему, только теми приложениями, которые строго необходимы. Команды apt-get и / или dpkg или специальный менеджер пакетов RPM, такой как yum, можно использовать для проверки всего установленного программного обеспечения в вашей системе, и они включают команды для удаления любых нежелательных пакетов или служб.

Вот пример синтаксиса с использованием dpkg и apt-get:

# dpkg –list

# dpkg –info packageName

# apt-get remove packageName

 

Также важно регулярно обновлять и исправлять программное обеспечение, чтобы устанавливать последние исправления безопасности и пользоваться новейшими инструментами и функциями ваших приложений. В системах Debian или Ubuntu Linux можно настроить автоматические обновления для вашего серверного программного обеспечения с помощью команд apt-get или apt:

$ sudo apt-get install unattended-updates apt-listchanges bsd-mailx

 

Используйте расширения безопасности Linux

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

SELinux (Linux с улучшенной безопасностью) предоставляет ряд политик безопасности для ядра Linux, включая гибкий обязательный контроль доступа (MAC). Механизм имеет три режима настройки:

  1. Disabled: защита неактивна.
  2. Permissive: выводит предупреждения при обнаружении проблем.
  3. Enforcing: применяется политика безопасности.

 

Запуск ядра MAC защищает сервер Linux от вредоносных или некорректных приложений, которые могут повредить или разрушить систему.

 

Установите надежную политику паролей

Вы можете использовать команды useradd или usermod для создания и поддержки учетных записей пользователей Linux. Как и в любой ИТ-среде, применяются стандартные критерии надежных паролей (восемь или более символов, сочетание букв, цифр и символов, регулярно меняющееся). Вы можете использовать команду изменения, чтобы настроить количество дней между сменой пароля и датой последнего изменения пароля.

Команда passwd может блокировать и разблокировать учетные записи:

# заблокировать аккаунт

passwd -l userName

# разблокировать аккаунт

passwd -u userName


 

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

 

Использовать централизованную аутентификацию

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

Kerberos выполняет аутентификацию в качестве доверенной сторонней службы аутентификации. Он использует политику «криптографического общего секрета», которая предполагает, что пакеты, проходящие по небезопасной сети, могут быть прочитаны, изменены и повторно вставлены. Удаленный вход в систему, удаленное копирование, безопасное межсистемное копирование файлов и другие задачи с высоким риском могут выполняться с использованием криптографии с симметричным ключом.

 

Обеспечьте соблюдение мер физической безопасности

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

Например, вы можете отключить загрузку серверов Linux с внешних устройств, таких как DVD-диски, компакт-диски или USB-накопители. Для этого вы можете установить пароли загрузчика BIOS и grub, чтобы другие пользователи не могли изменять и отменять настройки безопасности сервера. Вы также можете получить доступ к настройкам безопасности на странице администратора любого внутреннего веб-сервера на материнской плате Linux, чтобы изменить пароли и права администратора по умолчанию.



2020-11-30T11:16:56
Kali Linux

Как найти длину списка в Python

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

В этой статье показано, как определить длину списка.

len() Функция

Python имеет встроенную функцию len() которая возвращает длину заданного объекта. Объектом может быть список , кортеж, строка, словарь и т. Д.

Синтаксис функции len() следующий:

len(list)

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

Вот пример:

capitals = ['Tokyo', 'Sofia', 'London', 'Budapest']

list_len = len(capitals)

print("The list has {0} elements.".format(list_len))

The list has 4 elements.

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

Другой способ узнать длину списка — использовать цикл for . Это работает путем установки счетчика и перебора всех элементов списка. На каждой итерации текущее значение переменной counter увеличивается на единицу.

Ниже приведен пример кода, который показывает, как найти количество элементов в заданном списке с помощью цикла for :

capitals = ['Tokyo', 'Sofia', 'London', 'Budapest']
counter = 0

for capital in capitals:
  counter = counter + 1

print("The list has {0} elements.".format(counter))

The list has 4 elements.

Этот метод не очень питонический. Вы всегда должны предпочесть использовать функцию len() .

Выводы

Чтобы узнать длину списка в списке Python, используйте функцию len() .

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



2020-11-29T06:13:00
Python

OrderedDict в Python

Структуры данных являются важными компонентами любого языка программирования, которые эффективно хранят данные и управляют ими. Python предоставляет множество встроенных структур данных, например списков, кортежей и словарей, которые помогают программистам создавать эффективные приложения. Словари Python хранят данные в парах ключ-значение. OrderedDict является подклассом класса dict и поддерживает порядок вставленных ключей. Это единственное различие между dict и OrderDict. Диктовка не поддерживает порядок ключей.

OrderedDict сохраняет порядок вставки ключей, и когда мы перебираем OrderedDict, он возвращает ключи в том же порядке. С другой стороны, когда итерация выполняется для dict, ключи возвращаются в случайном порядке. Однако словари теперь упорядочены в версиях Python 3.6 и выше и возвращают значения в том же порядке, в котором они были вставлены. Класс OrderedDict существует в модуле коллекций. Поэтому, чтобы использовать класс OrderedDict, сначала импортируйте модуль collections. Эта статья подробно объясняет Python OrderedDict с примерами.

 

Примеры

Давайте создадим OrderedDict в нашем скрипте Python и добавим данные в виде ключей и значений. Items() — это встроенная функция Python, которая возвращает информацию о ключах и значениях.

# импорт модуля коллекций



import collections



# создание OrderedDict



my_dict = collections.OrderedDict()



my_dict["A"]=1



my_dict["B"]=2



my_dict["C"]=3



my_dict["D"]=4



# объявление цикла for для перебора OrderDict



for i in my_dict.items():



print(i)




В выводе можно заметить, что OrderedDict возвращает ключи и значения в том же виде, что и вставленные.

Теперь давайте создадим еще один OrderDict студента и сохраним в нем информацию о студенте.

# импорт модуля



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



# объявление цикла for для перебора OrderDict



for i in std_dict.items():



print(i)




Изменение значений ключей

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

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# изменение значения возраста



std_dict['age']=25



print ( "Порядок ключей после изменения значения возраста:" )



for i in std_dict.items():



print(i)




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

 

Удаление значения из OrderedDict

Удаление значений из OrderDict не меняет порядок ключей. Если мы удалим определенный ключ и снова вставим его, он будет добавлен в конце. Давайте посмотрим на пример. Мы удалим ключ «возраст» из студенческого словаря, а затем снова вставим его.

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# удаление ключа возраста



del std_dict['age']



print ( "Порядок ключей после удаления ключа возраста:" )



for i in std_dict.items():



print(i)



# повторная вставка ключа возраста и значения



std_dict['age']=23



print ( "Порядок ключей после повторной вставки ключа возраста:")



for i in std_dict.items():



print(i)




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

 

Вывод

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



2020-11-28T16:49:06
Новости

Функция Lambda в Python

Python — это универсальный и широко используемый в последнее время язык программирования. Однако Python предоставляет множество встроенных функций для выполнения множества конкретных задач. Однако мы можем создавать свои собственные функции для выполнения конкретной задачи. В Python ключевое слово lambda создает анонимную функцию. Функция без имени называется анонимной функцией. Обычно обычная функция в Python создается с использованием ключевого слова def. У него есть название и круглые скобки. В то время как анонимная функция используется с ключевым словом лямбда. Поэтому анонимная функция также известна как лямбда-функция. В этой статье объясняется лямбда-функция Python на примерах.

 

Синтаксис лямбда-функции

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

lambda argument(s) : expression

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

 

Пример 1. Вычислить сумму чисел с помощью лямбда-функции.

Давайте создадим лямбда-функцию для вычисления чисел. Лямбда-функция принимает два числа в качестве аргумента и возвращает результат.

# программа для создания лямбда-функции

# создание лямбда-функции

sum_val = lambda a,b : a+b

# передача аргументов и печать значения суммы

print(sum_val(5,10))

 

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

# создание нормальной функции

def sum_val(a,b):

return a+b

# передача аргументов и печать значения суммы

print("The sum value is: ",sum_val(5,10))

 

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

 

Пример 2: реализация нескольких лямбда-функций

Реализуем лямбда-функции с другим номером аргумента.

# программа для реализации множества лямбда-функций



# лямбда-функция для вычитания числа

a = lambda a,b,c: a-b-c



# передача аргументов и печать значения разности



print ( "Значение вычитания:" , a (200,10,2) )



# лямбда-функция для умножения двух чисел



b = lambda a,b:a*b



# передача аргументов и печать значения разности



print("Значение умножения:" , b( 10 , 5 ) )



# лямбда-функция для вычисления значения квадрата



c = lambda a:a*a



# передача аргументов и печать значения разности



print("Значение квадрата:" , c(10 ) )



#a lambda функция для вычисления значения куба



c = lambda a:a*a*a



# передача аргументов и печать значения разности



print("Значение куба:" , c(10 ) )



# лямбда-функция для определения четного числа



c = lambda a:(a%2==0)



# передача аргументов и печать значения разницы



print("Данное число четное:" , c(1001 ) )



# лямбда-функция для определения високосного года



c = lambda a:(a%4==0)



# передача аргументов и печать значения разницы



print("Данный год високосный:" , c(2020 ) )


 

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

 

Использование лямбда-функции внутри нормальной функции

Лямбда-функция может быть реализована внутри обычной или обычной функции Python. Функция sum_val принимает число в качестве аргумента и возвращает лямбда-функцию. Он хранится в переменной с именем value. Второй аргумент передается лямбда-функции, и она возвращает значение суммы.

#a программы для реализации функции лямбды внутри нормальной функции



#объявление нормальной функции

def sum_val(num1):

#объявление функции лямбды внутри функции

return lambda num2: num1+num2

value = sum_val(10)

print("Значение суммы равно: ",value(200))


 

Вывод

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



2020-11-28T14:05:03
Python

Как настроить WireGuard VPN на CentOS 8

WireGuard — это простой и современный VPN (виртуальная частная сеть) с современной криптографией. Это быстрее, проще в настройке и более производительно, чем другие аналогичные решения, такие как IPsec и OpenVPN .

WireGuard является кроссплатформенным и может работать практически где угодно, включая Linux, Windows, Android и macOS. Wireguard — это одноранговая VPN; он не основан на модели клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент. Читать

Шлюз и брандмауэр. В чем разница

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

Что такое шлюз?

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

Что такое брандмауэр?

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

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

В чем разница между шлюзом и межсетевым экраном?

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

Цель

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

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

Функция

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

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

  • При фильтрации пакетов межсетевой экран работает на уровне пакетов и проверяет пакет данных, когда он поступает в компьютерную сеть или покидает ее. Затем брандмауэр использует определенные пользователем правила, чтобы решить, принять или отклонить пакет. Если данные подходят, то данные могут быть получены, и наоборот, если они не соответствуют правилам, то данные отклоняются. Фильтрация пакетов обычно достаточно эффективна для защиты от атак из локальной сети.
  • В отличие от фильтрации пакетов, статическая фильтрация будет проверять заголовки пакетов и различные элементы каждых данных и сравнивать их с достоверной информацией из базы данных. Во время проверки пакет будет проанализирован по уровням путем записи IP-адреса и номера порта, так что безопасность более строгая, чем фильтрация пакетов.
  • Когда брандмауэр действует как прокси-сервер приложения, он работает на уровне приложения, чтобы остановить передачу информации (например, вредоносное ПО, пытающееся проникнуть в вашу систему) между внутренней и внешней сетями.

 

Принцип работы

Шлюзы обычно работают на уровне OSI 4 или выше и обычно транслируют протоколы, чтобы терминалы в двух разных сетях могли связываться друг с другом. Шлюзы могут быть как аппаратными, так и программными, либо их комбинацией. Таким образом, принципы работы определяются выполняемыми функциями.

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

По сути, брандмауэр работает как охранник перед воротами дома и идентифицирует посетителей, которые приходят, одновременно фильтруя злоумышленников, пытающихся проникнуть на персональный компьютер. Он может фильтровать компьютерный трафик, используя IP-адреса, номера портов и протоколы. Например, считайте IP-адреса домами, а номера портов — комнатами в доме. Только доверенные люди (исходные адреса) могут входить в дом (адрес назначения). Затем он дополнительно фильтруется, так что людям в доме разрешен доступ только к определенным комнатам (портам назначения), в зависимости от персонажа, которого они действуют (владелец, чили или гость). Владельцу разрешено входить в любую комнату (любой порт), а детям и гостям разрешено входить в определенный набор комнат (определенные порты).

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



2020-11-27T11:22:15
Безопасность