summaryrefslogtreecommitdiff
path: root/LINUX/HOME_SERVER/Усиление безопасности Linux.md
blob: 5d4ada77a773af5416fa482f6997fbab9b5dec88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
### 10 bash-скриптов

## 1. Включение автоматических обновлений безопасности

Одной из важнейших практик поддержания безопасности систем является поддержание программного обеспечения в актуальном состоянии. Этот скрипт включит автоматические обновления безопасности в системе Linux, гарантируя, что система всегда будет защищена от уязвимостей.
```sh
#!/bin/bash 
# Автоматическое обновление и установка исправлений безопасности
sudo apt-get update -y 
sudo apt-get upgrade -y 
sudo apt-get dist-upgrade -y 
# Установка unattended-upgrades, если они не установлены
sudo apt-get install unattended-upgrades -y 
# Включение автоматических обновлений
sudo dpkg-reconfigure --priority=low unattended-upgrades
```
- `apt-get update -y` обновляет, а `apt-get upgrade -y`модернизирует все системные пакеты.  
- `unattended-upgrades`обеспечивает применение автоматических обновлений безопасности.  
- `dpkg-reconfigure`используется для настройки автоматических обновлений в системе.

## 2. Отключение ненужных служб

Во многих системах ненужные службы запущены по умолчанию. Отключение этих служб уменьшает количество целей для атаки сервера. Этот скрипт выведет список и отключит ненужные службы.
```sh
#!/bin/bash 
# Список всех активных служб 
echo  "Список активных служб:"
sudo systemctl list-units --type=service --state=active 
# Отключение ненужных служб 
echo  "Отключение ненужных служб..."
sudo systemctl stop apache2 
sudo systemctl disable apache2 
sudo systemctl stop mysql 
sudo systemctl disable mysql
```
- `systemctl list-units`показывает все запущенные службы.  
- `systemctl stop`останавливает службу и `systemctl disable`отключает ее запуск при загрузке.  
- Этот скрипт отключает Apache2 и MySQL в качестве примера.

## 3. Внедрение политики надежных паролей

Обеспечение соблюдения пользователями политики надежных паролей необходимо для безопасности системы. Этот скрипт настроит политику паролей системы для обеспечения надежных паролей.
```sh
#!/bin/bash 
# Установите пакет libpam-pwquality для настройки политик паролей
sudo apt-get install libpam-pwquality -y 
# Установите требования к сложности пароля
sudo sed -i 's/# minlen = 8/minlen = 12/' /etc/security/pwquality.conf 
sudo sed -i 's/# minclass = 1/minclass = 4/' /etc/security/pwquality.conf 
# Включите политику паролей в конфигурации PAM
sudo echo  "password tribute pam_pwquality.so retry=3" >> /etc/pam.d/common-password
```
- пакет `libpam-pwqualityп` предоставляет инструменты для соблюдения политики надежных паролей.  
- параметр`minlen` устанавливает минимальную длину пароля, `minclass`задает количество требуемых классов символов (заглавные, строчные, цифры, специальные символы).

## 4. Отключение входа root по SSH

Разрешение входа root через SSH представляет собой существенный риск безопасности. Этот скрипт отключает вход root SSH путем редактирования конфигурации SSH.
```sh
#!/bin/bash 
# Отключение вход root через SSH
sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config 
# Перезапуск службу SSH, чтобы применить изменения
sudo systemctl restart sshd
```
- директива `PermitRootLogin` в конфигурации SSH контролирует, разрешен ли вход root. Установка значения «no» отключает его.  
- `systemctl restart sshd`перезапускает службу SSH для применения изменений.

## 5. Обеспечение прав доступа к конфиденциальным файлам

Обеспечение правильных разрешений для конфиденциальных файлов важно для безопасности системы. Этот скрипт проверяет и корректирует разрешения для важных файлов, таких как `/etc/passwd`и `/etc/shadow`.
```sh
#!/bin/bash 
# Убедитесь, что у /etc/passwd и /etc/shadow правильные права доступа
sudo chmod 644 /etc/passwd 
sudo chmod 000 /etc/shadow 
# Проверьте права доступа 
echo  "Права доступа для /etc/passwd:" 
ls -l /etc/passwd 
echo  "Права доступа для /etc/shadow:" 
ls -l /etc/shadow
```
- `chmod 644`устанавливает разрешения на чтение и запись для владельца файла и только на чтение для остальных.  
- `chmod 000`гарантирует, что никто не сможет читать или записывать в файл`/etc/shadow`, содержащий информацию о пароле пользователя.

## 6. Настройка брандмауэра (UFW)

Использование брандмауэра — важный шаг в защите сервера. Этот скрипт настраивает простой брандмауэр (UFW) для блокировки ненужных портов и разрешения только необходимых служб.
```sh
##!/bin/bash 
# Включить UFW
sudo ufw enable 
# Разрешить SSH (порт 22) и HTTP (порт 80)
sudo ufw allow 22 
sudo ufw allow 80 
# Запретить все остальные входящие соединения
sudo ufw default deny incoming
sudo ufw default allow outgoing 
# Показать статус UFW
sudo ufw status
```
- `ufw enable`включает несложный брандмауэр (UFW).  
- команды «allow» разрешают соединения SSH и HTTP.  
- «default deny incoming» и «default allow outgoing» устанавливают правила по умолчанию для блокировки входящего трафика и разрешения исходящего трафика.

## 7. Регулярная ротация логов

Чтобы избежать заполнения диска логами, следует настроить регулярную ротацию логов. Этот скрипт настраивает ротацию логов на ежедневной основе.
```sh
#!/bin/bash 
# Установить logrotate, если он не установлен
sudo apt-get install logrotate -y 
# Создать пользовательский файл конфигурации logrotate 
echo  "/var/log/*.log { 
 daily 
 rotate 7 
 compress 
 delaycompress 
 missingok 
 notifempty 
 create 0640 root root 
}" | sudo tee /etc/logrotate.d/custom_logs 
# Проверить конфигурацию logrotate
sudo logrotate --debug /etc/logrotate.conf
```
- `logrotate`управляет ротацией файлов журналов.  
- файл конфигурации указывает, что журналы должны ротироваться ежедневно, сохранять 7 старых журналов и сжимать старые журналы для экономии места.  
- флаг `--debug` проверяет правильность конфигурации logrotate.

## 8. Блокировка учетных записей пользователей после неудачных попыток входа в систему

Блокировка учетных записей пользователей после определенного количества неудачных попыток входа в систему является распространенной и важной функцией безопасности. Этот скрипт настраивает блокировку учетных записей пользователей после 5 неудачных попыток входа в систему.
```sh
#!/bin/bash 
# Установить pam_tally2, если он не установлен
sudo apt-get install libpam-modules -y 
# Установить политику блокировки для блокировки учетных записей пользователей после 5 неудачных попыток 
echo  "auth required pam_tally2.so onerr=fail deny=5" | sudo tee -a /etc/pam.d/common-auth 
# Сбросить счетчик неудачных попыток входа для всех пользователей
sudo pam_tally2 --user * --reset
```
- модуль`pam_tally2` отслеживает попытки входа в систему и блокирует учетную запись после указанного количества неудачных попыток ( `deny=5`).  
- флаг `--reset` сбрасывает счетчик неудачных попыток входа для всех пользователей.

## 9. Обнаружение и удаление файлов SUID/SGID

Файлы SUID и SGID предоставляют пользователям повышенные привилегии и могут представлять угрозу безопасности. Этот скрипт проверяет и удаляет файлы SUID/SGID из системы.
```sh
#!/bin/bash 
# Поиск файлов SUID и SGID 
echo  "Поиск файлов SUID и SGID..."
find / - type f -executable -perm /4000 -o -perm /2000 
# При желании удалите их (закомментируйте эту строку, если не хотите удалять файлы) 
# find / -type f -executable -perm /4000 -o -perm /2000 -exec rm -f {} \;
```
- `find / -type f -executable -perm /4000`ищет файлы с установленным битом SUID (Set User ID).  
- `find / -type f -executable -perm /2000`ищет файлы с установленным битом SGID (Set Group ID).  
- Скрипт выводит список файлов, вы можете удалить их, раскомментировав последнюю строку.

## 10. Обеспечение надлежащих прав доступа пользователей к критически важным файлам

Этот скрипт проверяет и гарантирует, что конфиденциальные файлы принадлежат пользователю root и доступны только ему.
```sh
#!/bin/bash 
# Установка владельца и разрешений для критических системных файлов
sudo chown root:root /etc/passwd 
sudo chmod 644 /etc/passwd 
sudo chown root:root /etc/shadow 
sudo chmod 600 /etc/shadow 
# Проверка изменений 
ls -l /etc/passwd /etc/shadow
```
- `chown root:root`гарантирует, что файлами владеет пользователь root.  
- «chmod 644» гарантирует, что файл `/etc/passwd`доступен для чтения другим пользователям, но доступен для записи только пользователю root.  
- «chmod 600» ограничивает доступ `/etc/shadow`только пользователю root.


На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал [usr_bin](https://t.me/usr_bin_linux), где будет еще больше полезной информации.