Авторизация



Теги сайта



0х0000007b 1c access control list acl activation active directory ad roles add route adexplorer apache authentication to zabbix bare metal recovery bg zsh bicycle books bruteforce c admin ccna centos centos packet change net adapter name chap chkrootkit chmod cisco clipboard cmd configuring cpu cores cron crontab csc cut cvsup cvsup-without-gui db dev null 2 1 dhcp dhcp reservation disable ipv6 diskpart dism dns domain naming master domain roles download download powershell enable routing on windows enabled end-system doc english english language esx eventlog exe file associations fail2ban fastest_cvsup fedora fg zsh formatdatabase freebsd fsmo get-aduser group policy management hardware https hyper-v idioms iis iperf iptables iscsi jobs kernel panic ldap ldap аутентификация zabbix limit lingualeo linux malware posix mcitp mcsa mcse memory check microsoft mod_ssl mount mssql mysql mysql user password netcache network network config network diagram network document network load balance cluster network scripts nginx nlb num lock numlock openssl pap partition pdc permissions php pipeline pkg_version ports upgrade portupgrade posix powershell ppp pwdlastset rdp reg add regedit registry remote enable restrictions reverse proxy rhel rid rope jumping bridge мост прыжок высота route add route freebsd router switch doc routing protocol rpm sc sc sdset sc sdshow schema scope script output secure web security seize role service permissions services set dns servers set ip address sftp shell script show variables snmp sound scheme sounds speed ssh standard-supfile subinacl supfile switch switchport sync syncronization task sсheduler tempdb topology map transfer role tripplite monitoring tweaks unix user must change password at next logon utf8 vim vlan vmware w32tm web windows windows 2003 r2 windows 2008 r2 windows administrative share windows firewall windows server windows server 2012 windows server backup windows service permissions windows пингалка winre wsus xargs yum zabbix zabbix external check zabbix ldap authentication zsh автоматическое обновление портов freebsd автономные файлы активация английский язык ассоциации файлов windows база данных безопасность active directory буфер вело велосипед видео включение роутинга в windows внешняя проверка zabbix вредоносное программное обеспечение posix документация сети задание двумерного массива захват ролей dc звуки звуковая схема идиомы иероглифы киев кодировка командная строка конфигурация сети маршрутизация маршруты в freebsd маршруты в redhat linux область ограничения windows основные команды отключение административных ресурсов пакеты centos перевод передача ролей dc перенос планировщик задач покатушки полет над днепром проблемы кодировки протокол путь развития в it разрешения служб windows регистрируем cmd скриптом недоступность хоста реестр резервирование ip скриптом роли домена русские символы синхронизация скачать скачать powershell скачать книгу скорость сети списки контроля доступа тарзанка твики фоновые процессы цикл mssql

Главная страница
Настройка защиты от брутфорса Fail2Ban на примере CentOS 7 Печать

Установка и настройка fail2ban для защиты SSH от bruteforce атак по перебору паролей

[]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm # Скачаем пакет установки дополнительного репозитория EPEL. Естественно этого делать не нужно если репозиторий EPEL у нас уже установлен

[]# yum install epel-release-7-2.noarch.rpm # Установим репозиторий

[]# vim /etc/yum.repos.d/epel.repo # Лично я не люблю когда дополнительные репозитории включены по умолчанию, поэтому исправляем значение enabled на 0.
[epel]
name=Extra Packages fоr Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=filе:///etc/pki/rрm-gpg/RPM-GPG-KEY-EPEL-7


[]# yum --enablerepo=epel install -y fail2ban ipset


[]# cd /etc/fail2ban/ # Переходим в директорию с конфигами

[]# cp jail.conf jail.local # Копируем дефоултный конфиг в тот, что впоследствии будем редактировать

[]# vim jail.local # Меняем некоторые настройки конфига под себя, если это необходимо
bantime = 600 # время в секундах, на которое будет забанен провинившийся. Если выставить значение -1 то бан будет вечный
findtime = 600 # если в течение этого времени будет обнаружен предельный порог попыток maxretry, то выполнить бан
maxretry = 5 # предельный порог неверных попыток


[]# cd /etc/fail2ban/jail.d/

[]# touch sshd.local # Создаем файл, в котором будут настройки мониторинга SSH/SFTP

[]# vim sshd.local
[sshd]
enabled = true
action = firewallcmd-ipset
bantime = 10800


[]# systemctl enable fail2ban.service # Включаем сервис в автозагрузку

[]# systemctl start fail2ban.service # Стартуем сервис

Наблюдение за работой

[]# tail -f /var/log/fail2ban.log # Смотрим текущие события в логе

[]# fail2ban-client status sshd # Узнать забаненные IP

[]# cat /var/log/fail2ban.log | grep Ban # Посмотреть забаненные IP способ №2.
2014-11-03 11:47:44,480 fail2ban.server.actions[20250]: NOTICE  [sshd] Ban 192.168.1.5

[]# fail2ban-client set sshd unbanip 192.168.1.5 # Вручную разбанить IP 
 
Настройка SFTP сервера на примере CentOS 7 Minimal Печать

В этой статье я продемонстрирую как с нуля настроить Secure FTP сервер для обмена файлами с защитой от атак по перебору паролей (bruteforce) в системе CentOS 7 с установкой Minimal

SFTP протокол (не путать с FTPS) по сути работы не имеет ничего общего со стандартным FTP, и предоставляет защищенный доступ к файлам посредством 22 порта SSH.

 

Приступаем к установке

Тренироваться будем на виртуальной машине с подключенным диском 30 Гб.

Запускаем процесс установки, настраиваем в графическом интерфейсе основные параметры сервера (рис. 1) и уделяем особое внимание разбиению диска на разделы. Я настоятельно рекомендую вынести пользовательские файлы на выделенную партицию, в моем случае это /filesFTP (рис. 2).

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

image_sftp-summ

Рис. 1

 

images_sftp-part

Рис. 2

 

Первичная настройка сервера

[]# nmtui # Настраиваем сеть, если этого не было сделано на этапе установки

[]# yum install net-tools # Устанавливаем сетевые утилиты, а то без ifconfig жить сложнее

[]# adduser user1 -G wheel # Добавляем нового пользователя, под которым мы будем удаленно заходить через SSH (к SFTP этот пользователь отношения не имеет)

[]# passwd user1 # Устанавливаем пароль новому пользователю
Changing password fоr user user1.
New password:
Retype password:
pаsswd: all authentication tokens updated successfully.

[]# ifconfig # Смотрим IP адрес, теперь мы можем подсоединится к серверу по SSH

[]# yum update -y # Сразу обновим систему

[]# reboot # Перезагрузимся


[]# yum install -y vim

[]# yum install -y wget

[]# cd /tmp/

[]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm # Скачаем пакет установки дополнительного репозитория EPEL

[]# yum install epel-release-7-2.noarch.rpm # Установим репозиторий

[]# vim /etc/yum.repos.d/epel.repo # Лично я не люблю когда дополнительные репозитории включены по умолчанию, поэтому исправляем значение enabled на 0.
[epel]
name=Extra Packages fоr Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=filе:///etc/pki/rрm-gpg/RPM-GPG-KEY-EPEL-7

Настраиваем SFTP

Предоставлением доступа по SFTP занимается демон sshd, поэтому дополнительные пакеты нам устанавливать не нужно.

[]# groupadd sftp_users # Создаем группу, члены которой впоследствии будут получать доступ к SFTP

[]# chmod 0750 /filesFTP/ # Назначаем права для папки, где будут данные всех пользователей

[]# chown root /filesFTP/ # Изменяем владельца директории, где будут корневые SFTP-папки наших пользователей

[]# chgrp sftp_users /filesFTP/ # Также изменяем группу

[]# useradd user2 -G sftp_users -s /sbin/nologin -M # Создаем нового пользователя для доступа к SFTP

[]# passwd user2 # Устанавливаем пароль
Changing password fоr user user2.
New password:
Retype password:
pаsswd: all authentication tokens updated successfully.

[]# cd /filesFTP/ 

[]# mkdir user2 # Создаем домашний каталог пользователю user2. Имя такого каталога должно совпадать с именем пользователя

[]# chmod 0750 user2/ # Изменяем разрешения для домашнего SFTP каталога пользователя

[]# chown root user2/ # Ставим правильно владельца

[]# chgrp user2 user2/ # Ставим правильно группу

[]# cd user2/ # Переходим в домашний каталог нового пользователя

[]# mkdir upload # Создаем пользователю каталог, если необходимо чтобы он не только читал содержимое SFTP, а и мог выкладывать свои файлы на него

[]# chmod 0770 upload/ 

[]# chown root upload/

[]# chgrp user2 upload/

Обращаю ваше внимание на все вышеуказанные команды chmod, chown, chgrp. Их девять штук.

Если вы установите разрешения неверно, то при попытке соединится получите ошибку:

Connection to sftp closed. Read from remote host sftp: Connection reset by peer

Connection to sftp closed.

В логе /var/log/secure на самом сервере появятся следующие строки:

Nov  3 10:16:33 localhost sshd[19843]: pam_unix(sshd:session): session closed for user user2

Nov  3 10:16:33 localhost sshd[19847]: fatal: bad ownership or modes for chroot directory "/filesFTP/user2"

Nov  3 10:16:33 localhost sshd[19843]: pam_unix(sshd:session): session opened for user user2 by (uid=0)

Nov  3 10:16:33 localhost sshd[19843]: Accepted password for user2 from client port 37698 ssh2

 

 

[]# vim /etc/ssh/sshd_config # Открываем файл настроек sshd и добавляем следующие параметры
PermitRootLogin no

StrictModes yes

PermitEmptyPasswords no

Subsystem       sftp    /usr/libexec/openssh/sftp-server # Эту строчку нужно закомментировать и вместо нее добавить следующую !

Subsystem       sftp    internal-sftp

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  PermitTunnel no
  ChrootDirectory /filesFTP/%u
  ForceCommand internal-sftp


[]# systemctl reload sshd # Перечитываем подправленный конфиг

 

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

[]# sftp user2@sftpHostName # Где sftpHostName - имя нашего SFTP сервера, либо его IP
Connecting to sftpHostName...
user2@sftpHostName's password:

sftp> 

 

Теперь установим и настроим fail2ban

Данный пакет нужен чтобы защитить наш новый SFTP сервер от перебора паролей bruteforce

Как это сделать, смотрим в следующей статье.

 
Скрипт PowerShell для замены на серверах DHCP параметра DNS в Scope Печать

Скрипт Replace-DNSAddressOnDHCPScopes позволяющий поменять на одном или нескольких серверах DHCP параметр "006 DNS Servers".

Допустим у нас есть два сервера динамического распределения узлов DHCP. На каждом из этих серверов порядка сотни областей Scope. Каждая область Scope содержит параметры DNS серверов в своем определенном порядке, которые будут выдаваться клиентам.
Понадобилось нам перенести один или все наши сервера DNS с изменением их IP-адресов. И чтобы затем не пришлось вручную изменять на каждом DHCP сервере, в каждой области Scope, несколько параметров DNS, я предлагаю воспользоваться моим скриптом.

Как им пользоваться:

PS C:\> Get-Help Replace-DNSAddressOnDHCPScopes -Examples

 

Function Global:Replace-DNSAddressOnDHCPScopes ([parameter(Position=0, Mandatory=$true, ValueFromPipeline=$false)][array]$DHCPservers,
                                                [parameter(Mandatory=$true)][string]$DNSserverWhichReplace,
                                                [parameter(Mandatory=$true)][string]$DNSserverReplaceOn)

{

<#
    .SYNOPSIS
    Replace DNS server parameter in each Scope of selected DHCP servers.

    .DESCRIPTION
    This function replaces on the selected DHCP servers a specified DNS server parameter to the new one.

    .PARAMETER DHCPservers
    Specify your DHCP servers.

    .PARAMETER DNSserverWhichReplace
    Specify old DNS server, which will be replaced.

    .PARAMETER DNSserverReplaceOn
    Specify new DNS server.

    .EXAMPLE
    PS C:\> Replace-DNSAddressOnDHCPScopes -DHCPservers dc1.domain.local,dc2.domain.local -DNSserverWhichReplace 192.168.1.2 -DNSserverReplaceOn 10.0.1.2

    .EXAMPLE
    PS C:\> Replace-DNSAddressOnDHCPScopes -DHCPservers dc1.domain.local,dc2.domain.local -DNSserverWhichReplace 192.168.1.2 -DNSserverReplaceOn 10.0.1.2 -Verbose
#>

    Import-Module -Name DhcpServer -ErrorAction Stop

    $IPregex='(?<Address>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))'

    if ($DNSserverWhichReplace -notmatch $IPregex)
    {
        Write-Error -Message "Old DNS server address, which would be replaced, has been specified incorrectly" -RecommendedAction "Type the valid IP address of DNS server"
        Break
    }

    if ($DNSserverReplaceOn -notmatch $IPregex)
    {
        Write-Error -Message "New DNS server address, which would replace the old one, has been specified incorrectly" -RecommendedAction "Type the valid IP address of DNS server"
        Break
    }


    $Error.Clear | Out-Null
    Write-Host
    Write-Host
    Write-Host 'Original and comments: http://vam.in.ua/index.php/it/25-ms-powershell/240-powershell-replace-dns-on-dhcpscopes.html' -ForegroundColor DarkCyan
    Write-Host 'Feedback: http://vam.in.ua/index.php/contacts/2-admins/1-aleksey.html' -ForegroundColor DarkCyan
    Write-Host

    $CurrentDHCPserver = 0

    foreach ($DHCPserver in $DHCPservers)
    {
        $CurrentDHCPserver += 1
        $TotalDHCPservers = $DHCPservers.Count

        $CountChangedScopes = 0
        $CountChangedDNSservers = 0

        [array]$DHCPScopes = ''
        $DHCPScopes = (Get-DHCPserverv4Scope -ComputerName $DHCPserver).ScopeId.IPAddressToString
        if (($DHCPScopes -eq '') -or ($DHCPserver -eq $null))
        {
            Continue
        }

        [string]$ProgressActivity = "Processing on DHCP server $DHCPserver ($CurrentDHCPserver of $TotalDHCPservers specified)"
        [int32]$CurrentScope = 0

        foreach ($Scope in $DHCPScopes)
        {
            $CurrentScope += 1
            [int32]$ProgressPercent = $CurrentScope * 100 / ($DHCPScopes.Count)
            Write-Progress -Activity $ProgressActivity -Status "Please wait..." -PercentComplete $ProgressPercent

            $OptionDnsServersOfScope = (Get-DHCPserverv4OptionValue -ComputerName $DHCPserver -OptionId 6 -ScopeId $Scope).Value # Получаем текущие записи DNS серверов 

            $SetOptionDnsServersOfScope = @() # Объявляем массив для нового набора DNS серверов

            $NeedReplace = $false

            foreach ($DNSServerOption in $OptionDnsServersOfScope)
            {
                if ($DNSServerOption -eq $DNSserverWhichReplace) 
                {
                    $SetOptionDnsServersOfScope += $DNSserverReplaceOn
                    $NeedReplace = $true
                    $CountChangedDNSservers += 1
                    Write-Verbose "Change was applied in Scope $Scope at server $DHCPserver"
                }
                else
                {
                    $SetOptionDnsServersOfScope += $DNSServerOption
                }
            }

            if ($NeedReplace -eq $true) 
            {
                Set-DHCPserverv4OptionValue -ComputerName $DHCPserver -DnsServer $SetOptionDnsServersOfScope -ScopeId $Scope
                $CountChangedScopes += 1
            }
        }
    
    Write-Host "There were $CountChangedDNSservers changes in $CountChangedScopes Scopes on Server $DHCPserver" -ForegroundColor DarkGray
    }

    Write-Host 
    Write-Host "Everything was done!" -ForegroundColor DarkGray
}
 
<< Первая < Предыдущая 1 2 3 4 5 6 7 8 9 10 Следующая > Последняя >>

Страница 6 из 62
Главная страница