Добавить README.md
This commit is contained in:
161
README.md
Normal file
161
README.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
# Домашнее задание 25
|
||||||
|
|
||||||
|
## Основы сбора и хранения логов
|
||||||
|
|
||||||
|
Для выполнение задания используется vagrant box Ubuntu 22.04
|
||||||
|
|
||||||
|
### Создание Vagrantfile
|
||||||
|
|
||||||
|
Зададим следующие характеристики для 2 VM
|
||||||
|
|
||||||
|
- CPU - 1
|
||||||
|
- Memory - 512mb
|
||||||
|
|
||||||
|
Создаем 2 VM, на VM **nginx** будет установлен серевер nginx, на VM **log-server** будем собирать слоги с сервера **nginx**
|
||||||
|
|
||||||
|
Готовый [Vagrantfile](Vagrantfile)
|
||||||
|
|
||||||
|
### Cоздание ansible.yml
|
||||||
|
|
||||||
|
Сценарий для Ansible будет выполнять следующие действия:
|
||||||
|
|
||||||
|
На хосте **nginx**:
|
||||||
|
1. Установка nginx, auditd и audispd-plugins
|
||||||
|
2. Настройка access_log для nginx, все логи мы отправляем на **log-server**
|
||||||
|
3. Настройка error_log для nginx, все логи мы отправляем на **log-server** и сохраняем локально
|
||||||
|
4. Настройка аудита файлов конфигурации nginx
|
||||||
|
5. Настройка отправки логов аудита на **log-server**
|
||||||
|
|
||||||
|
|
||||||
|
На VM **log-server**:
|
||||||
|
1. Настраиваем rsyslog на прием логов по TCP и UDP с удаленных хостов
|
||||||
|
2. Настраиваем rsyslog, что бы складывал логи с удаленных хостов в каталог /var/log/rsyslog/
|
||||||
|
3. Так как при отправки логов из auditd в **log-server** не корректно определятеся переменная $programname, делаем небольшую проверку
|
||||||
|
|
||||||
|
Готовый [ansible.yml](ansible.yml)
|
||||||
|
|
||||||
|
|
||||||
|
### Проверка
|
||||||
|
|
||||||
|
Запускаем vagrant
|
||||||
|
```bash
|
||||||
|
alex@ubuntu-pc:~/Документы/25$ vagrant up
|
||||||
|
Bringing machine 'nginx' up with 'virtualbox' provider...
|
||||||
|
Bringing machine 'log-server' up with 'virtualbox' provider...
|
||||||
|
==> nginx: Importing base box 'ubuntu/jammy64'...
|
||||||
|
==> nginx: Matching MAC address for NAT networking...
|
||||||
|
==> nginx: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date...
|
||||||
|
==> nginx: Setting the name of the VM: 25_nginx_1772380320937_95674
|
||||||
|
==> nginx: Clearing any previously set network interfaces...
|
||||||
|
==> nginx: Preparing network interfaces based on configuration...
|
||||||
|
nginx: Adapter 1: nat
|
||||||
|
nginx: Adapter 2: intnet
|
||||||
|
==> nginx: Forwarding ports...
|
||||||
|
...
|
||||||
|
|
||||||
|
...
|
||||||
|
=> log-server: Mounting shared folders...
|
||||||
|
log-server: /home/alex/Документы/25 => /vagrant
|
||||||
|
==> log-server: Running provisioner: ansible...
|
||||||
|
log-server: Running ansible-playbook...
|
||||||
|
|
||||||
|
PLAY [log-server] **************************************************************
|
||||||
|
|
||||||
|
TASK [Gathering Facts] *********************************************************
|
||||||
|
ok: [log-server]
|
||||||
|
|
||||||
|
TASK [enable UDP remote suslog] ************************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
TASK [enable UDP remote suslog port] *******************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
TASK [enable TCP remote suslog] ************************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
TASK [enable TCP remote suslog port] *******************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
TASK [conf remote suslog] ******************************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
RUNNING HANDLER [restart syslog] ***********************************************
|
||||||
|
changed: [log-server]
|
||||||
|
|
||||||
|
PLAY [nginx] *******************************************************************
|
||||||
|
skipping: no hosts matched
|
||||||
|
|
||||||
|
PLAY RECAP *********************************************************************
|
||||||
|
log-server : ok=7 changed=6 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Теперь требуется набрать немного логов для проверки.
|
||||||
|
|
||||||
|
1. На локальном хосте откроем несколько раз URL http://127.0.0.1:8080/
|
||||||
|
|
||||||
|
|
||||||
|
2. Для того, что бы появились ошибки, поправим права доступа к файлу index.nginx-debian.html на VM **nginx**.
|
||||||
|
```bash
|
||||||
|
vagrant@nginx:~$ sudo chmod 600 /var/www/html/index.nginx-debian.html
|
||||||
|
```
|
||||||
|
Еще раз на локальном хосте откроем несколько раз URL http://127.0.0.1:8080/
|
||||||
|
|
||||||
|
3. Отредаетируем файл конфигурации nginx на сервере **nginx** добавив в конец файла закомментированный текст
|
||||||
|
```bash
|
||||||
|
vagrant@nginx:~$ sudo sh -c 'echo "#test audit" >> /etc/nginx/nginx.conf'
|
||||||
|
```
|
||||||
|
|
||||||
|
Подключаемся по ssh к VM **log-server**, и смотрим какие логи у нас создались
|
||||||
|
```bash
|
||||||
|
vagrant@log-server:~$ ll /var/log/rsyslog/192.168.80.20/
|
||||||
|
total 44
|
||||||
|
drwxr-xr-x 2 syslog syslog 4096 Mar 1 16:04 ./
|
||||||
|
drwxr-xr-x 4 syslog syslog 4096 Mar 1 15:56 ../
|
||||||
|
-rw-r----- 1 syslog adm 27238 Mar 1 16:10 audit.log
|
||||||
|
-rw-r----- 1 syslog adm 1953 Mar 1 16:04 nginx_access.log
|
||||||
|
-rw-r----- 1 syslog adm 235 Mar 1 16:04 nginx_error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
Видим, что audit.log, nginx_access.log и nginx_error.log создались. Посмотрим их содержимое.
|
||||||
|
|
||||||
|
**audit.log**
|
||||||
|
```bash
|
||||||
|
vagrant@log-server:~$ sudo tail /var/log/rsyslog/192.168.80.20/audit.log
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=USER_CMD msg=audit(1772381408.949:181): pid=3875 uid=1000 auid=1000 ses=6 subj=unconfined msg='cwd="/home/vagrant" cmd=7368202D63206563686F2022237465737420617564697422203E3E202F6574632F6E67696E782F6E67696E782E636F6E66 exe="/usr/bin/sudo" terminal=pts/0 res=success'#035UID="vagrant" AUID="vagrant"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=CRED_REFR msg=audit(1772381408.949:182): pid=3875 uid=1000 auid=1000 ses=6 subj=unconfined msg='op=PAM:setcred grantors=pam_permit,pam_cap acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'#035UID="vagrant" AUID="vagrant"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=USER_START msg=audit(1772381408.949:183): pid=3875 uid=1000 auid=1000 ses=6 subj=unconfined msg='op=PAM:session_open grantors=pam_limits,pam_env,pam_env,pam_permit,pam_umask,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'#035UID="vagrant" AUID="vagrant"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=SYSCALL msg=audit(1772381408.949:184): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=55b416e6c7c8 a2=441 a3=1b6 items=2 ppid=3876 pid=3877 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=6 comm="sh" exe="/usr/bin/dash" subj=unconfined key="nginx_config"#035ARCH=x86_64 SYSCALL=openat AUID="vagrant" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=CWD msg=audit(1772381408.949:184): cwd="/home/vagrant"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=PATH msg=audit(1772381408.949:184): item=0 name="/etc/nginx/" inode=256286 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0#035OUID="root" OGID="root"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=PATH msg=audit(1772381408.949:184): item=1 name="/etc/nginx/nginx.conf" inode=256295 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0#035OUID="root" OGID="root"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=PROCTITLE msg=audit(1772381408.949:184): proctitle=7368002D63006563686F2022237465737420617564697422203E3E202F6574632F6E67696E782F6E67696E782E636F6E66
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=USER_END msg=audit(1772381408.953:185): pid=3875 uid=1000 auid=1000 ses=6 subj=unconfined msg='op=PAM:session_close grantors=pam_limits,pam_env,pam_env,pam_permit,pam_umask,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'#035UID="vagrant" AUID="vagrant"
|
||||||
|
Mar 1 16:10:08 192.168.80.20 type=CRED_DISP msg=audit(1772381408.953:186): pid=3875 uid=1000 auid=1000 ses=6 subj=unconfined msg='op=PAM:setcred grantors=pam_permit acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'#035UID="vagrant" AUID="vagrant"
|
||||||
|
```
|
||||||
|
|
||||||
|
**nginx_access.log**
|
||||||
|
```bash
|
||||||
|
vagrant@log-server:~$ sudo tail /var/log/rsyslog/192.168.80.20/nginx_access.log
|
||||||
|
Mar 1 15:57:10 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:57:10 +0000] "GET /index.html&qwd HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:57:16 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:57:16 +0000] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:57:21 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:57:21 +0000] "GET /&qwdq HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:57:25 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:57:25 +0000] "GET /&qwdq=1 HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:57:30 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:57:30 +0000] "GET /qq,&qwdq=1 HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:59:09 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:59:09 +0000] "GET /secret/ HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:59:25 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:59:25 +0000] "GET /protected_file.txt HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 15:59:36 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:15:59:36 +0000] "GET /logs/error.log HTTP/1.1" 404 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 16:00:41 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:16:00:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
Mar 1 16:04:08 nginx nginx_access: 10.0.2.2 - - [01/Mar/2026:16:04:08 +0000] "GET / HTTP/1.1" 403 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
**nginx_error.log**
|
||||||
|
```bash
|
||||||
|
vagrant@log-server:~$ sudo tail /var/log/rsyslog/192.168.80.20/nginx_error.log
|
||||||
|
Mar 1 16:04:08 nginx nginx_error: 2026/03/01 16:04:08 [error] 3622#3622: *3 open() "/var/www/html/index.nginx-debian.html" failed (13: Permission denied), client: 10.0.2.2, server: _, request: "GET / HTTP/1.1", host: "127.0.0.1:8080"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Видим, что все логи присутствуют на лог сервере. Задание выполнено!
|
||||||
|
|
||||||
Reference in New Issue
Block a user