DOS (Denial Of Service Attack) protection




Установка виртуальной машины и ОС

 

а) скачать образ отсюда https://cdimage.debian.org/debian-cd/current/i386/iso-cd/ (debian-9.9.0-i386-netinst.iso)

б) открыть VirtualBox и создать VM в goinfre в папке юзера (твоей папке) на этапе “File location and size”

l Размер диска - 8 ГБ@

в) в ходе установки разбить диск согласно условиям задания

l Иметь хотя бы один раздел размеров 4.2 ГБ.@

 

Создаем новые разделы всегда в начале “Beginning”

Я создал три диска:

1) 4,5 Гб Первичный (скрин 6)

2) 1,2 ГБ Логический (скрин 7)

3) 2,9 ГБ Логический

Такое разбиение поможет выполнить условие задания и Первичный диск “/” будет весить 4,2 ГБ

 

В разделе “Software selection” выбираю только SSH server и Standart system utilities

С этой частью все. Посмотреть итог lsblk

 

 

Проверка обновлений и настройка sudo

 

В терминали ВМ пишем следющее:

а) su

apt update (или apt-get update)

apt upgrade (или apt-get upgrade)

обновляет все пакеты

б) apt install sudo vim ufw portsentry fail2ban apache2 net-tools mailutils git -y

устанавливаем то, чем будем пользоваться в будущем

в) su - вводишь пароль

г) редактируешь файл vim /etc/sudoers

# User privilege specification

root ALL=(ALL:ALL) ALL

lfarlen ALL=(ALL:ALL) ALL

на выходе жмешь ESC и набираешь:wq!

д) adduser lfarlen sudo

Установка статического IP

 

а) отредактируй файл /etc/network/interfaces следующм образом:

cat /etc/network/interfaces sudo vim /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

source /etc/network/interfaces.d/*

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

allow-hotplug enp0s3

iface enp0s3 inet static

address 10.0.2.15

netmask 30

gateway 10.0.2.2

 

 

б) Теперь перезапускаем одной из следующих команд:

sudo /etc/init.d/networking restart

service networking restart

 

в) поднимаем одной из следующих команд

ifup enp0s3

ifconfig enp0s3 up

 

г) проверь командой

ping 8.8.8.8

 

читай тут - https://serveradmin.ru/nastroyka-seti-v-debian/

cat /etc/resolv.conf - содержит gateway

https://unixwiz.net/techtips/netmask-ref.html

 

Настройка SSH

а) в настройках VM пишешь так

 

б) Редактируем файл на ВМ vim /etc/ssh/sshd_config следующим образом

port 90

PasswordAuthentification yes

 

sudo /etc/init.d/ssh restart

в) Пробуешь подключится с мака ssh lfarlen@127.0.0.1 -p 9090

 

г) Затем выходишь командойexit

 

д) В терминале на маке генирируешь ключи

ssh-keygen -t rsa

 

е) Отправляешь их на машину

ssh-copy-id -i id_rsa.pub lfarlen@127.0.0.1 -p 9090

 

ж) проверяешь что все ок

cd /home/lfarlen/.ssh

cat authorized_keys

 

з) Опять редактируем файл на ВМ vim /etc/ssh/sshd_config следующим образом

PermitRootLogin no

PubkeyAuthentication yes

#PasswordAuthentification no

 

и) sudo /etc/init.d/ssh restart

 

Firewall

а) В терминале на ВМ пишешь:

sudo ufw status

sudo ufw enable

sudo ufw default deny incoming

sudo ufw default allow outgoing

sudo ufw allow 90/tcp

sudo ufw allow 80/tcp

sudo ufw allow 443

sudo ufw reload

 

SSH: sudo ufw allow 90/tcp

HTTP: sudo ufw allow 80/tcp

HTTPS: sudo ufw allow 443

 

 

DOS (Denial Of Service Attack) protection

 

а) редактируешь файл следующим образом sudo vim /etc/fail2ban/jail.conf

[sshd]

enabled = true

port = ssh

logpath = /var/log/auth.log

backend = %(sshd_backend)s

maxretry = 3

findtime = 21

bantime = 120

 

[sshd-ddos]

enabled = true

port = ssh

logpath = /var/log/auth.log

backend = %(sshd_backend)s

maxretry = 3

findtime = 21

bantime = 120

 

[apache-auth]

enabled = true

port = http,https

logpath = %(apache_error_log)s

 

[apache-badbots]

enabled = true

port = http,https

logpath = %(apache_access_log)s

bantime = 172800

maxretry = 1

 

[apache-noscript]

enabled = true

port = http,https

logpath = %(apache_error_log)s

 

[apache-overflows]

enabled = true

port = http,https

logpath = %(apache_error_log)s

maxretry = 2

 

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

findtime — время в секундах, в течение которого наблюдается подозрительная активность;

maxretry — разрешенное количество повторных попыток подключения к серверу;

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

 

б) перезапускай одной из команд

sudo /etc/init.d/fail2ban restart

sudo service fail2ban restart

 

в) первая смотрит состояние, второе для разблокировки sshd, третье для разблокировки apache

sudo fail2ban-client status

sudo fail2ban-client set sshd unbanip 10.0.2.2

sudo fail2ban-client set apache-dos unbanip 10.0.2.2

 

 

Protection port scans

а) редактируешь файл следующим образом sudo vim /etc/default/portsentry

TCP_MODE="atcp"

UDP_MODE="audp"

 

б) редактируешь файл следующим образом sudo vim /etc/portsentry/portsentry.conf

BLOCK_UDP="1"

BLOCK_TCP="1"

снимаешь коммент со строки

# iptables support for Linux

KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"

комментируешь строку

#KILL_HOSTS_DENY="ALL: $TARGET$: DENY"

в) перезагружаешь командой sudo /etc/init.d/portsentry restart

Stop the services

а) сначала смотришь какие сервисы у тебя есть командой ls -l /etc/init.d

затем что у тебя работает командой sudo service --status-all

более подробно sudo systemctl --full --type service

 

б) затем отключаешь командой sudo service service_name stop

+ отключить автозагрузку

sudo systemctl disable service_name

 

у себя я отключил следующее:

sudo service exim4 stop - агента пересылки почтовых сообщений Exim4

 

 

в) для полного удаления можно юзать sudo apt-get --purge autoremove package_name

autoremove для удаления зависимых файлов

--purge для удаления конфигурационных файлов

г) запустить службу sudo systemctl start service_name

Update Packages

а) Создаем файл для логов sudo vim /var/log/update_script.log

 

б) Создаем скрипт sudo vim /root/update_script.sh, внутри пишем:

#!/bin/bash

apt update -y >> /var/log/update_script.log

apt upgrade -y >> /var/log/update_script.log

 

в) Даем права sudo chmod 755 /root/update_script.sh

 

г) Делаем root пользователя владельцем, чтобы все совсем автоматически делалось (это для подстраховки, по идеи владельцем так и так является root)

sudo chown root /root/update_script.sh

 

д) Автоматизируем через крон sudo crontab -e, внутри дописываем следующее

0 4 * * 1 root /root/update_script.sh

@reboot root /root/update_script.sh

Monitor Crontab Changes

а) Создаем скрипт sudo vim /root/crontab_monitor.sh

 

б) Внутри пишем:

#!/bin/bash

 

DIFF=$(diff /etc/crontab_save /etc/crontab)

 

cat /etc/crontab > /etc/crontab_save

 

if [ "$DIFF"!= ""] then

echo "crontab check: changed, notifying admin."

sendmail root@127.0.0.1 < ~/mail.txt

else

echo "crontab check: unchanged."

fi

 

в) Даем права sudo chmod 755 /root/crontab_monitor.sh

 

г) Делаем root пользователя владельцем (если он не владелец)

 

д*) Автоматизируем через крон sudo crontab -e, внутри дописываем следующее

0 0 * * * root /root/scripts/crontab_monitor.sh

 

е) Создаешь свой vim mail.txt, например Fail /etc/crontab changed. Go to u VM and see.

 

ж**) Включаешь крон sudo systemctl enable cron

 

*Изменить время date --set hh:mm

**Если начнет выебываться, ответ тут https://mycyberuniverse.com/ru/error/how-to-fix-setting-locale-failed.html

или тут https://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue

 

Web Part

а) Написать сайт index.html

 

б) архивировать файлы сайта tar -cf site.tar *

 

в) скопировать файл с мака на ВМ

scp -P 9090 /Users/lfarlen/Desktop/mysite/site.tar lfarlen@127.0.0.1:~/

 

г) переместить из домашнего каталога в /var/www/html

sudo mv site.tar /var/www/html

 

д) разархивировать sudo tar -xvf site.tar

 

е) дописываем 80 порт для http

 

ж*) подключаемся проверить. В браузере на маке можно прописать один из следующих вариантов:

https://oa-n6.21-school.ru:8080/ (зависит от места где сидишь)

https://127.0.0.1:8080/

* https://0.0.0.0:8080/

 

* sudo netstat --inet -npl показывает какие адреса и порты доступны для подключения

 

Configure SSL

а) генерируем самоподписанный ключ

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

 

б) создаем файл sudo vim /etc/apache2/ssl-params.conf и пишем в него следующее:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

SSLProtocol All -SSLv2 -SSLv3

SSLHonorCipherOrder On

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

Header always set X-Frame-Options DENY

Header always set X-Content-Type-Options nosniff

# Requires Apache >= 2.4

SSLCompression off

SSLSessionTickets Off

SSLUseStapling on

SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

 

в) в файле sudo vim /etc/apache2/sites-available/default-ssl.conf меняешь следующие строки:

ServerAdmin lfarlen@21-school.ru

ServerName 127.0.0.1

SSLCertificateFile /etc/ssl/certs/ apache-selfsigned.crt

SSLCertificateKeyFile /etc/ssl/private/ apache-selfsigned.key

BrowserMatch "MSIE [2-6]" \

nokeepalive ssl-unclean-shutdown \



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-12-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: