Рубрики
lamp

haproxy

https://d2c.io/ru/article/how-to/haproxy-basic-ru
https://habr.com/ru/post/244027/
https://wiki.archlinux.org/title/HAproxy
https://bva.dyndns.info/2022/05/haproxy-and-company/
Раздел global определяет общую конфигурацию для всего HAProxy
Defaults определяет настройки по-умолчанию для остальных разделов проксирования.
Раздел listen объединяет в себе описание для фронтенда и бэкенда и содержит полный список прокси. Он полезен для TCP трафика.
Раздел Frontend определяет, каким образом перенаправлять запросы к бэкенду в зависимости от того, что за запрос поступил от клиента.
Секция Backend содержит список серверов и отвечает за балансировку нагрузки между ними в зависимости от выбранного алгоритма

Пример стандартного конфига

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /haproxy?stats
stats auth admin:admin
stats hide-version


frontend  grafana_3000
    bind 0.0.0.0:3000
    default_backend grafana_3000
 
frontend  backuppc_7777
    bind 0.0.0.0:7777
    default_backend backuppc_7777

frontend  rd_8080
    bind 0.0.0.0:8080
    default_backend rd_8080 

frontend  front_multi_80
    bind *:80
    use_backend grafana_backend if { path /grafana } or { path_beg /grafana/ }
    use_backend zabbix_backend if { path /zabbix } or { path_beg /zabbix/ }
    use_backend rd_backend if { path /rd } or { path_beg /rd/ }
    use_backend backuppc_backend if { path /backuppc } or { path_beg /backuppc/ }
 
backend backuppc_7777
    server backuppc 10.0.0.10:80 check

backend grafana_3000
    server faucet 10.0.0.2:3000 check

backend rd_8080
    server rd 10.0.0.8:80 check

backend grafana_backend
  server grafana 10.0.0.2:3000

backend zabbix_backend
  server zabbix 10.0.0.4:80

backend rd_backend
  server rd 10.0.0.8:80

backend backuppc_backend
  server backuppc 10.0.0.10:80
Рубрики
lamp

Debian 11 LAMP

Установим пакеты:
apt install mariadb-server mariadb-client
apt install apache2 libapache2-mod-php curl 
apt install php php-mysql php-cli php-mysql php-mbstring php-zip php-gd php-dom php-imagick php-curl

Установим права для mariadb
mysql_secure_installation


Добавим службу для firewall:
apt install iptables-persistent
apt install fail2ban


Включаем ssl:
a2enmod ssl
systemctl restart apache2

Пример iptables:

cat /etc/iptables/rules.v4 
--------------------------
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#-A INPUT -p tcp -m tcp --dport 80 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -p udp -m udp --dport 5678 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

#web
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#icmp
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 100/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT
COMMIT
--------------------------

cat /etc/iptables/rules.v6 
--------------------------
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#:OUTPUT ACCEPT [0:0]
#-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -p ipv6-icmp -j ACCEPT
COMMIT
--------------------------

Создаем базу в mysql, пример:

mysql
CREATE DATABASE dbwp; - создаем базу
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password123'; - создать нового пользователя 
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'localhost'; - дать права\доступ пользователю  к соответствующей базе
flush privileges; -  перезагрузить таблицы назначения привилегий

install wp

apt install zip
cd /var/www/html
wget https://wordpress.org/latest.zip

unzip latest.zip 
rm index.html latest.zip 
mv wordpress/* .
rmdir  wordpress

chown www-data:www-data -R /var/www/html/