{"id":36280,"date":"2019-10-31T22:10:39","date_gmt":"2019-10-31T19:10:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rukovodstvo-dlya-nachinayushhih-po-selinux\/"},"modified":"2019-10-31T22:10:39","modified_gmt":"2019-10-31T19:10:39","slug":"rukovodstvo-dlya-nachinayushhih-po-selinux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-po-selinux","title":{"rendered":"Beginner's guide to SELinux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Beginner&#039;s guide to SELinux\" src=\"\/wp-content\/uploads\/2019\/07\/4e1443c8b79a8dfa1b28fb6b6d0666bb.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>The translation of the article is prepared for the students of the course <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/31Eb\/\">Linux Security<\/a><\/noindex><\/em><\/p>\n<p>SELinux, or Security Enhanced Linux, is an advanced access control mechanism developed by the U.S. National Security Agency (NSA) to prevent malicious intrusions. It implements a mandatory access control (MAC) model over the existing discretionary access control (DAC) model, meaning permissions for reading, writing, and executing.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<p>SELinux has three modes:<\/p>\n<p><\/p>\n<ol>\n<li><strong>Enforcing<\/strong> \u2014 access is denied based on policy rules.<\/li>\n<li><strong>Permissive<\/strong> \u2014 logs actions that violate the policy, which would be denied in enforcing mode.<\/li>\n<li><strong>Disabled<\/strong> \u2014 SELinux is completely turned off.<\/li>\n<\/ol>\n<p><\/p>\n<p>By default, settings are located in <code>\/etc\/selinux\/config<\/code><\/p>\n<p><\/p>\n<h1 id=\"izmenenie-rezhimov-selinux\">Changing SELinux Modes<\/h1>\n<p><\/p>\n<p>To check the current mode, run <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ getenforce<\/code><\/pre>\n<p><\/p>\n<p>To change the mode to permissive, execute the following command <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ setenforce 0<\/code><\/pre>\n<p><\/p>\n<p>or, to change from <strong>permissive<\/strong> to <strong>to enforcing<\/strong>, run <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ setenforce 1<\/code><\/pre>\n<p><\/p>\n<p>If you need to completely disable SELinux, this can only be done through the configuration file <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ vi \/etc\/selinux\/config<\/code><\/pre>\n<p><\/p>\n<p>To disable it, change the SELINUX parameter as follows:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">SELINUX=disabled<\/code><\/pre>\n<p><\/p>\n<h1 id=\"nastroyka-selinux\">Configuring SELinux<\/h1>\n<p><\/p>\n<p>Each file and process is tagged with a SELinux context that contains additional information such as user, role, type, etc. If you are enabling SELinux for the first time, you need to set up the context and labels first. The process of assigning labels and context is known as labeling. To start labeling, change the mode in the configuration file to <strong>permissive<\/strong>.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ vi \/etc\/selinux\/config\nSELINUX=permissive<\/code><\/pre>\n<p><\/p>\n<p>After setting the mode <strong>permissive<\/strong>, create an empty hidden file named <code>.autorelabel<\/code><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ touch \/.autorelabel<\/code><\/pre>\n<p><\/p>\n<p>and reboot your computer<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ init 6<\/code><\/pre>\n<p><\/p>\n<p>Note: We use permissive mode for labeling since using enforcing mode may cause system crashes during reboot. <strong>permissive<\/strong> Don't worry if the boot gets stuck on a file; labeling takes some time. Once labeling is completed and your system has booted, you can go to the configuration file and set the mode <strong>to enforcing<\/strong> , and also run:<\/p>\n<p><\/p>\n<p>Now you have successfully enabled SELinux on your computer. <strong>to enforcing<\/strong>Monitoring logs<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ setenforce 1<\/code><\/pre>\n<p><\/p>\n<p>You have successfully enabled SELinux on your computer. <\/p>\n<p><\/p>\n<h1 id=\"monitorim-logi\">Monitoring logs<\/h1>\n<p><\/p>\n<p>You might have encountered some errors during labeling or while the system was running. To check whether your SELinux is functioning correctly and not blocking access to any port, application, etc., you need to review the logs. The SELinux log is located in <code>\/var\/log\/audit\/audit.log<\/code>, but you don't need to read it entirely to find errors. You can use the audit2why utility to search for errors. Run the following command:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ audit2why &lt; \/var\/log\/audit\/audit.log<\/code><\/pre>\n<p><\/p>\n<p>As a result, you will receive a list of errors. If there are no errors in the log, no messages will be displayed.<\/p>\n<p><\/p>\n<h1 id=\"nastroyka-politiki-selinux\">Configuring SELinux Policy<\/h1>\n<p><\/p>\n<p>SELinux policy is a set of rules that the SELinux security mechanism follows. The policy defines a set of rules for a specific environment. Now we will study how to configure policies to allow access to prohibited services.<\/p>\n<p><\/p>\n<h4 id=\"1-logicheskie-znacheniya-pereklyuchateli\">1. Boolean Values (Switches)<\/h4>\n<p><\/p>\n<p>Booleans allow changing parts of the policy at runtime, without needing to create new policies. They allow modifications without reloading or recompiling the SELinux policies.<\/p>\n<p><\/p>\n<p><strong>Example<\/strong><br \/>\nSuppose we want to share the user's home directory over FTP with read and write access, and we have already shared it, but when trying to access it we see nothing. This is because the SELinux policy prevents the FTP server from reading and writing to the user's home directory. We need to change the policy so that the FTP server can access home directories. Let's check if there are any switches for this by executing<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ semanage boolean -l<\/code><\/pre>\n<p><\/p>\n<p>This command will provide a list of available booleans with their current state (on or off) and description. You can refine your search by adding grep to find results related only to ftp:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ semanage boolean -l | grep ftp<\/code><\/pre>\n<p><\/p>\n<p>and you will find the following<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">ftp_home_dir -&gt; off       Allow ftp to read &amp; write file in user home directory<\/code><\/pre>\n<p><\/p>\n<p>This switch is off, so we will enable it using <code>setsebool ftp_home_dir on<\/code><\/p>\n<p><\/p>\n<p>Now our FTP daemon can access the user's home directory.<br \/>\nNote: You can also get a list of available booleans without descriptions by executing <code>getsebool -a<\/code><\/p>\n<p><\/p>\n<h4 id=\"2-metki-i-kontekst\">2. Labels and Context<\/h4>\n<p><\/p>\n<p>This is the most common way to implement SELinux policy. Each file, folder, process, and port is labeled with a SELinux context:<\/p>\n<p><\/p>\n<ul>\n<li>For files and directories, labels are stored as extended attributes in the file system and can be viewed using the following command:\n<pre><code class=\"plaintext\">$ ls -Z \/etc\/httpd<\/code><\/pre>\n<\/li>\n<li>For processes and ports, the kernel manages the labeling, and you can check these labels as follows:<\/li>\n<\/ul>\n<p><\/p>\n<p>a process<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ ps \u2013auxZ | grep httpd<\/code><\/pre>\n<p><\/p>\n<p>The<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ netstat -anpZ | grep httpd<\/code><\/pre>\n<p><\/p>\n<p><strong>Example<\/strong><br \/>\nNow, let's look at an example to better understand labels and context. Suppose we have <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/\"   title=\"web server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1142\">web server<\/a>, which is instead of a directory <code>\/var\/www\/html\/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \/home\/dan\/html\/<\/code>. SELinux will consider this a policy violation, and you will be unable to view your web pages. This is because we haven't set the security context associated with the HTML files. To view the default security context, use the following command:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ ls \u2013lz \/var\/www\/html\n -rw-r\u2014r\u2014. root root unconfined_u:object_r:httpd_sys_content_t:s0 \/var\/www\/html\/<\/code><\/pre>\n<p><\/p>\n<p>Here we obtained <code>httpd_sys_content_t<\/code> as the context for HTML files. We need to set this security context for our current directory, which currently has the following context:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">-rw-r\u2014r\u2014. dan dan system_u:object_r:user_home_t:s0 \/home\/dan\/html\/<\/code><\/pre>\n<p><\/p>\n<p>An alternative command to check the security context of a file or directory:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ semanage fcontext -l | grep '\/var\/www'<\/code><\/pre>\n<p><\/p>\n<p>We will also use semanage to change the context after we find the correct security context. To change the context of \/home\/dan\/html, execute the following commands:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ semanage fcontext -a -t httpd_sys_content_t '\/home\/dan\/html(\\\/.*)?'\n$ semanage fcontext -l | grep '\/home\/dan\/html'\n\/home\/dan\/html(\\\/.*)? all files system_u:object_r:httpd_sys_content_t:s0\n$ restorecon -Rv \/home\/dan\/html<\/code><\/pre>\n<p><\/p>\n<p>After the context is changed using semanage, the restorecon command will load the default context for files and directories. Our web server will now be able to read files from the folder <code>\/home\/dan\/html<\/code>, since the security context for this folder was changed to <code>httpd_sys_content_t<\/code>.<\/p>\n<p><\/p>\n<h4 id=\"3-sozdanie-lokalnyh-politik\">3. Creating Local Policies<\/h4>\n<p><\/p>\n<p>There may be situations where the above methods are ineffective for you, and you encounter errors (avc\/denial) in audit.log. When this happens, you need to create a local policy.<\/p>\n<p><\/p>\n<p>To resolve errors, you can create a local policy. For example, if we receive an error related to httpd (apache) or smbd (samba), we grep the errors and create a policy for them:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apache\n$ grep httpd_t \/var\/log\/audit\/audit.log | audit2allow -M http_policy\nsamba\n$ grep smbd_t \/var\/log\/audit\/audit.log | audit2allow -M smb_policy<\/code><\/pre>\n<p><\/p>\n<p>Here <code>http_policy<\/code> and <code>smb_policy<\/code> \u2014 these are the names of local policies we created. Now we need to load these created local policies into the current SELinux policy. This can be done as follows:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ semodule -I http_policy.pp\n$ semodule -I smb_policy.pp<\/code><\/pre>\n<p><\/p>\n<p>Our local policies have been loaded, and we should no longer receive any avc or denials in audit.log.<\/p>\n<p><em>This was my attempt to help you understand SELinux. I hope that after reading this article, you will feel more comfortable with SELinux.<\/em><\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/460387\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c Linux\u00bb SELinux \u0438\u043b\u0438 Security Enhanced Linux \u2014 \u044d\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0410\u0433\u0435\u043d\u0442\u0441\u0442\u0432\u043e\u043c \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0421\u0428\u0410 (\u0410\u041d\u0411 \u0421\u0428\u0410) \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0437\u043b\u043e\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0432\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u0439. \u041e\u043d \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e (\u0438\u043b\u0438 \u043c\u0430\u043d\u0434\u0430\u0442\u043d\u0443\u044e) \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c (\u0430\u043d\u0433\u043b. Mandatory Access Control, MAC) \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0441\u043a\u0440\u0435\u0446\u0438\u043e\u043d\u043d\u043e\u0439 (\u0438\u043b\u0438 \u0438\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439) \u043c\u043e\u0434\u0435\u043b\u0438 (\u0430\u043d\u0433\u043b. Discretionary Access Control, DAC), \u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27140,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36280","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-po-selinux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e SELinux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-po-selinux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:10:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:10:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Beginner's Guide to SELinux | ProHoster","description":"The translation of the article was prepared for students.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-po-selinux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e SELinux | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-po-selinux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:10:39+00:00","article:modified_time":"2019-10-31T19:10:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36280","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 15:05:39","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:47:35","updated":"2026-02-09 15:05:39","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/36280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=36280"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/36280\/revisions"}],"predecessor-version":[{"id":158345,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/36280\/revisions\/158345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/27140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=36280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=36280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=36280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}