Skip to content

Commit 1708dd9

Browse files
committed
Merge branch '1.9.0-release'
2 parents df05334 + 5b13401 commit 1708dd9

File tree

131 files changed

+413
-342
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+413
-342
lines changed

CHANGELOG.md

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,73 +6,92 @@ All notable changes to this project will be documented in this file.
66

77
### Notes
88

9-
- To improve security we have deciced to allow users to rename the default admin user. And use a new user "hestia-web" to become the default user to run Hestia on.
10-
- Dropped support Debian 10 due to EOL
9+
- To improve security, we now allow users to rename the default `admin` user.
10+
- Hestia now runs under a new `hestia-web` user.
11+
- In initial versions of HestiaCP, we used Jailkit to enabled Jailed SSH. It had major disadvantages, so we have decided it to replace it with [bubblewrap](https://github.com/containers/bubblewrap). Users running Jailed SSH in the past are advised to run the migration script! It can be found in `/usr/local/hestia/upgrade/manual/migrate_jailkit_to_bubblewrap.sh`. See [#4698](https://github.com/hestiacp/hestiacp/pull/4698)
12+
- We are aware that cgroups are currently not working as they should be. They work fine if you login with SSH as the user, but they don't work for PHP-FPM yet.
13+
- Dropped support for Debian 10 due to EOL.
14+
15+
### Security
16+
17+
- Fix issue where CIRD was not propperly validated CVE-XXXX-XXX-XXX
18+
- Restrict PHP-FPM permissions to a new user to prevent permission escalation to admin users. CVE-XXXX-XXX-XXX
19+
- Solve security issues where restart flag accepted unvalidated values. CVE-XXXX-XXX-XXX
1120

1221
### Features
1322

14-
- Added support for PHP 8.4
23+
- Add support for PHP 8.4
1524
- Add support for Ubuntu 24.04 Noble release (#4411 #4451)
16-
- Add support for Jailed SSH (#4052 #4245) @rjd222
25+
- Add support for Jailed SSH (#4052 #4245, #4698 #4687)
1726
- Implement CLI for Quick Install Apps (#4443)
18-
- Add support for Directadmin / Cpanel imports ( #4177 #4415 #4426 #4252 #4241)
19-
- Add support for Increamental Backups via Restic
20-
- Add support for Triggers in v-add-mail-domain / v-add-delete-mail-domain #4416 (See Docs)
27+
- Add support for DirectAdmin & cPanel imports (#4177 #4415 #4426 #4252 #4241)
28+
- Add support for Incremental Backups via Restic
29+
- Add support for Triggers in `v-add-mail-domain` / `v-add-delete-mail-domain` #4416 (See Docs)
2130
- Add new Quick Install Apps (#4433, #4509, #4327)
2231
- Add support for Limit CPU and RAM for Each User Using cgroup (#4372 #4325)
2332
- Add Web terminal (#3859)
2433
- Improve email account sidebar layout (#4154)
25-
- Allow Chmod in Filegator #4548
34+
- Allow chmod in FileGator #4548
2635

2736
### Bug fixes
2837

29-
- Allow filegator to be translated (#4382 #4275)
38+
- Allow FileGator to be translated (#4382 #4275)
3039
- Fix bug caused by new release robthree/twofactorauth (#4410)
31-
- Create .wp-cli folder on create new user (#4403)
40+
- Create `.wp-cli` folder on create new user (#4403)
3241
- Fix SMTP Relay routing issue (#4389)
3342
- Fix Roundcube permissions (#4387)
34-
- Fix v-add-dns-record when adding TLSA records (#4376)
35-
- Fix handling of Snappymail (#4349)
36-
- Added creation of dovecot.log and permission setup to dovecot installation step (#4352)
37-
- Fix to the Localpart Mail validator so it can accept aliases starting and ending with (#4351)
38-
- Apache2: Enable mod_headers by default. (#4350)
43+
- Fix `v-add-dns-record` when adding TLSA records (#4376)
44+
- Fix handling of SnappyMail (#4349)
45+
- Added creation of `dovecot.log` and permission setup to the dovecot installation step (#4352)
46+
- Fix to the Localpart Mail validator so it can accept aliases starting and ending with `-` (#4351)
47+
- Apache2: Enable `mod_headers` by default. (#4350)
3948
- Update MediaWiki to 1.41.1 (#4344)
4049
- Add support for compressing via GZ or ZSTD (#4300 #4322)
4150
- Simplify spinner styles (#4319)
4251
- Animate deletion of notifications (#4316)
43-
- Update v-run-cli-cmd (#4310)
52+
- Update `v-run-cli-cmd` (#4310)
4453
- Show database server port in notification email (#4301)
45-
- Fixes permissions issue related with Issue #4248 (#4268)
46-
- remove PHP code, and fix installer warning (#4279)
54+
- Fix permissions issue related with Issue #4248 (#4268)
55+
- Remove PHP code, and fix installer warning (#4279)
4756
- Prevent \* from expanding in command (#4085)
4857
- Drop v-generate-debug-report (#4266)
4958
- Fix missing dot file backups
50-
- vsftpd use_localtime No #4261
51-
- Fix broken mysql v8 install on Debian (#4259)
59+
- Disable `use_localtime` for vsftpd (#4261)
60+
- Fix broken MySQL v8 install on Debian (#4259)
5261
- Use standard y/N format in installer to indicate default (#4251)
5362
- Fix broken HTML on login/reset pages (#4247)
54-
- Checks for usernames starting with a alphabetic character. (#4195 #4181)
63+
- Add checks for usernames starting with an alphabetic character. (#4195 #4181)
5564
- Correct formatting of user dir (#4098)
56-
- Add mjs as a file to serve statically (#4240)
65+
- Add `.mjs` as a file to serve statically (#4240)
5766
- Display system time on cron pages (#4236)
5867
- Patch Dokuwiki installer for issue #3889 (#4229)
59-
- Corrected path to ssl certs (#4202)
68+
- Corrected path to SSL certs (#4202)
6069
- Add value to input type text (#4193)
6170
- Correctly get the session cookie for web terminal (#3969)
6271
- Fix Bug with 403 errors Letsencrypt (#4622)
63-
- Update phpmyadmin.inc to improve loading static files
72+
- Update `phpmyadmin.inc` to improve loading static files
6473
- Fix issues with mapping ipv4 to ipv6 setups when server is behind proxies with login (#4606)
65-
- Fix issue with v-change-sys-ip-nat with VSFTPD and systems behind NAT (#4591)
74+
- Fix issue with `v-change-sys-ip-nat` with VSFTPD and systems behind NAT (#4591)
6675
- Fix issues with IDN domains and Apache2 and PHP (#4583)
67-
- Improve Owncloud templates (#4572)
68-
- Improve security Quick Install Apps (#457 #4569 #4568 #4567 #4566 #4565 #4564 #4563)
69-
- Add hestia-mail to hestia-users group and create hestia-users group on new install #4540 #4531
76+
- Improve OwnCloud templates (#4572)
77+
- Improve security for Quick Install Apps (#457 #4569 #4568 #4567 #4566 #4565 #4564 #4563)
78+
- Add `hestia-mail` to `hestia-users` group and create `hestia-users` group on new install #4540 #4531
79+
- Fix translations MariaDB / PHPMyadmin (#4725)
80+
- Remove some left overs from the old admin user (#4721)
81+
- Disallow `` ` `` character in cronjobs to avoid errors in cron list #4708
82+
- Drop Maxmind `high-risk-ip-sample-list` (#4692)
83+
- Hardening of installer security and improving usability (#4690)
84+
- White label for file manager (#4681) @MaxiZamorano
85+
- Fixed with cronjob `v-add-letsencrypt-domain` created new cronjob under "admin" user that didn't have sudo permissions
86+
- Customization of the file manager with interface improvements (#4678) @MaxiZamorano
87+
- Fix: Proftpd FTP Usage is showing incorrect information (#4672)
88+
- Add template for using webasyst with nginx+php-fpm (#4660)
7089

71-
### Depencies
90+
### Dependencies
7291

73-
- Update hestia-nginx to 1.27.0
74-
- Update hestia-php to 8.3.9
75-
- Update Roundcube, Filegator, Snappy mail to the latest version
92+
- Update hestia-nginx to 1.27.3
93+
- Update hestia-php to 8.3.16
94+
- Update Roundcube, FileGator and SnappyMail to the latest version
7695
- Update Quick Installer apps to latest version (#4594)
7796

7897
## [1.8.12] - Service release
@@ -114,7 +133,7 @@ All notable changes to this project will be documented in this file.
114133

115134
### Security
116135

117-
- Restrict PHP-FPM permissions to a new user to prevent permission escalation to admin or other users [CVE-xxxx-xxxxx](https://huntr.com/bounties/21125f12-64a0-42a3-b218-26b9945a5bc0/)
136+
- Restrict PHP-FPM permissions to a new user to prevent permission escalation to admin or other users [CVE-2023-5839](https://huntr.com/bounties/21125f12-64a0-42a3-b218-26b9945a5bc0/)
118137
- Reduce Nginx keepalive_requests to 1000 ([Nginx default](https://www.nginx.com/blog/http-2-rapid-reset-attack-impacting-f5-nginx-products/#http2_max_concurrent_streams)) to limit risks of [CVE-2023-44487](https://www.cve.org/CVERecord?id=CVE-2023-44487)
119138

120139
### Bug fixes

bin/v-add-dns-domain

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ is_format_valid 'user' 'domain' 'ip'
5555
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
5656
is_object_valid 'user' 'USER' "$user"
5757
is_object_unsuspended 'user' 'USER' "$user"
58+
is_format_valid 'restart'
5859

5960
if [ "$($BIN/v-list-dns-domain $user $domain_utf plain | cut -f 1) " != "$domain" ]; then
6061
is_domain_new 'dns' "$domain_utf"

bin/v-add-dns-on-web-alias

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ is_format_valid 'user' 'alias' 'ip' 'restart'
3535
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
3636
is_object_valid 'user' 'USER' "$user"
3737
is_object_unsuspended 'user' 'USER' "$user"
38+
3839
if [ -e "$USER_DATA/dns/$alias.conf" ]; then
3940
exit
4041
fi

bin/v-add-dns-record

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ is_object_new "dns/$domain" 'ID' "$id"
105105
is_dns_fqnd "$rtype" "$dvalue"
106106
is_dns_nameserver_valid "$domain" "$rtype" "$dvalue"
107107
is_format_valid 'ttl'
108-
if [ -n "$restart" ]; then
109-
is_format_valid 'restart'
110-
fi
108+
is_format_valid 'restart'
111109

112110
# Perform verification if read-only mode is enabled
113111
check_hestia_demo_mode

bin/v-add-firewall-ban

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
# info: add firewall blocking rule
3-
# options: IP CHAIN
3+
# options: IPV4_CIDR CHAIN
44
#
55
# example: v-add-firewall-ban 37.120.129.20 MAIL
66
#
@@ -11,7 +11,7 @@
1111
#----------------------------------------------------------#
1212

1313
# Argument definition
14-
ip=$1
14+
ipv4_cidr=$1
1515
chain=$(echo $2 | tr '[:lower:]' '[:upper:]')
1616

1717
# Defining absolute path for iptables and modprobe
@@ -31,8 +31,8 @@ source_conf "$HESTIA/conf/hestia.conf"
3131
# Verifications #
3232
#----------------------------------------------------------#
3333

34-
check_args '2' "$#" 'IP CHAIN'
35-
is_format_valid 'ip' 'chain'
34+
check_args '2' "$#" 'IPV4_CIDR CHAIN'
35+
is_format_valid 'ipv4_cidr' 'chain'
3636
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
3737

3838
# Perform verification if read-only mode is enabled
@@ -46,20 +46,20 @@ check_hestia_demo_mode
4646
heal_iptables_links
4747

4848
# Checking server ip
49-
if [ -e "$HESTIA/data/ips/$ip" ] || [ "$ip" = '127.0.0.1' ]; then
49+
if [ -e "$HESTIA/data/ips/$ipv4_cidr" ] || [ "$ipv4_cidr" = '127.0.0.1' ]; then
5050
exit
5151
fi
5252

5353
# Checking ip exclusions
5454
excludes="$HESTIA/data/firewall/excludes.conf"
55-
check_excludes=$(grep "^$ip$" $excludes 2> /dev/null)
55+
check_excludes=$(grep "^$ipv4_cidr$" $excludes 2> /dev/null)
5656
if [ -n "$check_excludes" ]; then
5757
exit
5858
fi
5959

6060
# Checking ip in banlist
6161
conf="$HESTIA/data/firewall/banlist.conf"
62-
check_ip=$(grep "IP='$ip' CHAIN='$chain'" $conf 2> /dev/null)
62+
check_ip=$(grep "IP='$ipv4_cidr' CHAIN='$chain'" $conf 2> /dev/null)
6363
if [ -n "$check_ip" ]; then
6464
exit
6565
fi
@@ -73,8 +73,8 @@ time=$(echo "$time_n_date" | cut -f 1 -d \ )
7373
date=$(echo "$time_n_date" | cut -f 2 -d \ )
7474

7575
# Adding ip to banlist
76-
echo "IP='$ip' CHAIN='$chain' TIME='$time' DATE='$date'" >> $conf
77-
$iptables -I fail2ban-$chain 1 -s $ip \
76+
echo "IP='$ipv4_cidr' CHAIN='$chain' TIME='$time' DATE='$date'" >> $conf
77+
$iptables -I fail2ban-$chain 1 -s $ipv4_cidr \
7878
-j REJECT --reject-with icmp-port-unreachable 2> /dev/null
7979

8080
# Changing permissions
@@ -85,7 +85,7 @@ chmod 660 $conf
8585
#----------------------------------------------------------#
8686

8787
# Logging
88-
$BIN/v-log-action "system" "Warning" "Firewall" "Banned IP address $ip."
88+
$BIN/v-log-action "system" "Warning" "Firewall" "Banned IP address $ipv4_cidr."
8989
log_event "$OK" "$ARGUMENTS"
9090

9191
exit

bin/v-add-firewall-rule

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
# info: add firewall rule
3-
# options: ACTION IP PORT [PROTOCOL] [COMMENT] [RULE]
3+
# options: ACTION IPV4_CIDR PORT [PROTOCOL] [COMMENT] [RULE]
44
#
55
# example: v-add-firewall-rule DROP 185.137.111.77 25
66
#
@@ -12,7 +12,7 @@
1212

1313
# Argument definition
1414
action=$(echo $1 | tr '[:lower:]' '[:upper:]')
15-
ip=$2
15+
ipv4_cidr=$2
1616
port_ext=$3
1717
protocol=${4-TCP}
1818
protocol=$(echo $protocol | tr '[:lower:]' '[:upper:]')
@@ -47,7 +47,7 @@ sort_fw_rules() {
4747
# Verifications #
4848
#----------------------------------------------------------#
4949

50-
check_args '3' "$#" 'ACTION IP PORT [PROTOCOL] [COMMENT] [RULE]'
50+
check_args '3' "$#" 'ACTION IPV4_CIDR PORT [PROTOCOL] [COMMENT] [RULE]'
5151
is_format_valid 'action' 'protocol' 'port_ext'
5252
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
5353
get_next_fw_rule
@@ -56,12 +56,12 @@ is_object_new '../../../data/firewall/rules' 'RULE' "$rule"
5656
if [ -n "$comment" ]; then
5757
is_format_valid 'comment'
5858
fi
59-
if [[ "$ip" =~ ^ipset: ]]; then
60-
ipset_name="${ip#ipset:}"
59+
if [[ "$ipv4_cidr" =~ ^ipset: ]]; then
60+
ipset_name="${ipv4_cidr#ipset:}"
6161
$BIN/v-list-firewall-ipset plain | grep "^$ipset_name\s" > /dev/null
6262
check_result $? 'ipset object not found' "$E_NOTEXIST"
6363
else
64-
is_format_valid 'ip'
64+
is_format_valid 'ipv4_cidr'
6565
fi
6666

6767
# Perform verification if read-only mode is enabled
@@ -78,7 +78,7 @@ date=$(echo "$time_n_date" | cut -f 2 -d \ )
7878

7979
# Concatenating rule
8080
str="RULE='$rule' ACTION='$action' PROTOCOL='$protocol' PORT='$port_ext'"
81-
str="$str IP='$ip' COMMENT='$comment' SUSPENDED='no'"
81+
str="$str IP='$ipv4_cidr' COMMENT='$comment' SUSPENDED='no'"
8282
str="$str TIME='$time' DATE='$date'"
8383

8484
# Adding to config

bin/v-add-mail-domain-ssl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,18 @@ format_domain_idn
5151
#----------------------------------------------------------#
5252

5353
check_args '3' "$#" 'USER DOMAIN SSL_DIR [RESTART]'
54-
is_format_valid 'user' 'domain' 'ssl_dir'
54+
is_format_valid 'user' 'domain' 'ssl_dir' 'restart'
55+
format_no_quotes "$ssl_dir"
5556
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
5657
is_object_valid 'user' 'USER' "$user"
5758
is_object_unsuspended 'user' 'USER' "$user"
5859
is_object_valid 'mail' 'DOMAIN' "$domain"
5960
is_object_unsuspended 'mail' 'DOMAIN' "$domain"
6061
is_object_value_empty 'mail' 'DOMAIN' "$domain" '$SSL'
62+
if [ -n "$restart" ]; then
63+
is_restart_valid 'restart' "$restart"
64+
fi
65+
6166
is_web_domain_cert_valid
6267

6368
# Perform verification if read-only mode is enabled

bin/v-add-sys-ssh-jail

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22
# info: add system ssh jail
3-
# options: [RESTART]
3+
# options: NONE
44
#
5-
# example: v-add-sys-ssh-jail yes
5+
# example: v-add-sys-ssh-jail
66
#
77
# This function enables ssh jailed environment.
88

bin/v-add-web-domain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ domain_utf=$(idn2 --quiet -d "$domain_idn")
5050

5151
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
5252
check_args '2' "$#" 'USER DOMAIN [IP] [RESTART] [ALIASES] [PROXY_EXTENSIONS]'
53-
is_format_valid 'user' 'domain' 'aliases' 'ip' 'proxy_ext'
53+
is_format_valid 'user' 'domain' 'aliases' 'ip' 'proxy_ext' 'restart'
5454
is_object_valid 'user' 'USER' "$user"
5555
is_object_unsuspended 'user' 'USER' "$user"
5656
is_package_full 'WEB_DOMAINS'

bin/v-add-web-domain-alias

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ if [ -z "$aliases" ]; then
4545
fi
4646

4747
check_args '3' "$#" 'USER DOMAIN ALIASES [RESTART]'
48-
is_format_valid 'user' 'domain' 'aliases'
48+
is_format_valid 'user' 'domain' 'aliases' 'restart'
4949
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
5050
is_object_valid 'user' 'USER' "$user"
5151
is_object_unsuspended 'user' 'USER' "$user"

0 commit comments

Comments
 (0)