# httpd -t
httpd: Syntax error on line 353 of /etc/httpd/conf/httpd.conf: Syntax error on line 5 of /etc/httpd/conf.d/security2.conf: Syntax error on line 6 of /etc/httpd/conf/modsecurity.d/zz_rules.conf: No matches for the wildcard '*.conf' in '/etc/httpd/conf/modsecurity.d/rules/modsecurity_crs-plesk', failing (use IncludeOptional if required)
apache2ctl -t
apache2: Syntax error on line 141 of /etc/apache2/apache2.conf: Syntax error on line 4 of /etc/apache2/mods-enabled/security2.conf: Syntax error on line 6 of /etc/apache2/modsecurity.d/zz_rules.conf: No matches for the wildcard '*.conf' in
'/etc/apache2/modsecurity.d/rules/tortix', failing (use IncludeOptional if required)
# vi /etc/httpd/conf/modsecurity.d/zz_rules.conf
AH00526: Syntax error on line 51 of /etc/apache2/plesk.conf.d/vhosts/example.com.conf:
SSLCertificateFile: file '/opt/psa/var/certificates/cert1Ape62' does not exist or is empty
# ls -l /usr/local/psa/var/certificates/cert1Ape62
...
-r-------- 1 root root 0 Mar 24 12:26 /opt/psa/var/certificates/cert1Ape62
# ls -l /opt/psa/var/certificates/cert1Ape62
...
-r-------- 1 root root 0 Mar 24 12:26 /opt/psa/var/certificates/cert1Ape62
# /usr/local/psa/admin/bin/httpdmng --reconfigure-domain example.com
...
ERR [panel] Apache config (14972022740.47990300) generation failed: Template_Exception: Syntax error on line 51 of /etc/httpd/conf/plesk.conf.d/ip_default/example.conf:
SSLCACertificateFile: file '/usr/local/psa/var/certificates/cert1Ape62' does not exist or is empty
# plesk repair fs -y -v
Checking Linux system files ......................................... [OK]
Checking virtual hosts' file system
There are incorrect permissions on some items in the system
directory for the domain 'example.com' .......................... [ERROR]
- Failed to stat
/var/www/vhosts/system/example.com/conf/webalizer.conf: No
such file or directory
Repairing incorrect permissions ................................. [FAILED]
- openat 'webalizer.conf' failed: No such file or directory
Failed to open safely
/var/www/vhosts/system/example.com/conf/webalizer.conf: No
such file or directory
ERR_CONNECTION_REFUSED
Syntax OK
Syntax OK
[client 203.0.113.2] ModSecurity: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_COOKIES_NAMES. [file "/etc/apache2/modsecurity.d/rules/comodo_free/26_Apps_WordPress.conf"] [line "155"] [id "225170"] [rev "3"] [msg "COMODO WAF: Sensitive Information Disclosure Vulnerability in WordPress 4.7 (CVE-2017-5487)||] [severity "CRITICAL"] [tag "CWAF"] [tag "WordPress"] [hostname "] [uri "/wp-json/wp/v2/users/1"] [unique_id "YR6l04Z@9OqHIdEQWcNAqwAAAEE"]
# ls -l /etc/httpd/conf/plesk.conf.d/vhosts/example.com.conf
lrwxrwxrwx 1 root root 55 Aug 7 13:36 /etc/httpd/conf/plesk.conf.d/vhosts/example.com.conf -> /var/www/vhosts/system/example.com/conf/httpd.conf
ls -l /var/www/vhosts/system/example.com/conf/httpd.conf
ls: cannot access /var/www/vhosts/system/example.com/conf/httpd.conf: No such file or directory
mkdir -p /root/plesk-backup-nginx/webmails
# mkdir -p /root/plesk-backup-nginx/vhosts
# mkdir -p /root/plesk-backup-apache/webmails
# mkdir -p /root/plesk-backup-apache/vhosts
# mv /etc/nginx/plesk.conf.d/vhosts/* /root/plesk-backup-nginx/vhosts/
# mv /etc/nginx/plesk.conf.d/webmails/* /root/plesk-backup-nginx/webmails
# mv /etc/httpd/conf/plesk.conf.d/vhosts/* /root/plesk-backup-apache/vhosts
# mv /etc/httpd/conf/plesk.conf.d/webmails/* /root/plesk-backup-apache/webmails/
# mkdir -p /root/pleskbackup/
# mv /etc/apache2/plesk.conf.d/vhosts/* /root/pleskbackup
# plesk sbin httpdmng --reconfigure-all
console
$ curl "https://api.vultr.com/v2/firewalls" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ curl "https://api.vultr.com/v2/firewalls" \
-X POST \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ vultr-cli firewall group create --description <label>
terraform
resource "vultr_firewall_group" "web" {
description = "web-fw"
}
resource "vultr_firewall_rule" "allow_http" {
firewall_group_id = vultr_firewall_group.web.id
protocol = "tcp"
port = "80"
ip_type = "v4"
subnet = "0.0.0.0"
subnet_size = 0
notes = "Allow HTTP"
}
3.Apply the configuration and observe the following output:console
$ curl "https://api.vultr.com/v2/firewalls" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
2.Send a GET request to the List Firewall Rules endpoint and note the target firewall rule ID in your output.console
$ curl "https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ curl "https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules/{firewall-rule-id}" \
-X DELETE \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ curl "https://api.vultr.com/v2/firewalls/{firewall-group-id}" \
-X DELETE \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ vultr-cli firewall group list
console
$ vultr-cli firewall rule list <firewall-group-id>
3.Delete the firewall rule.console
$ vultr-cli firewall rule delete <firewall-group-id> <firewall-rule-number>
console
$ vultr-cli firewall group delete <firewall-group-id>
terraform
resource "vultr_firewall_group" "web" {
description = "web-fw"
}
resource "vultr_firewall_rule" "allow_http" {
firewall_group_id = vultr_firewall_group.web.id
protocol = "tcp"
port = "80"
ip_type = "v4"
subnet = "0.0.0.0"
subnet_size = 0
notes = "Allow HTTP"
}
# To delete a specific rule, remove its block or run:
# terraform destroy -target vultr_firewall_rule.allow_http
# To delete the group (and its rules), remove the group block or run:
# terraform destroy -target vultr_firewall_group.web
console
$ curl "https://api.vultr.com/v2/firewalls" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ curl "https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
console
$ curl "https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules" \
-X POST \
-H "Authorization: Bearer ${VULTR_API_KEY}" \
-H "Content-Type: application/json" \
--data '{
"ip_type" : "<network-type>",
"protocol" : "<protocol>",
"port" : "<target-instance-port>",
"source" : "<source-address>",
"notes" : "<label>"
}'
Visit the List Firewall Rules API page to view additional attributes to apply on the firewall rule.console
$ vultr-cli firewall group list
console
$ vultr-cli firewall rule list <firewall-group-id>
console
$ vultr-cli firewall rule create --id=<firewall-group-id> --ip-type=<network-type> --protocol=<protocol> --source=<source-address> --port=<target-instance-port>
console
$ vultr-cli firewall group list
console
$ vultr-cli firewall rule list <firewall-group-id>
console
$ vultr-cli firewall rule create --id=<firewall-group-id> --ip-type=<network-type> --protocol=<protocol> --source=<source-address> --port=<target-instance-port>