{"id":1468,"date":"2019-12-30T23:36:18","date_gmt":"2019-12-30T14:36:18","guid":{"rendered":"https:\/\/oboki.net\/workspace\/?p=1468"},"modified":"2020-01-05T14:25:45","modified_gmt":"2020-01-05T05:25:45","slug":"brute-force-%eb%a1%9c%ea%b7%b8%ec%9d%b8-%ea%b3%b5%ea%b2%a9-%eb%b0%a9%ec%96%b4","status":"publish","type":"post","link":"https:\/\/oboki.net\/workspace\/wordpress\/brute-force-%eb%a1%9c%ea%b7%b8%ec%9d%b8-%ea%b3%b5%ea%b2%a9-%eb%b0%a9%ec%96%b4\/","title":{"rendered":"[WordPress] Brute Force \ub85c\uadf8\uc778 \uacf5\uaca9 \ubc29\uc5b4"},"content":{"rendered":"<p>\uc6f9\uc11c\ubc84 \uc6b4\uc601\uc790\ub77c\uba74 \ud558\ub8e8\uc5d0 \ud55c\ubc88\uc529\uc740 \uaf2d \uc11c\ubc84 \ubaa8\ub2c8\ud130\ub9c1\uc744 \ud574\ubd10\uc57c\ud560 \uac83 \uac19\ub2e4.<\/p>\n<p>\ud55c\ub3d9\uc548 wordress \uc11c\ubc84 \uad00\ub9ac\ub97c \uc548 \ud558\ub2e4\uac00 \uc624\ub79c\ub9cc\uc5d0 \uc11c\ubc84\uc5d0 \uc811\uc18d\ud574\ubd24\ub294\ub370, \uc138\uc0c1\uc5d0 secure \ub85c\uadf8\uc5d0 \uc218 \ub9cc \ubc88 \uc774\uc0c1\uc758 \ub9d0\ub3c4 \uc548\ub418\ub294 \ub85c\uadf8\uc778 \uc2dc\ub3c4\uac00 \uac10\uc9c0\ub418\uc5b4 \uc788\uc5c8\ub2e4.<\/p>\n<p>ssh\uc5d0\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud3ec\ud2b8\ud3ec\uc6cc\ub529\uc744 \ud574\ub480\uae30 \ub54c\ubb38\uc5d0 \uae30\ubcf8 \ud3ec\ud2b8(<code>22<\/code>)\uac00 \uc544\ub2cc \ub2e4\ub978 \ud3ec\ud2b8\ub85c \uc811\uc18d \uc2dc\ub3c4\ub97c \ud588\ub2e4\ub294 \uac83 \uc790\uccb4\uac00 \uc77c\ub2e8 \ucda9\uaca9\uc801\uc774\uc5c8\ub2e4. \uadf8\ub9ac\uace0 \uc544\ub798\uc640 \uac19\uc774 sshd \ub370\ubaac \uc124\uc815\uc5d0\uc11c root \ub85c\uadf8\uc778\uc740 \ub9c9\uc544\ub450\uc5c8\uc5c8\uace0, ssh \ub85c\uadf8\uc778\uc744 \ud560 \uc218 \uc788\ub294 \uc0ac\uc6a9\uc790\ub294 \ub531 \ud558\ub098\uc778 \uc0c1\ud0dc\uc5d0\uc11c \ud574\ub2f9 \uc0ac\uc6a9\uc790 id \ub97c \uc54c\uc544\ub0b4\ub294\uac74 \ubd88\uac00\ub2a5(?)\ud560 \uac83\uc774\ub77c \ubbff\uae30 \ub54c\ubb38\uc5d0 \ub6a4\ub838\uc744 \uac00\ub2a5\uc131\uc740 \uc5c6\uc5c8\uc744 \uac83\uc774\ub77c \uc0dd\uac01\ud558\uc9c0\ub9cc<\/p>\n<pre><code class=\"language-conf\">PermitRootLogin no\nAllowUsers  ${ALLOW_USER_NAME}<\/code><\/pre>\n<p>\ub0b4 \uc11c\ubc84\uc5d0 \uc778\uc99d \uc2dc\ub3c4\ub97c \uc218 \ub9cc \ubc88 \ud588\ub2e4\ub294 \uac83 \ucc28\uccb4\uac00 \ucc1c\ucc1c\ud574\uc11c \uc2a4\uc704\uce58 \ub808\ubca8\uc5d0\uc11c \uc0ac\uc124 ip \ub300\uc5ed\uc5d0\uc11c\ub9cc ssh \uc811\uadfc\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ubcc0\uacbd\ud588\ub2e4.<\/p>\n<hr \/>\n<p><\/p>\n<p>\ud639\uc2dc\ub098 \ud574\uc11c <code>access_log<\/code> \ub3c4 \ud655\uc778\ud574\ubd24\ub294\ub370, wordpress \ub77c\ub294 \uac00\uc7a5 \ud754\ud55c(?) \uc624\ud508\uc18c\uc2a4 \ud50c\ub7ab\ud3fc\uc744 \uc774\uc6a9\ud558\uac8c \ub418\uba74 \uadf8\ub9cc\ud07c \ud574\ud0b9\uc758 \uc704\ud5d8\uc774 \ud070 \uac74 \ub2f9\uc5f0\ud55c \uc77c\uc774\uaca0\uc9c0\ub9cc, \uc5ec\uae30\ub3c4 \uc218 \ub9cc \ubc88\uc758 \ub85c\uadf8\uc778 \uc2dc\ub3c4\uac00 \uac10\uc9c0\ub3fc \uc788\uc5c8\ub2e4.<\/p>\n<p>\uc544\uc774\ub514\ub294 \uc5b4\ub5bb\uac8c \uc54c\uc558\ub294\uace0 \ud558\ub2c8, <del>\uc774\uac83\ub3c4 access_log \ud328\ud134\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc5c8\ub2e4.<\/del> ,<code>https:\/\/$WP_URL\/?author=1<\/code> \uacfc \uac19\uc774 <code>?author=<\/code> \ud30c\ub77c\ubbf8\ud130\uc5d0 \uc22b\uc790\ub97c \ub300\uc785\ud574\ubcf4\uba74 <code>https:\/\/$WP_URL\/author\/1\ubc88\uc0ac\uc6a9\uc790\ub85c\uadf8\uc778ID<\/code> \uace0\uc720\uc8fc\uc18c\ub85c \ud3ec\uc6cc\ub529\ub418\uace0 \uc788\uc5c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ud574\ub2f9 \uc6cc\ub4dc\ud504\ub808\uc2a4 \uc0ac\uc774\ud2b8\uc5d0 \uba87\uba85\uc758 \uc0ac\uc6a9\uc790\uac00 \uc788\ub294\uc9c0 \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub294 \ubb34\uc5c7\uc778\uc9c0 \uc720\ucd94\uac00 \uac00\ub2a5\ud558\ub2e4.<\/p>\n<p>\ub85c\uadf8\uc778 \uc2dc\ub3c4\ub97c \ud55c \uc678\ubd80 ip \uc911\uc5d0\uc11c <code>wp-login.php<\/code> \uacbd\ub85c\uc5d0 \uc5f0\uc18d\uc801\uc73c\ub85c \uc811\uadfc\ud55c \uc774\ud6c4\uc5d0 <code>wp-admin.php<\/code>\uacbd\ub85c\uc5d0 \uc811\uc18d \uc131\uacf5\ud55c \uacbd\uc6b0\uac00 \uc5c6\uc5c8\uae30 \ub54c\ubb38\uc5d0 \ud574\ud0b9\uc5d0 \uc131\uacf5\ud558\uc9c0\ub294 \ubabb\ud588\ub2e4\uace0 \ud655\uc2e0\ud558\uba74\uc11c\ub3c4 \uc5b4\uca0b\ub4e0 \ub0b4 \uc11c\ubc84\uac00 \uc774\ub7f0 \uac00\ub2a5\uc131\uc744 \uc5f4\uc5b4\ub450\uc5b4\uc11c\ub294 \uc548\ub418\uaca0\ub2e4\ub294 \uc0dd\uac01\uc774 \ub4e4\uc5c8\ub2e4.<\/p>\n<p>\ucc38\uace0\ub85c \uc694\uc998 \ub300\ubd80\ubd84\uc758 \ube44\ubc00\ubc88\ud638 \ud504\ub85c\ud30c\uc77c\uc740 \uc544\ub798\uc640 \uac19\uc740 \ubb38\uc790\ub4e4\uc758 \uc870\ud569\uc744 \uad8c\uc7a5\ud558\ub294\ub370,<\/p>\n<ol>\n<li>\ud2b9\uc218\ubb38\uc790 20\uac00\uc9c0<\/li>\n<li>\uc601\ubb38 \ud55c\uc790\ub9ac \uc218 26\uac00\uc9c0<\/li>\n<li>\uc22b\uc790 10 \uac00\uc9c0<\/li>\n<\/ol>\n<p>Brute Force \ub85c \ud480\uc5b4\ub0b4\uace0\uc790 \ud558\ub294 \uacbd\uc6b0, \ud55c \uc790\ub9ac \ube44\ubc00\ubc88\ud638\uc778 \uacbd\uc6b0\uc5d0 57\uac00\uc9c0\uc758 \uacbd\uc6b0\uc758 \uc218\uac00 \ubc1c\uc0dd\ud558\uace0 8\uc790\ub9ac\ub9cc \ub418\uc5b4\ub3c4 <code>57^8 =111,429,157,112,001<\/code> \ub9cc\ud07c\uc758 \uacbd\uc6b0\uc758 \uc218\ub97c \ub300\uc785\ud574\ubd10\uc57c \ud55c\ub2e4.<\/p>\n<p>\ud639\uc2dc\ub098 \ud558\ub294 \ub9c8\uc74c\uc5d0 \uadf8\ub3d9\uc548\uc758 access_log \ub97c elasticsearch \uc5d0 \uc0c9\uc778\uc2dc\ucf1c\uc11c \uc9d1\uacc4\ub97c \ud574\ubcf4\ub2c8<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2019\/12\/kibana_wp-login.php_.jpg\" alt=\"\" \/><\/p>\n<p>\uac00\uc7a5 \ub9ce\uc774 \uc2dc\ub3c4\ud55c \ub0a0\uc774 8\ub9cc\ud68c \uc815\ub3c4\uc774\uace0, \uc774\ub7f0 \ub85c\uadf8\uc778 \uacf5\uaca9\uc744 \uc2dc\ub3c4\ud55c ip \ub85c \uadf8\ub8f9\ud551 \uce74\uc6b4\ud2b8\ub97c \ud588\uc744 \ub54c\uc5d0\ub3c4 \ud131\uc5c6\uc774 \ubd80\uc871\ud55c \uc22b\uc790\uac00 \ub098\uc654\uae30 \ub54c\ubb38\uc5d0 \ub2e4\ud589\ud788\ub3c4 \uc9c0\uae08\uae4c\uc9c0\ub294 \ud138\ub9ac\uc9c0 \uc54a\uc558\uaca0\uc9c0..?<\/p>\n<hr \/>\n<p><\/p>\n<p>elasticsearch \uc5d0 access_log \uc778\ub371\uc2a4\ub97c \ub9cc\ub4dc\ub294 \ub370\uc5d0\ub294 \uc544\ub798\uc640 \uac19\uc740 \uc778\ub371\uc2a4 \ud15c\ud50c\ub9bf\uacfc python  \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \ub9cc\ub4e4\uc5b4\uc11c \uc774\uc6a9\ud588\ub2e4. <code>filebeat<\/code>\ub97c \uc774\uc6a9\ud574\uc11c \uac04\ud3b8\ud558\uac8c \uc218\uc9d1\ud558\uace0, \uae30\ubcf8\uc801\uc778 \ubd84\uc11d\ub9cc \ud574\ubcf4\ub824\uace0 \ud588\ub358\uac74\ub370, filebeat\ub97c \uc774\uc6a9\ud588\ub354\ub2c8 \uc0c9\uc778\ud558\ub294 \uc2dc\uc810\uc744 <code>@timestamp \ud544\ub4dc<\/code>\ub85c \ub9cc\ub4e4\uace0 \uc774\uac78 kibana \uc5d0\uc11c <code>index pattern<\/code>\uc758 \uae30\ubcf8 \uc2dc\uac04 \ucd95\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \ubb38\uc81c\uac00 \uc788\uc5c8\ub2e4. \uc5b4\uca0b\ub4e0 \uc5ec\ub7ec \uc608\uc678 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud574\uc11c \ub355\uc9c0\ub355\uc9c0 \uc544\ub798\uc640 \uac19\uc774 \ud648\uc11c\ubc84\uc758 access_log \ub97c elasticsearch \uc778\ub371\uc2a4\ub85c \ub9cc\ub4e4 \uc218 \uc788\uc5c8\ub2e4.<\/p>\n<h3>Index Template<\/h3>\n<pre><code class=\"language-bash\">curl -XPUT &quot;localhost:9200\/_template\/access_log?pretty&quot; -H &#039;Content-Type: application\/json&#039; -d&#039;\n{\n    &quot;template&quot; : &quot;access_log&quot;\n    , &quot;settings&quot;: {\n        &quot;number_of_shards&quot;: 1\n        , &quot;number_of_replicas&quot;: &quot;0&quot;\n        ,&quot;refresh_interval&quot;: &quot;10s&quot;\n        }\n        , &quot;mappings&quot; : { \n            &quot;properties&quot;: {\n            &quot;ip&quot;: {\n                &quot;type&quot;: &quot;text&quot;\n            },\n            &quot;log_tmst&quot;: {\n                &quot;type&quot;: &quot;date&quot;,\n                &quot;format&quot;: &quot;yyyy-MM-dd HH:mm:ss&quot;\n            },\n            &quot;mothod&quot;: {\n                &quot;type&quot;: &quot;keyword&quot;\n            },\n            &quot;url_addr&quot;: {\n                &quot;type&quot;: &quot;text&quot;\n            },\n            &quot;http&quot;: {\n                &quot;type&quot;: &quot;keyword&quot;\n            },\n            &quot;res_cd&quot;: {\n                &quot;type&quot;: &quot;keyword&quot;\n            },\n            &quot;bytes&quot;: {\n                &quot;type&quot;: &quot;long&quot;\n            }\n        }\n    }\n}\n&#039;<\/code><\/pre>\n<h3>Index Access Log<\/h3>\n<pre><code class=\"language-py\">import re\nimport datetime\n\ndef dateconv(d):\n    return datetime.datetime.strptime(d,&quot;%d\/%b\/%Y:%H:%M:%S %z&quot;).strftime(&quot;%Y-%m-%d %H:%M:%S&quot;)\n\ndata = []\nwith open(&#039;\/var\/log\/www\/access_log&#039;) as f:\n    l = sum(1 for line in f)\n    print(l)\n    f.seek(0)\n    for _ in range(l):\n        try:\n            line = f.readline()\n            ipaddr = re.search(r&#039;\\d+\\.\\d+\\.\\d+\\.\\d+&#039;,line).group()\n            timest = re.search(r&#039;(?&lt;=\\[).*(?=\\]\\s&quot;)&#039;,line).group()\n            request = re.search(r&#039;&quot;.*&quot;&#039;,line).group()\n            if request == &#039;&quot;-&quot;&#039; or request == &#039;&quot;&quot;&#039; or request == &#039;&quot;admin&quot;&#039; or request == &#039;&quot;quit&quot;&#039;:\n                method, urladdr, http = &#039;&#039;, request, &#039;&#039;\n            else:\n                method = re.search(r&#039;(?&lt;=&quot;)\\S+(?=\\s)&#039;,request).group()\n                request = request[len(method)+2:]\n                urladdr = re.search(r&#039;.*(?=(\\sHTTP|&quot;))&#039;,request).group()\n                request = request[len(urladdr):]\n            http = re.search(r&#039;(HTTP.*|.*)(?=&quot;$)&#039;,request).group()\n            response = re.search(r&#039;(?&lt;=\\s)\\S+\\s\\S+$&#039;,line).group()\n            rescd = re.search(r&#039;.*(?=\\s)&#039;,response).group()\n            bytes = re.search(r&#039;(?&lt;=\\s).*&#039;,response).group()\n            if rescd == &#039;-&#039;: rescd = 0\n            if bytes == &#039;-&#039;: bytes = 0\n            d = {&quot;ip&quot;:ipaddr\n            , &quot;log_tmst&quot;:dateconv(timest)\n            , &quot;method&quot;:method\n            , &quot;url_addr&quot;:urladdr\n            , &quot;http&quot;:http\n            , &quot;res_cd&quot;:rescd\n            , &quot;bytes&quot;:bytes\n            }\n            data.append(d)\n        except AttributeError:\n            print(line)\n            break\n        except ValueError:\n            print(line)\n            break\n\nactions = [\n{\n&quot;_index&quot;: &quot;access_log&quot;\n, &quot;_type&quot;: &quot;_doc&quot;\n, &quot;_source&quot;: d\n}\nfor d in data\n]\n\n#import json\n#print(json.dumps(actions,indent=4))\n\nfrom elasticsearch import Elasticsearch\nfrom elasticsearch import helpers\nes_client = Elasticsearch([&quot;localhost:9200&quot;],timeout=300)\nres = helpers.bulk(es_client, actions)\nprint(res)<\/code><\/pre>\n<h2>\ud2b9\uc815 \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc \ud5c8\uc6a9<\/h2>\n<p>\uc5b4\uca0b\ub4e0 \uc774\ub7f0 \ub85c\uadf8\uc778 \uc2dc\ub3c4\uac00 \ub4e4\uc5b4\uc624\ub294 \uac83 \uc790\uccb4\uac00 \uc11c\ubc84\uc5d0 \ubd80\ub2f4\uc774 \ub420 \uc218 \ubc16\uc5d0 \uc5c6\uace0, \ud68c\uc6d0\uc81c \uc11c\ube44\uc2a4\ub97c \ud558\ub294 \uc0ac\uc774\ud2b8\uac00 \uc544\ub2cc \uac1c\uc778 \ube14\ub85c\uadf8\uc5d0\ub294 \uc678\ubd80 \ub85c\uadf8\uc778 \uc790\uccb4\uac00 \ud544\uc694\ub3c4 \uc5c6\uae30\ub54c\ubb38\uc5d0 \ub85c\uadf8\uc778 \uc11c\ube44\uc2a4\ub97c \ub9c9\uc544\ubc84\ub9ac\ub294 \uac83\uc73c\ub85c \ud574\uacb0\ud558\uae30\ub85c \ud588\ub2e4.<\/p>\n<p>\uc544\ud30c\uce58 \uc6f9\uc11c\ubc84\ub294 <code>httpd_conf<\/code> \uc5d0\uc11c, \ud2b9\uc815 \uacbd\ub85c( <code>wp-login.php<\/code> )\uc5d0 \ub300\ud574 \ud2b9\uc815 ip \ub300\uc5ed\uc5d0\uc11c\ub9cc \uc811\uadfc\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \uc124\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-conf\">&lt;Files wp-login.php&gt;\nOrder Deny,Allow\nDeny from All\nAllow from xxx.xxx.xxx.xxx\n&lt;\/Files&gt;<\/code><\/pre>\n<p>\ucc38\uace0\ub85c <code>xmlrpc.php<\/code> \uacbd\ub85c\uc5d0\ub3c4 \uc811\uadfc\uc81c\ud55c\uc744 \ud574\ub450\ub294 \uac83\uc774 \uc88b\ub2e4. xmlrpc\ub294 \uc6f9\ube0c\ub77c\uc6b0\uc800\ubfd0\ub9cc \uc544\ub2c8\ub77c php \ub4f1 \uc5ec\ub7ec \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c wordpress \uc11c\ube44\uc2a4\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ucc44\ub110\uc778\ub370 \ub9e4\ud06c\ub85c\ub098 \uc6f9\ub4dc\ub77c\uc774\ubc84\ub97c \uc774\uc6a9\ud55c brute force \ub85c\uadf8\uc778 \uacf5\uaca9\ubcf4\ub2e4 \ub354 \ubb34\uc9c0\ub9c9\uc9c0\ud55c \uacf5\uaca9\uc774 \uac00\ub2a5\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0, \ud2b9\ubcc4\ud788 \uc774\uc6a9\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0\ub77c\uba74 \ub9c9\uc544\ub450\ub294 \uac8c \uc88b\uc744 \uac83 \uac19\ub2e4.<\/p>\n<p><del>xmlrpc\ub97c \ub9c9\uace0 \ub098\uc11c\ubd80\ud130\ub294 \uc6cc\ub4dc\ud504\ub808\uc2a4 \ubaa8\ubc14\uc77c \uc571\uc774 \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\ub2e4 \u315c<\/del><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2019\/12\/kibana_xmlrpc.php_.jpg\" alt=\"\" \/><\/p>\n<p>\ud648\uc11c\ubc84\ub97c \uc6b4\uc601\ud558\ub294 \uc0ac\ub78c \uc785\uc7a5\uc5d0\uc11c\ub294 \uc9d1\uc5d0\uc11c \ub0b4\ubd80 \ub124\ud2b8\uc6cc\ud06c\ub85c \ub85c\uadf8\uc778 \uc2dc\ucf1c\ub450\uace0 \uc678\ubd80\ub85c \ub098\uac00\uba74 \ud574\ub2f9 \uc138\uc158\uc774 \uc0b4\uc544\uc788\uae30 \ub54c\ubb38\uc5d0 \ud648\uc11c\ubc84 \uc6b4\uc601\uc790\ub294 \uc678\ubd80\uc5d0\uc11c \ub85c\uadf8\uc778\ud558\ub294 \ub370\uc5d0 \uc804\ud600 \ubb38\uc81c\uac00 \ub418\uc9c0 \uc54a\uc9c0\ub9cc, \ubcc4\ub3c4\uc758 \ud68c\uc6d0 \uad00\ub9ac\ub97c \ud558\ub294 \uc11c\ube44\uc2a4\uc758 \uacbd\uc6b0 \uc774\ub807\uac8c \ub85c\uadf8\uc778 \uc790\uccb4\ub97c \uc11c\ube44\uc2a4\ub97c \ub9c9\uc544\ubc84\ub824\uc11c\ub294 \uc548\ub418\uace0 \ub3d9\uc801\uc73c\ub85c \ube14\ub799\ub9ac\uc2a4\ud2b8\ub97c \uad00\ub9ac\ud55c\ub2e4\ub358\uc9c0 <code>reCAPTCHA<\/code> \ub97c \uc801\uc6a9\ud574\ubcfc \uc218 \uc788\uaca0\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc6f9\uc11c\ubc84 \uc6b4\uc601\uc790\ub77c\uba74 \ud558\ub8e8\uc5d0 \ud55c\ubc88\uc529\uc740 \uaf2d \uc11c\ubc84 \ubaa8\ub2c8\ud130\ub9c1\uc744 \ud574\ubd10\uc57c\ud560 \uac83 \uac19\ub2e4. \ud55c\ub3d9\uc548 wordress \uc11c\ubc84 \uad00\ub9ac\ub97c \uc548 \ud558\ub2e4\uac00 \uc624\ub79c\ub9cc\uc5d0 \uc11c\ubc84\uc5d0 \uc811\uc18d\ud574\ubd24\ub294\ub370, \uc138\uc0c1\uc5d0 secure \ub85c\uadf8\uc5d0 \uc218 \ub9cc \ubc88 \uc774\uc0c1\uc758 \ub9d0\ub3c4 \uc548\ub418\ub294 \ub85c\uadf8\uc778 \uc2dc\ub3c4\uac00 \uac10\uc9c0\ub418\uc5b4 \uc788\uc5c8\ub2e4. ssh\uc5d0\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud3ec\ud2b8\ud3ec\uc6cc\ub529\uc744 \ud574\ub480\uae30 \ub54c\ubb38\uc5d0 \uae30\ubcf8 \ud3ec\ud2b8(22)\uac00 \uc544\ub2cc \ub2e4\ub978 \ud3ec\ud2b8\ub85c \uc811\uc18d \uc2dc\ub3c4\ub97c \ud588\ub2e4\ub294 \uac83 \uc790\uccb4\uac00 \uc77c\ub2e8 \ucda9\uaca9\uc801\uc774\uc5c8\ub2e4. \uadf8\ub9ac\uace0 \uc544\ub798\uc640 \uac19\uc774 sshd \ub370\ubaac \uc124\uc815\uc5d0\uc11c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"class_list":["post-1468","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/comments?post=1468"}],"version-history":[{"count":0,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1468\/revisions"}],"wp:attachment":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/media?parent=1468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/categories?post=1468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/tags?post=1468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}