Установка виртуальной машины и ОС
а) скачать образ отсюда 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 \