-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautoconfig.sh
101 lines (82 loc) · 2.92 KB
/
autoconfig.sh
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
#!/bin/bash
read -p "Введите домен (например, site.com): " DOMAIN
# Обновление системы и установка необходимых пакетов
sudo apt update && sudo apt install -y ufw nginx certbot python3-certbot-nginx
# Установка и проверка зависимостей вручную
if ! command -v fail2ban-client &> /dev/null; then
echo "\n[!] Устанавливаю fail2ban..."
sudo apt install -y fail2ban
fi
if ! command -v netfilter-persistent &> /dev/null; then
echo "\n[!] Устанавливаю iptables-persistent..."
sudo apt install -y iptables-persistent netfilter-persistent
fi
# Создание директории если она отсутствует
sudo mkdir -p /etc/nginx/sites-enabled
# Настройка UFW
sudo ufw allow 22
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
# Отключение IPv6
sudo sed -i 's/IPV6=yes/IPV6=no/' /etc/default/ufw
if ! grep -q disable_ipv6 /etc/sysctl.conf; then
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
fi
sudo sysctl -p
# Настройка Fail2Ban
sudo tee /etc/fail2ban/jail.local > /dev/null <<EOF
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 50
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 3600
[nginx-botsearch]
enabled = true
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 100
bantime = 7200
EOF
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
# Правила iptables
sudo iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
sudo netfilter-persistent save
# Настройка nginx HTTP-конфига
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <<EOF
server {
listen 80;
server_name $DOMAIN www.$DOMAIN;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
EOF
# Подключение конфига
sudo ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/
# Проверка nginx и перезагрузка
sudo nginx -t && sudo systemctl reload nginx
# Инструкция для сертификата
echo -e "\n✅ Настройка завершена. Теперь запусти сертификацию командой:\n"
echo " sudo certbot --nginx -d $DOMAIN -d www.$DOMAIN"
echo -e "\n⚠️ Certbot сам добавит HTTPS конфигурацию (443) и пропишет SSL.\n"