---
# System prepended metadata

title: '**Доп занятия по Linux**'

---


**Модуль LINUX**

VIM команды
```

```i, I
change to insert mode
h, j, k, l
move left, down, up, right
w, b, e, ge
move word at a time
[n][action/movement]
do n times, e.g. 3w
x, X
remove a character
a, A
append
f[char]
move to next given char in line
F[char]
move to previous char in line
; and ,
repeat last f or F
/yourtext and then: n, N
Search text
d[movement]
delete by giving movement
r[char]
replaces character below cursor
0, $
move to start/end of line
o, O
add new line
%
Goto corresponding parentheses
ci[movement]
change inside of given movement
D
delete to end of line
S
clear current line; to insert mode
gg / G
move to start / end of buffer
yy
copy current line
p
Paste copied text after cursor.
```
```
h - влево курсор
k - вверх
j - вниз
l - вправо 
 
b - начало предыдущего слова 
w - начало след слова 
e - конец слова
  Если добавить цифру перед командой выше, то перекинет на это кол-во цифр
  
 Цифры перед словом 
 3go - превращает в gogogo
 
Shift + % - перепрыгивание со скобок на другие скобки
О - начало предложения
Shift + $ - конец предложения
shift + * - перепрыгивание на слово, начин с той буквы где курсор
shift + # - обратная последовательность команды выше
gg - начало файла
Shift + G - конец файла
2+Shift+G - переход на начало 2-го абзаца
/ - поиск
Прим: /text - ищет слова text в файле
n - переключение на след слово text
Shift+n - обратная последовательность верхней команды
о,О - создает новую линию
х - удаление под курсором
r - позволяет под курсором заменить букву
d - удаление команды
dw - удаление первого слова справа от курсора
d2w - удаляет 2 слова подряд
после нажимая . - удаляет следующие слова подряд

v - визуальное выделение
e - выбирает слово
d - удалить

:w - сохранить
:q - выход
:q! - выход без сохранения
:u - отмена
Ctrl+r - готовность
:help - помощь

```



**Команды linux**
ls
![](https://i.imgur.com/936jFT6.jpg)
![](https://i.imgur.com/Q65lo6L.jpg)

mkdir
![](https://i.imgur.com/lbL0Diw.jpg)


echo
![](https://i.imgur.com/Q1QkrSV.jpg)

Создание и удаление ссылок

жесткие ссылки
![](https://i.imgur.com/9QVlKav.jpg)

символьные ссылки
![](https://i.imgur.com/VhIrRZF.jpg)
![](https://i.imgur.com/JfbAR3v.jpg![](https://i.imgur.com/x48I84Z.jpg)


rm

![](https://i.imgur.com/PrLgllX.jpg)


**Подключение по ssh Linux**

ssh-keygen
cd /home/kali/.ssh
ls -la
sudo apt install openssh-server
sudo systemctl start ssh.socket
sudo systemctl enable ssh.socket

![](https://i.imgur.com/47HTZWH.png)


![](https://i.imgur.com/0OS0be1.jpg)


Далее для удобства копирования команд подключаемся через хост машину к Kali
![](https://i.imgur.com/cl2F4nG.jpg)

Вводим команду:

cat ~/.ssh/id_rsa.pub | ssh parallels@10.211.55.5 "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Далее 
mkdir -p ~/.ssh

cat id_rsa.pub > ~/.ssh/authorized_keys

проверяем 
cat ~/.ssh/authorized_keys

меняем права 
chmod -R go= ~/.ssh

Подключаемся
ssh parallels@10.211.55.5
![](https://i.imgur.com/I21oEEx.jpg)

![](https://i.imgur.com/kf8u4q5.png)

Вошли на Debian.
Устанавливаем htop
sudo apt install htop
Запускаем htop
![](https://i.imgur.com/oVcRyr3.jpg)


НАСТРОЙКА DHCP - в предыдушем уроке. Настраивал на микротике 
https://hackmd.io/@Mart/HkiNMEpGF 



**Bandit**

![](https://i.imgur.com/AIzhmVK.png)




**Практическая работа 1**
> Просмотрите информацию по всем сетевым интерфейсамкомандой ifconfig –a

Устанавливаем на убунту пакет net-tools
Он включают в себя следующее:
> ifconfig
netstat
dig
hostname
route
arp
iptunnel

sudo apt install net-tools -y
После вводим на убунту ifconfig -a   и команда заработала
![](https://i.imgur.com/y6TU6kU.png)


2.3 Настройка сетевых параметров через графический интерфейс. Из панели слева выберите

SystemSettings(системные настройки)
Network(сетевые настройки)Можно видеть список различных видов сети.
Wired –проводнаясеть.
Wireless –беспроводная сеть.
В этой практической рабоет необходимо настроить проводную сеть. Выбираем необходимое подключение и для него выбираем «Options» «IPv4 Settings». Указываем сетевые настройки в соответствие со следующей таблицей:

Адресс компьютера                    # 192.168.1.___ Например: 192.168.1.55
Маска подсети                        # 255.255.255.0
Основной шлюз                        # 192.168.1.1
Адреса DNS-серверов                  # 8.8.8.8
                                     # 4.4.4.4
Убедитесь, что сетевой интерфейс удалось настроить, для этого введите команду ifconfig.
> Добавляем ip адрес на debian через граф интерфейс 
> Далее командой sudo dhclient eth0 - настройка dhcp на интерфейс eth0
> Делаем restart - sudo service networking restart 
> Ping проходит успешно 
Помогла статья https://losst.ru/nastrojka-seti-iz-konsoli-ubuntu
![](https://i.imgur.com/4DvNCac.jpg)

По факту - ping проходит с дефолтного айпишника.
Предполагаю дело в том, что я не настраивал ip на kali (10.211.55.4)
broadcast у машин отличается. 
Либо я не добавил еще один интерфейс на debian, а изменил только через графич system setting, плюс оставил тот же мас адрес.

**Основы Linux**
https://hackmd.io/@IgorLitvin/BJIgQqC-K
**Модель прав доступа**

![](https://i.imgur.com/it3r6UF.jpg)

* Изменение пользователя и группы владельца

Чтобы изменить владельца или группу файла (или другого объекта) используется команды chown или chgrp соответственно. Сначала нужно передать имя группы или владельца, а потом список файлов.

#chown root /etc/passwd
#chgrp wheel /etc/passwd
Вы также можете изменить пользователя и группу одновременно используя команду chown в другой форме:

#chown root:wheel /etc/passwd

Рекурсивное изменение прав
#chown -R drobbins /home/drobbins

chmod и chgrp - для изменения прав доступа
$ chmod +x scriptfile.sh
$ chmod -x scriptfile.sh

Разделение между пользователем, группой и всеми остальными
$ chmod go-w scriptfile.sh


* Сброс разрешений
Используя оператор равенства мы можем указать chmod, что хотим задать только указанные права доступа:
$ chmod =rx scriptfile.sh
$ chmod u=rx scriptfile.sh

> umask
Система использует значение umask чтобы понизить изначально задаваемые разрешения на что-то более разумное и безопасное. Вы можете просмотреть текущие настройки umask набрав umask в командной строке:
$ umask
0022
В Linux-системах значением по умолчанию для umask является 0022, что позволяет другим читать ваши новые файлы (если они могут до них добраться), но не изменять их. Чтобы автоматически обеспечивать больший уровень защищенности для создаваемых файлов, можно изменить настройки umask:
$ umask 0077

* Изменение suid и sgid
Способ установки и удаления битов suid и sgid чрезвычайно прост. Вот так мы задаем бит suid:
#chmod u+s /usr/bin/myapp
А в следующем примере мы снимаем флаг sgid с директории. Вы увидите, как бит sgid работает с директориями немного ниже:
#chmod g-s /home/drobbins

* Директории и удаление
любой пользователь в любой момент может напечатать rm -rf /tmp/* и уничтожить файлы всех остальных.

Хорошая новость в том, что в Linux существует так называемый sticky бит. Когда для /tmp установлен sticky бит (командой chmod +t), единственные, кто могут удалить или переименовать файлы в /tmp — это либо владельцы этих файлов либо суперпользователь.

* Неуловимый первый знак
В завершение этого раздела мы наконец обратим внимание на первый знак, используемый в численном синтаксисе. Он используется для задания битов sticky, suid и sgid:

suid	sgid	sticky	режим
on	on	on	7
on	on	off	6
on	off	on	5
on	off	off	4
off	on	on	3
off	on	off	2
off	off	on	1
off	off	off	0


#chmod 1775 /home/groupfiles

В качестве домашней работы выясните что значит 1755 в настройках прав доступа. :)

* 1 - пользователь, создавший файл может удалять или переименовывать
* 7 - user rwx полные права
* 7 - group rwx полные права
* 5 - other r-x чтение и исполнение

* Управление аккаунтами в Linux
Итак, сами пользовательские аккаунты определены в /etc/passwd. Системы Linux вдобавок к /etc/passwd содержат его файл-компаньон /etc/shadow. Он, в отличие от /etc/passwd, доступен для чтения только суперпользователю и содержит зашифрованную информацию о паролях. Взглянем на образец строки из /etc/shadow:

drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Каждая строка определяет информацию о пароле конкретного аккаунта, поля в ней разделены знаком “:”. Первое поле определяет конкретный пользовательский аккаунт, которому соответствует данная «теневая» запись. Во втором поле содержится зашифрованный пароль. Оставшиеся поля описаны в таблице ниже:

поле 3 — количество дней с 01.01.1970 до момента, когда пароль был изменен
поле 4 — количество дней до того, как будет разрешено сменить пароль («0» — «менять в любое время»)
поле 5 — количество дней до того, как система заставит пользователя сменить пароль (“-1” — «никогда»)
поле 6 — количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом (“-1” — «не предупреждать»)
поле 7 — количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой (“-1” — «не отключать»)
поле 8 — количество дней, прошедшее с момента отключения этого аккаунта (“-1” — «этот аккаунт включен»)
поле 9 — зарезервировано для будущего использования

* 2.3 Ручное создание пользователей и групп

Теперь, я покажу как создать аккаунты для пользователя и группы. Лучший путь узнать как это сделать это добавить нового пользователя в систему вручную. Для начала убедитесь что вашей переменной окружения EDITOR соответствует ваш любимый редактор:
#echo $EDITOR
vim
Если это не так, то вы можете установить переменную EDITOR, набрав что-то, вроде:
#export EDITOR=/usr/bin/emacs
#vipw
Теперь ваш редактор должен быть запущен с уже загруженным /etc/passwd экране. Изменяя системные файлы passwd и group обязательно используйте команды vipw и vigr. Они имеют повышенные меры предосторожности, оберегая ваши файлы от участи быть испорченными.

* Редактирование /etc/passwd

Итак, у вас уже есть готовый файл /etc/passwd, добавьте теперь следующую строку:
testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false

* Редактирование /etc/shadow

Сейчас нам нужно добавить запись в /etc/shadow для этого пользователя. Для этого наберите vipw -s. Вас как всегда встретит ваш любимый редактор в котором уже открыт файл /etc/shadow. Теперь скопируйте строку существующего пользовательского аккаунта (того, у которого есть пароль и запись которого длиннее стандартных записей системных аккаунтов)
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
Замените имя пользователя в скопированной строке на имя вашего пользователя и убедитесь что все поля (особенно старый пароль) установлены как вам надо:
testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
Теперь сохраните и закройте.

![](https://i.imgur.com/AkASTRD.jpg)
**так и не понял почему в итоге такую ошибку выдал, после того как я вышел из редактора,не прописав ничего**

* 2.4 Установка пароля
задать пароль для вашего нового пользователя.
#passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser's new password again)
Редактирование /etc/group
наберите:

#vigr

Перед вами появится ваш /etc/group файл, готовый для редактирования.вам нужно добавить новую группу для этого пользователя, введите следующую строку:
testuser:x:3000:
Теперь сохраните и закройте.

* 2.5 Создание домашней директории
Выполните следующие команды для создания домашнего каталога
testuser’а:
#cd /home
#mkdir testuser
#chown testuser:testuser testuser
#chmod o-rwx testuser

* 3. Утилиты администрирования учетных записей
newgrp — По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd. Если пользователь принадлежит к другим группам, он или она может набрать newgrp thisgroup чтобы стать членом группы thisgroup. Затем, любые новые созданные файлы унаследуют членство в thisgroup.
chage — Команда chage используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow.
gpasswd — Основная утилита управления группами
groupadd/groupdel/groupmod — Используются для добавления/удаления/изменения групп в /etc/group
useradd/userdel/usermod — Используются для добавления/удаления/изменения пользователей в /etc/passwd. Эти команды могут выполнять и другие полезные функции. Смотрите man для получения дополнительной информации.
pwconv/grpconv — Используются для преобразования passwd и group файлов старого образца в новые shadow passwords. Фактически, все Linux системы уже используют shadow passwords, так что вам никогда не придется использовать эти команды.
![](https://i.imgur.com/oEGgPqF.png)



* 4. Настройка пользовательского окружения
4.1 Знакомство с «fortune»

![](https://i.imgur.com/vCaL3nw.png)
bashprofile
Теперь давайте сделаем так чтобы fortune запускалось при каждой авторизации. Используя любимый текстовый редактор отредактируйте файл .bashprofile в вашей домашней директории. Если такого файла не существует, создайте его. Вставьте в его началo.
fortune
Попробуйте выйти из системы и зайдите обратно. 

4.2 Оболочка входа.
При запуске bash проходит файл .bashprofile в вашей домашней директории, запуская каждую строчку как будто набирая ее в командной строке. Это называется интерпретацией файла (file sourcing).
Существуют два способа запуска bash в качестве оболочки входа. Первый используется когда вы впервые входите в систему: bash запускается с именем процесса -bash. Можно увидеть это в выводе списка процессов:
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chouser 404 0.0 0.0 2508 156 tty2 S 2001 0:00 -bash

![](https://i.imgur.com/3wgl54Q.jpg)

 Если bash запущена интерактивно, без авторизации, она проигнорирует /etc/profile и ~/.bashprofile вместо этого обработает ~/.bashrc.

interactive   login   profile   rc
yes           yes     source    ignore
yes           no      ignore    source
no            yes     source    ignore
no            no      ignore    ignore

Проверка на интерактивность
 Хорошей идеей является использование переменной PS1 для проверки факта интерактивности текущей сессии перед выводом текста:
if [ -n "$PS1" ]; then
fortune
fi

export
![](https://i.imgur.com/nPjYsgv.jpg)
4.3 Экспортирование переменных
можете отметить переменную на экспорт, передав её встроенной команде export:
$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar
В этом примере были заданы обе переменные FOO и BAR, но только BAR была помечена для экспорта. Когда был запущен новый bash он потерял значение переменной FOO. Если вы выйдите из этого нового* bash*, вы увидите что первоначальные значения обоих переменных FOO и BAR не изменились.

$ exit
$ echo $FOO $BAR
foo bar
Export и set -x

В связи с вышеописанным поведением, переменные могут быть указаны в ~/.bashprofile или /etc/profile и помечены для экспорта, для того, чтобы в дальнейшем не было необходимости указывать их снова. Но есть несколько опций которые не могут быть экспортированы, и поэтому они должны быть заданы в ~/.bashrc и в вашем профиле последовательно. Эти опции настраиваются при помощи встроенной команды set:
$ set -x
Опция -x заставляет bash вывести на экран каждую команду, которую он собирается выполнить:
$ echo $FOO
$ echo foo
foo
Чтобы выключить опцию -x, используйте set +x. 



**К дальнейшим разделам не приступал еще, но планирую доработать задания**

# **Доп занятия по Linux**
![](https://i.imgur.com/W4lsDGz.png)
![](https://i.imgur.com/3bPxDkV.jpg)
![](https://i.imgur.com/ZqJIFiP.png)
![](https://i.imgur.com/Qg4rD92.png)
![](https://i.imgur.com/velxgEg.png)
![](https://i.imgur.com/lz37aFq.png)
![](https://i.imgur.com/k9yqSWt.png)
* Если что то настраиваем то меняем SSH port с 22 на другой
![](https://i.imgur.com/GbBu0MK.png)
* Metasploit
![](https://i.imgur.com/MiZ7KTp.png)

Bitvise - программа для подключения по SSH

**IPTABLES**
* Входящая цепочка соединений - Input
* Иходящий - Output
* Проходящий трафик - Forward

-D - удалить
-F - удалить всю цепочку
-p -протокол (tcp,udp)
-Accept - разрешить
-Reject - отклонить
-Drop - скинуть
-Log - залогировать пакет

-q - отпарвить пакет в польз приложение
-prerouting
-postrouting
-filter (фильтрация пакетов)

iptables-save - сохранить данные

Чем правило выше , тем быстрее применение этого правила 

iptables -I INPUT 1 -p tcp -j DROP -поставили правило на 1 место

![](https://i.imgur.com/0GuAson.png)
Позволяет блокировать доступ с определенного IP 
![](https://i.imgur.com/asUZdfs.jpg)

**NMAP**
![](https://i.imgur.com/knquBN8.png)

![](https://i.imgur.com/cfaVI82.jpg)

nmap 192.168.88.70 -p445 -sV(версия) -sC(скрипты по умолчанию) 
![](https://i.imgur.com/J0ZqLGP.jpg)
![](https://i.imgur.com/VcyFPlA.jpg)
![](https://i.imgur.com/5YoqLNs.jpg)
-p- показывает какие порты
-p- -sV -oA nmap-scan

Зомби сканирование - [Опции выбора метода сканирования](https://muff.kiev.ua/content/nmap-network-mapper-utilita-dlya-skanirovaniya-i-issledovaniya-bezopasnosti-seti)
Руководство по [NMAP](https://nmap.org/man/ru/index.html)

**Базовое тестирование безопасности**
![](https://i.imgur.com/NV8Z7Y3.png)

**Автоматический поиск уязвимостей**
![](https://i.imgur.com/bOo5Bno.png)
LInux expoit suggester - запускать от метасплойта
**Проверка целостности пакетов**
![](https://i.imgur.com/I8w9n8r.png)

* searchsploit - локальное зеркало exploitdb
* sploitus.com


**Bash**
![](https://i.imgur.com/orJEQrK.jpg)

цикл for
![](https://i.imgur.com/ed8g7W5.png)
![](https://i.imgur.com/DBf7Boa.png)

while цикл

]**Cron**
![](https://i.imgur.com/Vj81gEZ.jpg)
 минута, день,  месяц, день недели
 ![](https://i.imgur.com/VA9p5FC.jpg)
![](https://i.imgur.com/Kfd28QL.jpg)
while
![](https://i.imgur.com/E25wypH.png)

