{"id":105247,"date":"2026-09-15T07:00:22","date_gmt":"2026-09-14T23:00:22","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/105247.html"},"modified":"2026-09-15T07:00:22","modified_gmt":"2026-09-14T23:00:22","slug":"linux-%e5%ae%89%e5%85%a8%e5%8a%a0%e5%9b%ba%e5%ae%8c%e6%95%b4%e7%af%87%ef%bc%9a%e4%bb%8e-ssh%e3%80%81%e9%98%b2%e7%81%ab%e5%a2%99%e5%88%b0selinux-apparmor-%e4%b8%8e%e5%ae%a1%e8%ae%a1","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/105247.html","title":{"rendered":"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1"},"content":{"rendered":"<p>\u300c\u5bc6\u94a5\u6cc4\u9732\u4ecd\u88ab\u626b\u7aef\u53e3\u7206\u7834\u300d\u300csudo NOPASSWD \u5168\u6743\u9650\u300d\u300c\u9632\u706b\u5899\u5f00\u4e86\u4f46 Docker \u7ed5\u8fc7\u300d\u2014\u2014\u52a0\u56fa\u5931\u8d25\u591a\u5728 \u9ed8\u8ba4\u914d\u7f6e\u672a\u6539\u3001\u89c4\u5219\u987a\u5e8f\u9519\u8bef\u3001MAC \u672a Enforcing\u3002\u672c\u6587\u6309 OpenSSH\u3001firewalld\/nftables\u3001auditd \u771f\u5b9e\u8def\u5f84\u5c55\u5f00\u3002<\/p>\n<h3>\u6e90\u7801\u951a\u70b9<\/h3>\n<table>\n<tr>\u8def\u5f84 \/ \u914d\u7f6e\u4f5c\u7528<\/tr>\n<tbody>\n<tr>\n<td>\/etc\/ssh\/sshd_config<\/td>\n<td>SSH \u670d\u52a1\u7aef<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/ssh\/ssh_config<\/td>\n<td>SSH \u5ba2\u6237\u7aef<\/td>\n<\/tr>\n<tr>\n<td>man sshd_config<\/td>\n<td>\u6307\u4ee4\u8bf4\u660e<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/sudoers<\/td>\n<td>sudo \u4e3b\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/sudoers.d\/<\/td>\n<td>\u7247\u6bb5<\/td>\n<\/tr>\n<tr>\n<td>visudo<\/td>\n<td>\u8bed\u6cd5\u6821\u9a8c<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/firewalld\/<\/td>\n<td>firewalld zone<\/td>\n<\/tr>\n<tr>\n<td>man firewalld.richlanguage<\/td>\n<td>\u5bcc\u89c4\u5219<\/td>\n<\/tr>\n<tr>\n<td>nft list ruleset<\/td>\n<td>nftables<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/nftables.conf<\/td>\n<td>nft \u6301\u4e45\u5316<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/fail2ban\/jail.local<\/td>\n<td>fail2ban<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/selinux\/config<\/td>\n<td>SELinux \u6a21\u5f0f<\/td>\n<\/tr>\n<tr>\n<td>getenforce \/ semanage<\/td>\n<td>SELinux<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/apparmor.d\/<\/td>\n<td>AppArmor profile<\/td>\n<\/tr>\n<tr>\n<td>aa-status<\/td>\n<td>AppArmor<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/audit\/auditd.conf<\/td>\n<td>auditd<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/audit\/rules.d\/<\/td>\n<td>\u5ba1\u8ba1\u89c4\u5219<\/td>\n<\/tr>\n<tr>\n<td>ausearch \/ aureport<\/td>\n<td>\u5ba1\u8ba1\u67e5\u8be2<\/td>\n<\/tr>\n<tr>\n<td>\/etc\/sysctl.d\/<\/td>\n<td>\u5185\u6838\u5b89\u5168\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>\/var\/log\/auth.log \u6216 secure<\/td>\n<td>\u8ba4\u8bc1\u65e5\u5fd7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-Ei<\/span> <span class=\"token string\">&#039;permitroot|password|pubkey&#039;<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token function\">sudo<\/span> -l<span class=\"token punctuation\">;<\/span> firewall-cmd &#8211;list-all <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">||<\/span> nft list ruleset <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h3>\u8c03\u7528\u94fe<\/h3>\n<h4>SSH \u8ba4\u8bc1<\/h4>\n<p>\u6e32\u67d3\u9519\u8bef: Mermaid \u6e32\u67d3\u5931\u8d25: Parse error on line 4:<br \/>\n&#8230;d Accept    S &#8211;&gt; V{\u8ba4\u8bc1}    V &#8211;&gt;|Pubke<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-^<br \/>\nExpecting &#039;SQE&#039;, &#039;DOUBLECIRCLEEND&#039;, &#039;PE&#039;, &#039;-)&#039;, &#039;STADIUMEND&#039;, &#039;SUBROUTINEEND&#039;, &#039;PIPE&#039;, &#039;CYLINDEREND&#039;, &#039;DIAMOND_STOP&#039;, &#039;TAGEND&#039;, &#039;TRAPEND&#039;, &#039;INVTRAPEND&#039;, &#039;UNICODE_TEXT&#039;, &#039;TEXT&#039;, &#039;TAGSTART&#039;, got &#039;DIAMOND_START&#039;<\/p>\n<h4>\u9632\u706b\u5899 zone<\/h4>\n<p>#mermaid-svg-S4h5ITerxiym8u1E{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-S4h5ITerxiym8u1E .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-S4h5ITerxiym8u1E .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-S4h5ITerxiym8u1E .error-icon{fill:#552222;}#mermaid-svg-S4h5ITerxiym8u1E .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-S4h5ITerxiym8u1E .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-S4h5ITerxiym8u1E .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-S4h5ITerxiym8u1E .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-S4h5ITerxiym8u1E .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-S4h5ITerxiym8u1E .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-S4h5ITerxiym8u1E .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-S4h5ITerxiym8u1E .marker{fill:#333333;stroke:#333333;}#mermaid-svg-S4h5ITerxiym8u1E .marker.cross{stroke:#333333;}#mermaid-svg-S4h5ITerxiym8u1E svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-S4h5ITerxiym8u1E p{margin:0;}#mermaid-svg-S4h5ITerxiym8u1E .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-S4h5ITerxiym8u1E .cluster-label text{fill:#333;}#mermaid-svg-S4h5ITerxiym8u1E .cluster-label span{color:#333;}#mermaid-svg-S4h5ITerxiym8u1E .cluster-label span p{background-color:transparent;}#mermaid-svg-S4h5ITerxiym8u1E .label text,#mermaid-svg-S4h5ITerxiym8u1E span{fill:#333;color:#333;}#mermaid-svg-S4h5ITerxiym8u1E .node rect,#mermaid-svg-S4h5ITerxiym8u1E .node circle,#mermaid-svg-S4h5ITerxiym8u1E .node ellipse,#mermaid-svg-S4h5ITerxiym8u1E .node polygon,#mermaid-svg-S4h5ITerxiym8u1E .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-S4h5ITerxiym8u1E .rough-node .label text,#mermaid-svg-S4h5ITerxiym8u1E .node .label text,#mermaid-svg-S4h5ITerxiym8u1E .image-shape .label,#mermaid-svg-S4h5ITerxiym8u1E .icon-shape .label{text-anchor:middle;}#mermaid-svg-S4h5ITerxiym8u1E .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-S4h5ITerxiym8u1E .rough-node .label,#mermaid-svg-S4h5ITerxiym8u1E .node .label,#mermaid-svg-S4h5ITerxiym8u1E .image-shape .label,#mermaid-svg-S4h5ITerxiym8u1E .icon-shape .label{text-align:center;}#mermaid-svg-S4h5ITerxiym8u1E .node.clickable{cursor:pointer;}#mermaid-svg-S4h5ITerxiym8u1E .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-S4h5ITerxiym8u1E .arrowheadPath{fill:#333333;}#mermaid-svg-S4h5ITerxiym8u1E .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-S4h5ITerxiym8u1E .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-S4h5ITerxiym8u1E .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-S4h5ITerxiym8u1E .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-S4h5ITerxiym8u1E .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-S4h5ITerxiym8u1E .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-S4h5ITerxiym8u1E .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-S4h5ITerxiym8u1E .cluster text{fill:#333;}#mermaid-svg-S4h5ITerxiym8u1E .cluster span{color:#333;}#mermaid-svg-S4h5ITerxiym8u1E div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-S4h5ITerxiym8u1E .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-S4h5ITerxiym8u1E rect.text{fill:none;stroke-width:0;}#mermaid-svg-S4h5ITerxiym8u1E .icon-shape,#mermaid-svg-S4h5ITerxiym8u1E .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-S4h5ITerxiym8u1E .icon-shape p,#mermaid-svg-S4h5ITerxiym8u1E .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-S4h5ITerxiym8u1E .icon-shape rect,#mermaid-svg-S4h5ITerxiym8u1E .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-S4h5ITerxiym8u1E .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-S4h5ITerxiym8u1E .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-S4h5ITerxiym8u1E :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<span class=\"edgeLabel\"><\/span><span class=\"edgeLabel\"><\/span><span class=\"edgeLabel\"><\/span><span class=\"edgeLabel\"><\/span><span class=\"edgeLabel\"><\/span><span class=\"nodeLabel\"><\/p>\n<p>\u5305<\/p>\n<p><\/span><span class=\"nodeLabel\"><\/p>\n<p>nftables\/iptables<\/p>\n<p><\/span><span class=\"nodeLabel\"><\/p>\n<p>firewalld zone<\/p>\n<p><\/span><span class=\"nodeLabel\"><\/p>\n<p>service\/port\/rich rule<\/p>\n<p><\/span><span class=\"nodeLabel\"><\/p>\n<p>ACCEPT\/DROP<\/p>\n<p><\/span><span class=\"nodeLabel\"><\/p>\n<p>Docker DNAT<\/p>\n<p><\/span><\/p>\n<h4>auditd \u4e8b\u4ef6<\/h4>\n<p>auditdkernel auditsyscallauditdkernel auditsyscall#mermaid-svg-56VZtVifGJU1OfV1{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-56VZtVifGJU1OfV1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-56VZtVifGJU1OfV1 .error-icon{fill:#552222;}#mermaid-svg-56VZtVifGJU1OfV1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-56VZtVifGJU1OfV1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-56VZtVifGJU1OfV1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-56VZtVifGJU1OfV1 .marker.cross{stroke:#333333;}#mermaid-svg-56VZtVifGJU1OfV1 svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-56VZtVifGJU1OfV1 p{margin:0;}#mermaid-svg-56VZtVifGJU1OfV1 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-56VZtVifGJU1OfV1 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-svg-56VZtVifGJU1OfV1 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-56VZtVifGJU1OfV1 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-56VZtVifGJU1OfV1 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-56VZtVifGJU1OfV1 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-56VZtVifGJU1OfV1 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-56VZtVifGJU1OfV1 .sequenceNumber{fill:white;}#mermaid-svg-56VZtVifGJU1OfV1 #sequencenumber{fill:#333;}#mermaid-svg-56VZtVifGJU1OfV1 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-56VZtVifGJU1OfV1 .messageText{fill:#333;stroke:none;}#mermaid-svg-56VZtVifGJU1OfV1 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-56VZtVifGJU1OfV1 .labelText,#mermaid-svg-56VZtVifGJU1OfV1 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-56VZtVifGJU1OfV1 .loopText,#mermaid-svg-56VZtVifGJU1OfV1 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-56VZtVifGJU1OfV1 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-56VZtVifGJU1OfV1 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-56VZtVifGJU1OfV1 .noteText,#mermaid-svg-56VZtVifGJU1OfV1 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-56VZtVifGJU1OfV1 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-56VZtVifGJU1OfV1 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-56VZtVifGJU1OfV1 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-56VZtVifGJU1OfV1 .actorPopupMenu{position:absolute;}#mermaid-svg-56VZtVifGJU1OfV1 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 \/ 0.4));}#mermaid-svg-56VZtVifGJU1OfV1 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-56VZtVifGJU1OfV1 .actor-man circle,#mermaid-svg-56VZtVifGJU1OfV1 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-56VZtVifGJU1OfV1 :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}\u5339\u914d rules.dnetlink\/var\/log\/audit\/audit.log<\/p>\n<h3>\u91cd\u70b9\u77e5\u8bc6<\/h3>\n<h4>\u6700\u5c0f\u6743\u9650\u539f\u5219<\/h4>\n<p>\u8d26\u6237&#xff1a;\u7981\u7528\u65e0\u7528\u8d26\u53f7&#xff1b;\u670d\u52a1\u7528\u4e13\u7528\u7cfb\u7edf\u7528\u6237&#xff1b;\u7981\u6b62\u5171\u4eab\u79c1\u94a5\u3002<\/p>\n<p>\u6587\u4ef6&#xff1a;\/etc\/shadow 600&#xff1b;SSH \u79c1\u94a5 600&#xff1b;\u76ee\u5f55 750\u3002\u5b9a\u671f\u5ba1\u8ba1 SUID\/SGID\u3002<\/p>\n<p><span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;($3&#061;&#061;0){print}&#039;<\/span> \/etc\/passwd<br \/>\n<span class=\"token function\">find<\/span> \/ <span class=\"token parameter variable\">-perm<\/span> <span class=\"token parameter variable\">-4000<\/span> <span class=\"token parameter variable\">-type<\/span> f <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token function\">find<\/span> \/home <span class=\"token parameter variable\">-name<\/span> id_rsa <span class=\"token parameter variable\">-exec<\/span> <span class=\"token function\">ls<\/span> <span class=\"token parameter variable\">-l<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">\\\\<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>SSH \u52a0\u56fa<\/h4>\n<p>\u63a8\u8350&#xff1a;PermitRootLogin no\u3001PasswordAuthentication no\u3001PubkeyAuthentication yes\u3002<\/p>\n<p>\u9650\u5236\u7528\u6237&#xff1a;AllowUsers deploy \u6216 AllowGroups sshusers&#xff1b;MaxAuthTries 3\u3002<\/p>\n<p><span class=\"token comment\"># \/etc\/ssh\/sshd_config<\/span><br \/>\nPermitRootLogin no<br \/>\nPasswordAuthentication no<br \/>\nPubkeyAuthentication <span class=\"token function\">yes<\/span><br \/>\nMaxAuthTries <span class=\"token number\">3<\/span><br \/>\nAllowUsers deploy<br \/>\nsshd <span class=\"token parameter variable\">-t<\/span> <span class=\"token operator\">&amp;&amp;<\/span> systemctl reload sshd<br \/>\nsshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-i<\/span> permitroot<\/p>\n<h4>sudo \u914d\u7f6e<\/h4>\n<p>\u7528 visudo \u7f16\u8f91&#xff1b;NOPASSWD \u4ec5\u5fc5\u8981\u65f6\u4e14 \u547d\u4ee4\u767d\u540d\u5355&#xff0c;\u7981\u6b62 ALL\u3002<\/p>\n<p>Defaults logfile&#061;\/var\/log\/sudo.log \u7559\u75d5&#xff1b;requiretty \u81ea\u52a8\u5316\u73af\u5883\u5e38\u9700\u5173\u95ed\u3002<\/p>\n<p><span class=\"token comment\"># \/etc\/sudoers.d\/deploy<\/span><br \/>\ndeploy <span class=\"token assign-left variable\">ALL<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span>ALL<span class=\"token punctuation\">)<\/span> NOPASSWD: \/bin\/systemctl reload nginx<br \/>\n<span class=\"token function\">sudo<\/span> <span class=\"token parameter variable\">-l<\/span> <span class=\"token parameter variable\">-U<\/span> deploy<br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token function\">sudo<\/span> \/var\/log\/auth.log <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span><\/p>\n<h4>firewalld \u4e0e nftables<\/h4>\n<p>firewalld&#xff1a;&#8211;permanent \u5199\u5165 XML&#xff0c;&#8211;reload \u751f\u6548\u3002\u9ed8\u8ba4 zone \u7ed1\u5b9a\u63a5\u53e3\u3002<\/p>\n<p>Docker \u53ef\u80fd\u63d2\u5165 DOCKER \u94fe\u7ed5\u8fc7 firewalld \u76f4\u89c9&#xff1b;\u9700 firewall-cmd &#8211;permanent &#8211;zone&#061;trusted &#8211;change-interface&#061;docker0 \u7b49\u7b56\u7565\u3002<\/p>\n<p>firewall-cmd &#8211;get-active-zones<br \/>\nfirewall-cmd &#8211;list-all <span class=\"token parameter variable\">&#8211;zone<\/span><span class=\"token operator\">&#061;<\/span>public<br \/>\nfirewall-cmd <span class=\"token parameter variable\">&#8211;permanent<\/span> &#8211;remove-service<span class=\"token operator\">&#061;<\/span>cockpit<br \/>\nfirewall-cmd <span class=\"token parameter variable\">&#8211;reload<\/span><br \/>\nnft list ruleset<\/p>\n<h4>fail2ban<\/h4>\n<p>\u8bfb auth \u65e5\u5fd7\u5339\u914d\u5931\u8d25\u6b21\u6570&#xff0c;\u8c03\u7528 firewall ban IP\u3002<\/p>\n<p>jail.local \u8986\u76d6\u9ed8\u8ba4&#xff1b;filter \u5728 \/etc\/fail2ban\/filter.d\/\u3002<\/p>\n<p><span class=\"token comment\"># \/etc\/fail2ban\/jail.local<\/span><br \/>\n<span class=\"token punctuation\">[<\/span>sshd<span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token assign-left variable\">enabled<\/span><span class=\"token operator\">&#061;<\/span>true<br \/>\n<span class=\"token assign-left variable\">maxretry<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><br \/>\n<span class=\"token assign-left variable\">bantime<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">3600<\/span><br \/>\nfail2ban-client status sshd<\/p>\n<h4>SELinux<\/h4>\n<p>\u6a21\u5f0f Enforcing\/Permissive\/Disabled\u3002\u5bb9\u5668\/\u81ea\u5b9a\u4e49\u7aef\u53e3\u9700 semanage port&#xff1b;\u6587\u4ef6\u4e0a\u4e0b\u6587 semanage fcontext &#043; restorecon\u3002<\/p>\n<p>AVC \u62d2\u7edd&#xff1a;ausearch -m avc -ts recent&#xff1b;audit2allow \u751f\u6210\u7b56\u7565&#xff08;\u9700\u4eba\u5de5\u5ba1&#xff09;\u3002<\/p>\n<p>getenforce<br \/>\nsemanage port <span class=\"token parameter variable\">-l<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> http<br \/>\nsemanage fcontext <span class=\"token parameter variable\">-a<\/span> <span class=\"token parameter variable\">-t<\/span> httpd_sys_content_t <span class=\"token string\">&#039;\/web(\/.*)?&#039;<\/span><br \/>\nrestorecon <span class=\"token parameter variable\">-Rv<\/span> \/web<br \/>\nausearch <span class=\"token parameter variable\">-m<\/span> avc <span class=\"token parameter variable\">-ts<\/span> recent<\/p>\n<h4>AppArmor<\/h4>\n<p>Ubuntu \u5e38\u89c1\u3002profile \u5728 \/etc\/apparmor.d\/&#xff1b;complain \u6a21\u5f0f\u53ea\u8bb0\u4e0d\u62e6\u3002<\/p>\n<p>aa-status<br \/>\napparmor_parser <span class=\"token parameter variable\">-r<\/span> \/etc\/apparmor.d\/usr.sbin.nginx<br \/>\njournalctl <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-i<\/span> apparmor <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span><\/p>\n<h4>auditd \u5ba1\u8ba1<\/h4>\n<p>\u89c4\u5219 \/etc\/audit\/rules.d\/&#xff1b;augenrules &#8211;load \u52a0\u8f7d\u3002\u8ddf\u8e2a\u6587\u4ef6 -w path -p wa -k key\u3002<\/p>\n<p><span class=\"token parameter variable\">-w<\/span> \/etc\/passwd <span class=\"token parameter variable\">-p<\/span> wa <span class=\"token parameter variable\">-k<\/span> passwd_changes<br \/>\n<span class=\"token parameter variable\">-a<\/span> always,exit <span class=\"token parameter variable\">-F<\/span> <span class=\"token assign-left variable\">arch<\/span><span class=\"token operator\">&#061;<\/span>b64 <span class=\"token parameter variable\">-S<\/span> execve <span class=\"token parameter variable\">-k<\/span> <span class=\"token builtin class-name\">exec<\/span><br \/>\naugenrules <span class=\"token parameter variable\">&#8211;load<\/span><br \/>\nausearch <span class=\"token parameter variable\">-k<\/span> passwd_changes<br \/>\naureport <span class=\"token parameter variable\">-x<\/span> <span class=\"token parameter variable\">&#8211;summary<\/span><\/p>\n<h4>\u5185\u6838 sysctl \u5b89\u5168<\/h4>\n<p>\u9632 spoof\u3001icmp redirect\u3001syn flood \u7b49&#xff1b;ASLR randomize_va_space&#061;2\u3002<\/p>\n<p><span class=\"token comment\"># \/etc\/sysctl.d\/99-hardening.conf<\/span><br \/>\n<span class=\"token assign-left variable\">net.ipv4.conf.all.rp_filter<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><br \/>\n<span class=\"token assign-left variable\">net.ipv4.conf.all.accept_redirects<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">0<\/span><br \/>\n<span class=\"token assign-left variable\">kernel.randomize_va_space<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><br \/>\n<span class=\"token assign-left variable\">kernel.kptr_restrict<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><br \/>\n<span class=\"token assign-left variable\">fs.protected_symlinks<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">&#8211;system<\/span><\/p>\n<h4>\u66f4\u65b0\u4e0e\u6f0f\u6d1e\u54cd\u5e94<\/h4>\n<p>\u8ba2\u9605 CVE&#xff1b;unattended-upgrades \u6216\u955c\u50cf\u4ed3&#xff1b;\u5185\u6838\/glibc\/OpenSSL \u4f18\u5148\u3002<\/p>\n<p><span class=\"token function\">apt<\/span> list <span class=\"token parameter variable\">&#8211;upgradable<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">||<\/span> yum check-update<br \/>\nneeds-restarting <span class=\"token parameter variable\">-r<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">reboot<\/span>  <span class=\"token comment\"># \u5185\u6838\u66f4\u65b0\u540e<\/span><\/p>\n<h4>\u5e38\u89c1\u8bef\u914d<\/h4>\n<p>PermitRootLogin yes\u3001chmod 777\u3001sudo NOPASSWD:ALL\u3001firewalld \u505c\u3001SELinux Disabled\u3001auditd \u672a\u542f\u2014\u2014\u4e94\u6761\u6700\u5e38\u89c1\u751f\u4ea7\u4e8b\u6545\u6e90\u3002<\/p>\n<table>\n<tr>\u9879\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u8bef\u914d<\/td>\n<td>\u540e\u679c<\/td>\n<\/tr>\n<tr>\n<td>root SSH<\/td>\n<td>\u7206\u7834\u9762<\/td>\n<\/tr>\n<tr>\n<td>777 \u76ee\u5f55<\/td>\n<td>\u4efb\u610f\u5199<\/td>\n<\/tr>\n<tr>\n<td>NOPASSWD ALL<\/td>\n<td>\u7b49\u4ef7 root<\/td>\n<\/tr>\n<tr>\n<td>firewalld \u505c<\/td>\n<td>\u5168\u7aef\u53e3\u66b4\u9732<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u52a0\u56fa\u5b9e\u8df5\u6df1\u5316<\/h4>\n<h5>\u5b9e\u8df5 1&#xff1a;SSH \u5bc6\u94a5\u6743\u9650<\/h5>\n<p>\u8fc7\u5bbd sshd \u62d2\u7edd<\/p>\n<p><span class=\"token function\">chmod<\/span> <span class=\"token number\">700<\/span> ~\/.ssh<span class=\"token punctuation\">;<\/span> <span class=\"token function\">chmod<\/span> <span class=\"token number\">600<\/span> ~\/.ssh\/authorized_keys<\/p>\n<h5>\u5b9e\u8df5 2&#xff1a;ssh-audit<\/h5>\n<p>\u7b97\u6cd5\u5f3a\u5ea6\u5ba1\u8ba1<\/p>\n<p>ssh-audit localhost <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">||<\/span> <span class=\"token boolean\">true<\/span><\/p>\n<h5>\u5b9e\u8df5 3&#xff1a;PAM faillock<\/h5>\n<p>\u8d26\u6237\u9501\u5b9a<\/p>\n<p>faillock <span class=\"token parameter variable\">&#8211;user<\/span> badguy <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5b9e\u8df5 4&#xff1a;sftp chroot<\/h5>\n<p>\u9694\u79bb\u4e0a\u4f20<\/p>\n<p><span class=\"token comment\"># Match Group sftp \/ ChrootDirectory \/srv\/sftp<\/span><\/p>\n<h5>\u5b9e\u8df5 5&#xff1a;hosts.allow<\/h5>\n<p>TCP Wrappers<\/p>\n<p><span class=\"token function\">grep<\/span> sshd \/etc\/hosts.allow <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5b9e\u8df5 6&#xff1a;AIDE<\/h5>\n<p>\u5b8c\u6574\u6027<\/p>\n<p>aide <span class=\"token parameter variable\">&#8211;check<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5b9e\u8df5 7&#xff1a;lynis<\/h5>\n<p>\u57fa\u7ebf\u626b\u63cf<\/p>\n<p>lynis audit system <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><\/p>\n<h5>\u5b9e\u8df5 8&#xff1a;TLS \u63a2\u6d4b<\/h5>\n<p>cipher \u7248\u672c<\/p>\n<p>openssl s_client <span class=\"token parameter variable\">-connect<\/span> host:443 <span class=\"token parameter variable\">-brief<\/span> <span class=\"token operator\">&lt;<\/span>\/dev\/null<\/p>\n<h5>\u5b9e\u8df5 9&#xff1a;iptables legacy<\/h5>\n<p>\u4e0e nft \u5e76\u5b58<\/p>\n<p>iptables <span class=\"token parameter variable\">-L<\/span> <span class=\"token parameter variable\">-n<\/span> <span class=\"token parameter variable\">-v<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h5>\u5b9e\u8df5 10&#xff1a;podman rootless<\/h5>\n<p>\u65e0 root \u8fb9\u754c<\/p>\n<p><span class=\"token function\">podman<\/span> unshare <span class=\"token function\">cat<\/span> \/proc\/self\/cgroup <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h5>\u5b9e\u8df5 11&#xff1a;SSH ForceCommand<\/h5>\n<p>\u9650\u5236 shell<\/p>\n<p><span class=\"token comment\"># ForceCommand \/usr\/bin\/ls<\/span><\/p>\n<h5>\u5b9e\u8df5 12&#xff1a;SSH Match User<\/h5>\n<p>\u6309\u7528\u6237\u7b56\u7565<\/p>\n<p><span class=\"token comment\"># Match User alice \/ AllowTcpForwarding no<\/span><\/p>\n<h5>\u5b9e\u8df5 13&#xff1a;firewalld rich<\/h5>\n<p>\u6e90 IP \u767d\u540d\u5355<\/p>\n<p>firewall-cmd &#8211;add-rich-rule<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;rule family&#061;ipv4 source address&#061;10.0.0.0\/8 accept&#039;<\/span><\/p>\n<h5>\u5b9e\u8df5 14&#xff1a;nft drop all<\/h5>\n<p>\u9ed8\u8ba4\u62d2\u7edd<\/p>\n<p>nft <span class=\"token function\">add<\/span> rule inet filter input drop<\/p>\n<h5>\u5b9e\u8df5 15&#xff1a;fail2ban unban<\/h5>\n<p>\u89e3\u5c01<\/p>\n<p>fail2ban-client <span class=\"token builtin class-name\">set<\/span> sshd unbanip <span class=\"token number\">1.2<\/span>.3.4<\/p>\n<h5>\u5b9e\u8df5 16&#xff1a;audit execve<\/h5>\n<p>\u8c01 exec \u4e86\u4ec0\u4e48<\/p>\n<p>ausearch <span class=\"token parameter variable\">-m<\/span> EXECVE <span class=\"token parameter variable\">-ts<\/span> today<\/p>\n<h5>\u5b9e\u8df5 17&#xff1a;audit login<\/h5>\n<p>\u767b\u5f55\u4e8b\u4ef6<\/p>\n<p>ausearch <span class=\"token parameter variable\">-m<\/span> USER_LOGIN <span class=\"token parameter variable\">-ts<\/span> today<\/p>\n<h5>\u5b9e\u8df5 18&#xff1a;chattr &#043;i<\/h5>\n<p>\u9632\u7be1\u6539\u6807\u5fd7<\/p>\n<p>lsattr \/etc\/passwd<\/p>\n<h5>\u5b9e\u8df5 19&#xff1a;passwd -l<\/h5>\n<p>\u9501\u5b9a\u8d26\u6237<\/p>\n<p><span class=\"token function\">passwd<\/span> <span class=\"token parameter variable\">-l<\/span> olduser<\/p>\n<h5>\u5b9e\u8df5 20&#xff1a;userdel<\/h5>\n<p>\u5220\u6237\u53ca\u5bb6\u76ee\u5f55<\/p>\n<p><span class=\"token function\">userdel<\/span> <span class=\"token parameter variable\">-r<\/span> serviceacct<\/p>\n<h5>\u5b9e\u8df5 21&#xff1a;groupmod<\/h5>\n<p>sudo \u7ec4\u6210\u5458<\/p>\n<p>getent group <span class=\"token function\">sudo<\/span><\/p>\n<h5>\u5b9e\u8df5 22&#xff1a;umask<\/h5>\n<p>\u9ed8\u8ba4\u521b\u5efa\u6743\u9650<\/p>\n<p><span class=\"token builtin class-name\">umask<\/span> 027<\/p>\n<h5>\u5b9e\u8df5 23&#xff1a;pam_tally2<\/h5>\n<p>PAM \u6a21\u5757<\/p>\n<p><span class=\"token comment\"># \u65e7\u7cfb\u7edf\u5931\u8d25\u8ba1\u6570<\/span><\/p>\n<h5>\u5b9e\u8df5 24&#xff1a;sshd AllowAgentForwarding<\/h5>\n<p>\u4ee3\u7406\u8f6c\u53d1<\/p>\n<p>sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> allowagentforwarding<\/p>\n<h5>\u5b9e\u8df5 25&#xff1a;sshd X11Forwarding<\/h5>\n<p>X11 \u8f6c\u53d1<\/p>\n<p>sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> x11forwarding<\/p>\n<h5>\u5b9e\u8df5 26&#xff1a;setroubleshoot<\/h5>\n<p>SELinux \u5efa\u8bae<\/p>\n<p>sealert <span class=\"token parameter variable\">-a<\/span> \/var\/log\/audit\/audit.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5b9e\u8df5 27&#xff1a;sepolicy generate<\/h5>\n<p>\u751f\u6210 SELinux \u6a21\u5757\u8349\u7a3f<\/p>\n<p>sepolicy generate <span class=\"token parameter variable\">&#8211;init<\/span> nginx<\/p>\n<h5>\u5b9e\u8df5 28&#xff1a;apparmor complain<\/h5>\n<p>\u8c03\u8bd5 profile<\/p>\n<p>aa-complain \/usr\/sbin\/nginx<\/p>\n<h5>\u5b9e\u8df5 29&#xff1a;apparmor enforce<\/h5>\n<p>\u5f3a\u5236\u6a21\u5f0f<\/p>\n<p>aa-enforce \/usr\/sbin\/nginx<\/p>\n<h5>\u5b9e\u8df5 30&#xff1a;auditd space<\/h5>\n<p>\u65e5\u5fd7\u8f6e\u8f6c<\/p>\n<p><span class=\"token function\">grep<\/span> max_log_file \/etc\/audit\/auditd.conf<\/p>\n<h3>CIS \u5206\u9879\u68c0\u67e5<\/h3>\n<h4>CIS 5.2 SSH \u670d\u52a1\u7aef<\/h4>\n<p>\u72ec\u7acb\u9879&#xff1a;\u7981\u6b62\u7a7a\u53e3\u4ee4\u3001\u9650\u5236 root\u3001\u5f3a MAC\u3002<\/p>\n<p>sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;\/permitrootlogin|permitemptypasswords|maxauthtries|logingracetime\/ {print}&#039;<\/span><br \/>\n<span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;\/^PermitRootLogin|^PasswordAuthentication|^MaxAuthTries|^LoginGraceTime\/ {print NR&#034;:&#034;$0}&#039;<\/span> \/etc\/ssh\/sshd_config<br \/>\n<span class=\"token function\">stat<\/span> <span class=\"token parameter variable\">-c<\/span> <span class=\"token string\">&#039;%a %U %G&#039;<\/span> \/etc\/ssh\/sshd_config<br \/>\n<span class=\"token function\">find<\/span> \/etc\/ssh <span class=\"token parameter variable\">-name<\/span> <span class=\"token string\">&#039;ssh_host_*_key&#039;<\/span> <span class=\"token parameter variable\">-exec<\/span> <span class=\"token function\">stat<\/span> <span class=\"token parameter variable\">-c<\/span> <span class=\"token string\">&#039;%a %n&#039;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">\\\\<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u671f\u671b&#xff1a;PermitRootLogin no&#xff1b;host key 600 root:root\u3002<\/p>\n<h4>CIS 5.3 sudo \u7b56\u7565<\/h4>\n<p>visudo <span class=\"token parameter variable\">-c<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-rE<\/span> <span class=\"token string\">&#039;NOPASSWD|ALL&#061;\\\\(ALL\\\\)|!authenticate&#039;<\/span> \/etc\/sudoers \/etc\/sudoers.d\/ <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;$3&#061;&#061;0 {print}&#039;<\/span> \/etc\/passwd<br \/>\ngetent group <span class=\"token function\">sudo<\/span> wheel<br \/>\nlastlog <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;$3!&#061;&#034;**Never logged in**&#034; {print}&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h4>CIS 3.5 \u9632\u706b\u5899\u4e0e nftables<\/h4>\n<p>systemctl is-enabled firewalld nftables <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nfirewall-cmd &#8211;get-default-zone <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nfirewall-cmd &#8211;list-all-zones <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-40<\/span><br \/>\nnft list ruleset <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-60<\/span><br \/>\nss <span class=\"token parameter variable\">-lntup<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;NR&#061;&#061;1 || \/0.0.0.0:|\\\\[::\\\\]:\/&#039;<\/span><\/p>\n<h4>CIS 1.6 SELinux \u72b6\u6001<\/h4>\n<p>getenforce<br \/>\n<span class=\"token function\">grep<\/span> ^SELINUX<span class=\"token operator\">&#061;<\/span> \/etc\/selinux\/config<br \/>\nsestatus<br \/>\nsemanage boolean <span class=\"token parameter variable\">-l<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-i<\/span> httpd <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\nausearch <span class=\"token parameter variable\">-m<\/span> avc <span class=\"token parameter variable\">-ts<\/span> recent <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><\/p>\n<h4>CIS 4.1 \u5ba1\u8ba1 daemon<\/h4>\n<p>systemctl is-active auditd<br \/>\nauditctl <span class=\"token parameter variable\">-l<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;^(max_log_file|space_left_action|admin_space_left_action)&#039;<\/span> \/etc\/audit\/auditd.conf<br \/>\naureport <span class=\"token parameter variable\">-s<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\n<span class=\"token function\">ls<\/span> <span class=\"token parameter variable\">-la<\/span> \/etc\/audit\/rules.d\/<\/p>\n<h4>CIS 3.3 \u5185\u6838\u7f51\u7edc sysctl<\/h4>\n<p><span class=\"token function\">sysctl<\/span> net.ipv4.ip_forward net.ipv4.conf.all.rp_filter net.ipv4.conf.all.accept_redirects<br \/>\n<span class=\"token function\">sysctl<\/span> net.ipv4.tcp_syncookies kernel.randomize_va_space kernel.kptr_restrict<br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> <span class=\"token builtin class-name\">.<\/span> \/etc\/sysctl.d\/*.conf <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-v<\/span> <span class=\"token string\">&#039;^#&#039;<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">&#8211;system<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span><span class=\"token file-descriptor important\">&amp;1<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><\/p>\n<h4>CIS 1.8 \u8865\u4e01\u4e0e\u8f6f\u4ef6\u6e90<\/h4>\n<p><span class=\"token function\">apt<\/span> list <span class=\"token parameter variable\">&#8211;upgradable<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\ndnf updateinfo list security <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token function\">rpm<\/span> <span class=\"token parameter variable\">-q<\/span> <span class=\"token parameter variable\">&#8211;changelog<\/span> kernel <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-5<\/span><br \/>\nunattended-upgrades <span class=\"token parameter variable\">-d<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-10<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> ^deb \/etc\/apt\/sources.list \/etc\/apt\/sources.list.d\/ <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>\u6f0f\u6d1e\u626b\u63cf\u4e0e SBOM<\/h4>\n<p><span class=\"token comment\"># Trivy \u4e3b\u673a&#043;\u955c\u50cf<\/span><br \/>\ntrivy rootfs \/<br \/>\ntrivy image <span class=\"token parameter variable\">&#8211;severity<\/span> HIGH,CRITICAL nginx:1.25<br \/>\n<span class=\"token comment\"># Grype<\/span><br \/>\nsyft dir:\/ <span class=\"token parameter variable\">-o<\/span> json <span class=\"token operator\">&gt;<\/span> sbom.json<br \/>\ngrype sbom:sbom.json<\/p>\n<p><span class=\"token comment\"># OpenSCAP<\/span><br \/>\noscap xccdf <span class=\"token builtin class-name\">eval<\/span> <span class=\"token parameter variable\">&#8211;profile<\/span> xccdf_org.ssgproject.content_profile_cis \/usr\/share\/xml\/scap\/ssg\/content\/ssg-*.xml <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-20<\/span><\/p>\n<h4>TLS \u8bc1\u4e66\u4e0e cipher \u5ba1\u8ba1<\/h4>\n<p>openssl s_client <span class=\"token parameter variable\">-connect<\/span> example.com:443 <span class=\"token parameter variable\">-servername<\/span> example.com <span class=\"token operator\">&lt;<\/span>\/dev\/null <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> openssl x509 <span class=\"token parameter variable\">-noout<\/span> <span class=\"token parameter variable\">-dates<\/span> <span class=\"token parameter variable\">-subject<\/span> <span class=\"token parameter variable\">-issuer<\/span><br \/>\ntestssl.sh <span class=\"token parameter variable\">&#8211;quiet<\/span> https:\/\/example.com <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;NOT ok|OK&#039;<\/span><br \/>\ncertbot certificates <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> SSLProtocol \/etc\/httpd \/etc\/nginx <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<p><span class=\"token comment\"># \u672c\u5730 PEM \u8fc7\u671f\u626b\u63cf<\/span><br \/>\n<span class=\"token function\">find<\/span> \/etc\/ssl \/etc\/pki <span class=\"token parameter variable\">-name<\/span> <span class=\"token string\">&#039;*.pem&#039;<\/span> <span class=\"token parameter variable\">-exec<\/span> openssl x509 <span class=\"token parameter variable\">-in<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token parameter variable\">-noout<\/span> <span class=\"token parameter variable\">-enddate<\/span> <span class=\"token punctuation\">\\\\<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>\u5bb9\u5668\u5bbf\u4e3b\u673a\u52a0\u56fa<\/h4>\n<p><span class=\"token function\">docker<\/span> info <span class=\"token parameter variable\">&#8211;format<\/span> <span class=\"token string\">&#039;{{.SecurityOptions}}&#039;<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;user.max_user_namespaces|kernel.unprivileged_userns_clone&#039;<\/span> \/proc\/sys\/*\/* <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nsystemctl show <span class=\"token function\">docker<\/span> <span class=\"token parameter variable\">-p<\/span> ExecStart <span class=\"token operator\">|<\/span> <span class=\"token function\">tr<\/span> <span class=\"token string\">&#039; &#039;<\/span> <span class=\"token string\">&#039;\\\\n&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> userns<br \/>\nauditctl <span class=\"token parameter variable\">-w<\/span> \/usr\/bin\/docker <span class=\"token parameter variable\">-p<\/span> wa <span class=\"token parameter variable\">-k<\/span> docker_bin<\/p>\n<table>\n<tr>\u9879\u5efa\u8bae\u547d\u4ee4<\/tr>\n<tbody>\n<tr>\n<td>\u5957\u63a5\u5b57<\/td>\n<td>root \u624d\u80fd\u8fde<\/td>\n<td>ls -l \/var\/run\/docker.sock<\/td>\n<\/tr>\n<tr>\n<td>\u7528\u6237\u547d\u540d\u7a7a\u95f4<\/td>\n<td>\u6309\u9700\u5173\u95ed<\/td>\n<td>sysctl kernel.unprivileged_userns_clone<\/td>\n<\/tr>\n<tr>\n<td>\u955c\u50cf\u7b7e\u540d<\/td>\n<td>cosign verify<\/td>\n<td>cosign verify &#8211;key cosign.pub img<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"token function\">podman<\/span> info <span class=\"token parameter variable\">&#8211;format<\/span> <span class=\"token string\">&#039;{{.Host.Security}}&#039;<\/span><br \/>\n<span class=\"token function\">grep<\/span> NOFILE \/etc\/systemd\/system\/docker.service.d\/*.conf <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>\u5e94\u6025\u54cd\u5e94\u53d6\u8bc1<\/h4>\n<p><span class=\"token comment\"># \u9694\u79bb\u4f46\u4fdd\u7559\u5185\u5b58&#xff08;\u82e5\u53ef\u884c&#xff09;<\/span><br \/>\n<span class=\"token function\">ip<\/span> <span class=\"token function\">link<\/span> <span class=\"token builtin class-name\">set<\/span> eth0 down<br \/>\nsystemctl stop sshd<br \/>\n<span class=\"token comment\"># \u5feb\u7167<\/span><br \/>\n<span class=\"token function\">tar<\/span> czf \/media\/usb\/evidence-<span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token function\">hostname<\/span><span class=\"token variable\">)<\/span><\/span>&#8211;<span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token function\">date<\/span> &#043;%F<span class=\"token variable\">)<\/span><\/span>.tgz \/var\/log\/auth.log \/var\/log\/audit\/audit.log \/root\/.ssh <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<p>last <span class=\"token parameter variable\">-20<\/span><br \/>\nlastb <span class=\"token parameter variable\">-20<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nausearch <span class=\"token parameter variable\">-m<\/span> USER_LOGIN <span class=\"token parameter variable\">-sv<\/span> no <span class=\"token parameter variable\">&#8211;interpret<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\nss <span class=\"token parameter variable\">-antp<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;$1&#061;&#061;&#034;ESTAB&#034;&#039;<\/span><br \/>\n<span class=\"token function\">lsof<\/span> <span class=\"token parameter variable\">-i<\/span> <span class=\"token parameter variable\">-P<\/span> <span class=\"token parameter variable\">-n<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-30<\/span><\/p>\n<p><span class=\"token comment\"># \u54c8\u5e0c\u53ef\u7591\u4e8c\u8fdb\u5236<\/span><br \/>\nsha256sum \/usr\/bin\/.hidden <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">rpm<\/span> <span class=\"token parameter variable\">-Vf<\/span> \/usr\/bin\/ss <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\ndebsums <span class=\"token parameter variable\">-c<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h4>\u8bef\u914d\u6848\u4f8b\u4e0e\u4fee\u590d<\/h4>\n<table>\n<tr>\u8bef\u914d\u68c0\u6d4b\u4fee\u590d<\/tr>\n<tbody>\n<tr>\n<td>\/etc\/ssh\/sshd_config \u672b\u5c3e PermitRootLogin yes \u8986\u76d6\u524d\u9762 no<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>&#096;sshd -T<\/td>\n<\/tr>\n<tr>\n<td>firewalld public \u533a &#8211;add-service&#061;ssh \u4f46\u672a &#8211;permanent<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>\u91cd\u542f\u4e22\u89c4\u5219&#xff1b;firewall-cmd &#8211;runtime-to-permanent\u3002<\/td>\n<\/tr>\n<tr>\n<td>audit \u89c4\u5219 -e 2 \u672a\u751f\u6548<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>auditctl -s \u770b enabled&#xff1b;fix \/etc\/audit\/rules.d\/ \u540e augenrules &#8211;load\u3002<\/td>\n<\/tr>\n<tr>\n<td>net.ipv4.ip_forward&#061;1 \u5fd8\u8bb0\u5173<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>\u975e\u7f51\u5173\u4e3b\u673a&#xff1a;sysctl -w net.ipv4.ip_forward&#061;0 \u5199\u5165 sysctl.d\u3002<\/td>\n<\/tr>\n<tr>\n<td>Docker 0.0.0.0:2375 \u65e0 TLS<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>&#096;ss -lntp<\/td>\n<\/tr>\n<tr>\n<td>sudoers %wheel ALL&#061;(ALL) NOPASSWD: ALL<\/td>\n<td>\u89c1\u4e0a\u8282\u547d\u4ee4<\/td>\n<td>grep NOPASSWD \/etc\/sudoers.d\/*&#xff1b;\u6539\u56de\u9700\u5bc6\u7801\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"token comment\"># \u4e00\u952e\u5bfc\u51fa\u52a0\u56fa\u5feb\u7167&#xff08;\u4e0d\u542b\u5bc6\u94a5&#xff09;<\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#039;&#061;&#061; sshd -T &#061;&#061;&#039;<\/span><span class=\"token punctuation\">;<\/span> sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-30<\/span><br \/>\n  <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#039;&#061;&#061; sudoers &#061;&#061;&#039;<\/span><span class=\"token punctuation\">;<\/span> visudo <span class=\"token parameter variable\">-c<\/span><br \/>\n  <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#039;&#061;&#061; firewall &#061;&#061;&#039;<\/span><span class=\"token punctuation\">;<\/span> nft list ruleset <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\n  <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#039;&#061;&#061; selinux &#061;&#061;&#039;<\/span><span class=\"token punctuation\">;<\/span> getenforce<br \/>\n  <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#039;&#061;&#061; audit &#061;&#061;&#039;<\/span><span class=\"token punctuation\">;<\/span> auditctl <span class=\"token parameter variable\">-s<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token operator\">&gt;<\/span> \/tmp\/hardening-snapshot.txt<\/p>\n<h5>\u52a0\u56fa\u6f14\u7ec3 1&#xff1a;SSH \u5bc6\u94a5\u8f6e\u6362<\/h5>\n<p><span class=\"token function\">find<\/span> \/etc\/ssh <span class=\"token parameter variable\">-name<\/span> <span class=\"token string\">&#039;ssh_host_*_key.pub&#039;<\/span> <span class=\"token parameter variable\">-exec<\/span> ssh-keygen <span class=\"token parameter variable\">-lf<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">\\\\<\/span><span class=\"token punctuation\">;<\/span><br \/>\nssh-keygen <span class=\"token parameter variable\">-t<\/span> ed25519 <span class=\"token parameter variable\">-f<\/span> \/etc\/ssh\/ssh_host_ed25519_key <span class=\"token parameter variable\">-N<\/span> <span class=\"token string\">&#039;&#039;<\/span><\/p>\n<h5>\u52a0\u56fa\u6f14\u7ec3 2&#xff1a;PAM faillock<\/h5>\n<p><span class=\"token function\">grep<\/span> pam_faillock \/etc\/pam.d\/system-auth \/etc\/pam.d\/password-auth <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nfaillock <span class=\"token parameter variable\">&#8211;user<\/span> baduser<\/p>\n<h5>\u52a0\u56fa\u6f14\u7ec3 3&#xff1a;chroot sftp<\/h5>\n<p><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-i<\/span> <span class=\"token function\">chroot<\/span> \/etc\/ssh\/sshd_config<br \/>\nMatch Group sftpusers<br \/>\nChrootDirectory \/srv\/sftp\/%u<\/p>\n<h5>\u52a0\u56fa\u6f14\u7ec3 4&#xff1a;nft \u9650\u6d41<\/h5>\n<p>nft list chain inet filter input <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nnft <span class=\"token function\">add<\/span> rule inet filter input tcp dport <span class=\"token number\">22<\/span> ct state new limit rate <span class=\"token number\">5<\/span>\/minute accept<\/p>\n<h5>\u52a0\u56fa\u6f14\u7ec3 5&#xff1a;AIDE \u5b8c\u6574\u6027<\/h5>\n<p>aide <span class=\"token parameter variable\">&#8211;check<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><br \/>\naideinit <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token function\">mv<\/span> \/var\/lib\/aide\/aide.db.new.gz \/var\/lib\/aide\/aide.db.gz<\/p>\n<h4>CIS 5.4 \u8d26\u6237\u4e0e\u53e3\u4ee4\u7b56\u7565<\/h4>\n<p>login.defs \u63a7\u5236 PASS_MAX_DAYS\u3001UMASK\u3002<\/p>\n<p><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;PASS_MAX_DAYS|PASS_MIN_DAYS|UMASK|ENCRYPT_METHOD&#039;<\/span> \/etc\/login.defs<br \/>\nchage <span class=\"token parameter variable\">-l<\/span> root<br \/>\n<span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;($2&#061;&#061;&#034;&#034; || $2&#061;&#061;&#034;!&#034;) {print}&#039;<\/span> \/etc\/shadow  <span class=\"token comment\"># \u7a7a\u53e3\u4ee4<\/span><br \/>\npam-auth-update <span class=\"token parameter variable\">&#8211;list<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>CIS 2.2 \u4e0d\u5fc5\u8981\u670d\u52a1<\/h4>\n<p>systemctl list-unit-files <span class=\"token parameter variable\">&#8211;state<\/span><span class=\"token operator\">&#061;<\/span>enabled <span class=\"token parameter variable\">&#8211;type<\/span><span class=\"token operator\">&#061;<\/span>service <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-Ei<\/span> <span class=\"token string\">&#039;telnet|rsh|ftp|tftp&#039;<\/span><br \/>\nss <span class=\"token parameter variable\">-lntup<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;:23|:21|:513&#039;<\/span><br \/>\n<span class=\"token function\">chkconfig<\/span> <span class=\"token parameter variable\">&#8211;list<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> on<br \/>\n<span class=\"token function\">rpm<\/span> <span class=\"token parameter variable\">-q<\/span> telnet-server vsftpd <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>CIS 4.2 \u65e5\u5fd7\u6743\u9650<\/h4>\n<p><span class=\"token function\">ls<\/span> <span class=\"token parameter variable\">-l<\/span> \/var\/log\/secure \/var\/log\/auth.log \/var\/log\/audit\/audit.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">grep<\/span> ^$ \/etc\/rsyslog.conf \/etc\/rsyslog.d\/*.conf <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\nsystemctl status rsyslog journald <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-6<\/span><br \/>\njournalctl <span class=\"token parameter variable\">&#8211;verify<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-3<\/span><\/p>\n<h4>CIS 3.7 \u7981\u7528\u65e0\u7ebf<\/h4>\n<p>nmcli radio wifi <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nrfkill list<br \/>\nlsmod <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;bluetooth|wifi&#039;<\/span><br \/>\nsystemctl is-enabled bluetooth <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>CIS 6.1 \u6587\u4ef6\u6743\u9650\u5ba1\u8ba1<\/h4>\n<p><span class=\"token function\">find<\/span> \/etc <span class=\"token parameter variable\">-perm<\/span> \/077 <span class=\"token parameter variable\">-type<\/span> f <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-10<\/span><br \/>\n<span class=\"token function\">find<\/span> \/ <span class=\"token parameter variable\">-xdev<\/span> <span class=\"token parameter variable\">-nouser<\/span> <span class=\"token parameter variable\">-o<\/span> <span class=\"token parameter variable\">-nogroup<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token function\">rpm<\/span> <span class=\"token parameter variable\">-Va<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token string\">&#039;^..5&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\ndebsums <span class=\"token parameter variable\">-c<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h4>Lynis \u4e0e OpenVAS \u91c7\u6837<\/h4>\n<p>lynis audit system <span class=\"token parameter variable\">&#8211;quick<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-30<\/span><br \/>\n<span class=\"token function\">grep<\/span> Suggestion \/var\/log\/lynis.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-10<\/span><br \/>\ngvm-cli socket <span class=\"token parameter variable\">&#8211;xml<\/span> <span class=\"token string\">&#039;&lt;get_tasks\/&gt;&#039;<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h4>nginx\/apache TLS \u7247\u6bb5<\/h4>\n<p>nginx <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;ssl_protocols|ssl_ciphers|ssl_prefer&#039;<\/span><br \/>\napachectl <span class=\"token parameter variable\">-S<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> SSLCertificate \/etc\/httpd \/etc\/apache2 <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\nopenssl ciphers <span class=\"token parameter variable\">-v<\/span> <span class=\"token string\">&#039;ECDHE&#043;AESGCM&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h4>\u5bb9\u5668 runtime \u52a0\u56fa\u5bf9\u7167<\/h4>\n<table>\n<tr>\u68c0\u67e5\u547d\u4ee4\u671f\u671b<\/tr>\n<tbody>\n<tr>\n<td>seccomp<\/td>\n<td>docker inspect &#8211;format &#039;{{.HostConfig.SecurityOpt}}&#039; id<\/td>\n<td>\u975e unconfined<\/td>\n<\/tr>\n<tr>\n<td>cap drop<\/td>\n<td>docker inspect &#8211;format &#039;{{.HostConfig.CapDrop}}&#039; id<\/td>\n<td>\u53bb\u6389 ALL \u518d add<\/td>\n<\/tr>\n<tr>\n<td>read-only root<\/td>\n<td>&#8211;read-only<\/td>\n<td>\u771f<\/td>\n<\/tr>\n<tr>\n<td>AppArmor<\/td>\n<td>docker inspect .HostConfig.SecurityOpt<\/td>\n<td>docker-default<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"token function\">docker<\/span> run <span class=\"token parameter variable\">&#8211;rm<\/span> &#8211;read-only &#8211;cap-drop ALL alpine <span class=\"token function\">id<\/span><br \/>\ncrictl inspect <span class=\"token variable\"><span class=\"token variable\">$(<\/span>crictl <span class=\"token function\">ps<\/span> <span class=\"token parameter variable\">-q<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-1<\/span><span class=\"token variable\">)<\/span><\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> jq .info.runtimeSpec.linux.security<\/p>\n<h4>\u5e94\u6025\u9694\u79bb playbook<\/h4>\n<p><span class=\"token comment\"># 1. \u65ad\u5916\u7f51\u4fdd\u5185\u7f51\u6392\u969c<\/span><br \/>\niptables <span class=\"token parameter variable\">-I<\/span> OUTPUT <span class=\"token number\">1<\/span> <span class=\"token parameter variable\">-d<\/span> <span class=\"token number\">10.0<\/span>.0.0\/8 <span class=\"token parameter variable\">-j<\/span> ACCEPT<br \/>\niptables <span class=\"token parameter variable\">-A<\/span> OUTPUT <span class=\"token parameter variable\">-j<\/span> DROP<br \/>\n<span class=\"token comment\"># 2. \u4fdd\u7559\u5ba1\u8ba1<\/span><br \/>\nsystemctl restart auditd<br \/>\nauditctl <span class=\"token parameter variable\">-l<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token comment\"># 3. \u5bfc\u51fa\u8fde\u63a5<\/span><br \/>\nss <span class=\"token parameter variable\">-antp<\/span> <span class=\"token operator\">&gt;<\/span> \/root\/incident-ss.txt<\/p>\n<h4>\u8bef\u914d\u6df1\u5ea6\u6848\u4f8b<\/h4>\n<table>\n<tr>\u6848\u4f8b\u68c0\u6d4b\u4fee\u590d<\/tr>\n<tbody>\n<tr>\n<td>\/etc\/pam.d\/sshd \u7f3a pam_faillock<\/td>\n<td>grep faillock \/etc\/pam.d\/sshd<\/td>\n<td>\u590d\u5236 password-auth \u4e2d faillock \u6bb5<\/td>\n<\/tr>\n<tr>\n<td>journald \u672a\u6301\u4e45\u5316<\/td>\n<td>grep Storage \/etc\/systemd\/journald.conf<\/td>\n<td>Storage&#061;persistent \u540e restart journald<\/td>\n<\/tr>\n<tr>\n<td>IPv6 \u5168\u66b4\u9732<\/td>\n<td>&#096;ss -lntp6<\/td>\n<td>grep -v tcp6.*127&#096;<\/td>\n<\/tr>\n<tr>\n<td>world-writable cron<\/td>\n<td>find \/etc\/cron* -perm -002<\/td>\n<td>chmod o-w<\/td>\n<\/tr>\n<tr>\n<td>nginx \u4ee5 root \u8fd0\u884c<\/td>\n<td>&#096;ps -o user,cmd -C nginx<\/td>\n<td>head&#096;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>sshd <span class=\"token parameter variable\">-T<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-Ei<\/span> <span class=\"token string\">&#039;ciphers|macs|kexalgorithms&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tr<\/span> <span class=\"token string\">&#039;,&#039;<\/span> <span class=\"token string\">&#039;\\\\n&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-15<\/span><br \/>\nupdate-crypto-policies <span class=\"token parameter variable\">&#8211;show<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>\u5408\u89c4\u5feb\u7167\u547d\u4ee4\u7ec4<\/h4>\n<h5>\u5feb\u7167 1&#xff1a;\u8d26\u6237\u6307\u7eb9<\/h5>\n<p>getent <span class=\"token function\">passwd<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;$3&gt;&#061;1000 &amp;&amp; $3&lt;65534 {print $1,$3,$7}&#039;<\/span><\/p>\n<h5>\u5feb\u7167 2&#xff1a;\u76d1\u542c\u7aef\u53e3<\/h5>\n<p>ss <span class=\"token parameter variable\">-lntup<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;NR&gt;1{print $5,$7}&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">sort<\/span> <span class=\"token parameter variable\">-u<\/span><\/p>\n<h5>\u5feb\u7167 3&#xff1a;SUID \u5217\u8868<\/h5>\n<p><span class=\"token function\">find<\/span> \/usr \/bin <span class=\"token parameter variable\">-xdev<\/span> <span class=\"token parameter variable\">-perm<\/span> <span class=\"token parameter variable\">-4000<\/span> <span class=\"token parameter variable\">-type<\/span> f <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><\/p>\n<h5>\u5feb\u7167 4&#xff1a;\u8ba1\u5212\u4efb\u52a1<\/h5>\n<p>systemctl list-timers <span class=\"token parameter variable\">&#8211;all<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-15<\/span><\/p>\n<h5>\u5feb\u7167 5&#xff1a;\u5185\u6838\u6a21\u5757<\/h5>\n<p>lsmod <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;NR&gt;1{print $1,$2}&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">sort<\/span> <span class=\"token parameter variable\">-k2<\/span> <span class=\"token parameter variable\">-rn<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><\/p>\n<h5>\u5feb\u7167 6&#xff1a;\u6302\u8f7d\u9009\u9879<\/h5>\n<p>findmnt <span class=\"token parameter variable\">-lo<\/span> TARGET,OPTIONS <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-v<\/span> nodev<\/p>\n<h5>\u5feb\u7167 7&#xff1a;PAM \u6808<\/h5>\n<p><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-v<\/span> <span class=\"token string\">&#039;^#&#039;<\/span> \/etc\/pam.d\/sshd <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-10<\/span><\/p>\n<h5>\u5feb\u7167 8&#xff1a;DNS \u4fe1\u4efb<\/h5>\n<p>resolvectl domain <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<span class=\"token punctuation\">;<\/span> <span class=\"token function\">cat<\/span> \/etc\/resolv.conf<\/p>\n<h5>\u5feb\u7167 9&#xff1a;\u65f6\u95f4\u540c\u6b65<\/h5>\n<p>timedatectl show <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#039;NTPSynchronized|Timezone&#039;<\/span><\/p>\n<h5>\u5feb\u7167 10&#xff1a;\u5bb9\u5668\u5957\u63a5\u5b57<\/h5>\n<p><span class=\"token function\">ls<\/span> <span class=\"token parameter variable\">-l<\/span> \/var\/run\/docker.sock \/run\/podman\/podman.sock <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>SSH \u5ba2\u6237\u7aef\u52a0\u56fa<\/h4>\n<p><span class=\"token function\">ssh<\/span> <span class=\"token parameter variable\">-G<\/span> user&#064;host <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-Ei<\/span> <span class=\"token string\">&#039;ciphers|macs|hostkeyalgorithms&#039;<\/span><br \/>\n<span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-Ei<\/span> <span class=\"token string\">&#039;HashKnownHosts|StrictHostKeyChecking&#039;<\/span> \/etc\/ssh\/ssh_config \/etc\/ssh\/ssh_config.d\/* <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>sudo \u65e5\u5fd7\u4e0e I\/O \u65e5\u5fd7<\/h4>\n<p><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> logfile \/etc\/sudoers \/etc\/sudoers.d\/ <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">grep<\/span> iolog_dir \/etc\/sudoers <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\n<span class=\"token function\">tail<\/span> \/var\/log\/sudo.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h4>firewalld rich rule \u6837\u4f8b<\/h4>\n<p>firewall-cmd <span class=\"token parameter variable\">&#8211;permanent<\/span> &#8211;add-rich-rule<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;rule family&#061;ipv4 source address&#061;10.0.0.0\/8 port port&#061;22 protocol&#061;tcp accept&#039;<\/span><br \/>\nfirewall-cmd <span class=\"token parameter variable\">&#8211;reload<\/span><br \/>\nfirewall-cmd &#8211;list-rich-rules<\/p>\n<h4>audit \u5173\u952e\u89c4\u5219\u6837\u4f8b<\/h4>\n<p><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-r<\/span> execve \/etc\/audit\/rules.d\/<br \/>\nauditctl <span class=\"token parameter variable\">-w<\/span> \/etc\/passwd <span class=\"token parameter variable\">-p<\/span> wa <span class=\"token parameter variable\">-k<\/span> passwd_changes<br \/>\nausearch <span class=\"token parameter variable\">-k<\/span> passwd_changes <span class=\"token parameter variable\">-ts<\/span> recent <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span><\/p>\n<h4>sysctl \u786c\u5316\u7247\u6bb5\u6587\u4ef6<\/h4>\n<p><span class=\"token function\">cat<\/span> <span class=\"token operator\">&gt;<\/span> \/etc\/sysctl.d\/99-hardening.conf <span class=\"token operator\">&lt;&lt;<\/span><span class=\"token string\">&#039;EOF&#039;<br \/>\nnet.ipv4.conf.all.send_redirects &#061; 0<br \/>\nnet.ipv4.conf.all.accept_source_route &#061; 0<br \/>\nfs.protected_hardlinks &#061; 1<br \/>\nEOF<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">&#8211;system<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><\/p>\n<h5>\u5de5\u5177\u94fe 1&#xff1a;ModSecurity \u91c7\u6837<\/h5>\n<p>nginx <span class=\"token parameter variable\">-V<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span><span class=\"token file-descriptor important\">&amp;1<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-i<\/span> modsecurity<br \/>\n<span class=\"token function\">tail<\/span> \/var\/log\/modsec_audit.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5de5\u5177\u94fe 2&#xff1a;ClamAV \u66f4\u65b0<\/h5>\n<p>freshclam <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-3<\/span><br \/>\nclamscan <span class=\"token parameter variable\">-r<\/span> \/tmp <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-3<\/span><\/p>\n<h5>\u5de5\u5177\u94fe 3&#xff1a;RKHunter<\/h5>\n<p>rkhunter <span class=\"token parameter variable\">&#8211;check<\/span> <span class=\"token parameter variable\">&#8211;sk<\/span> <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><br \/>\n<span class=\"token function\">grep<\/span> Warning \/var\/log\/rkhunter.log <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<\/p>\n<h5>\u5de5\u5177\u94fe 4&#xff1a;USB \u5b58\u50a8\u7981<\/h5>\n<p><span class=\"token function\">grep<\/span> usb-storage \/etc\/modprobe.d\/* <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null<br \/>\nlsmod <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> usb_storage<\/p>\n<h5>\u5de5\u5177\u94fe 5&#xff1a;\u5bc6\u7801\u54c8\u5e0c<\/h5>\n<p><span class=\"token function\">grep<\/span> ENCRYPT_METHOD \/etc\/login.defs<br \/>\n<span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;{print $2}&#039;<\/span> \/etc\/shadow <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">cut<\/span> -c1-3<\/p>\n<h4>\u6700\u5c0f\u66b4\u9732\u670d\u52a1\u57fa\u7ebf<\/h4>\n<p>systemctl list-units <span class=\"token parameter variable\">&#8211;type<\/span><span class=\"token operator\">&#061;<\/span>service <span class=\"token parameter variable\">&#8211;state<\/span><span class=\"token operator\">&#061;<\/span>running &#8211;no-pager <span class=\"token operator\">|<\/span> <span class=\"token function\">wc<\/span> <span class=\"token parameter variable\">-l<\/span><br \/>\nss <span class=\"token parameter variable\">-lntup<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;NR&gt;1{print $5}&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">sort<\/span> <span class=\"token parameter variable\">-u<\/span><\/p>\n<h5>\u57fa\u7ebf\u5ef6\u4f38 1&#xff1a;\u7a7a\u53e3\u4ee4\u8d26\u6237<\/h5>\n<p><span class=\"token function\">awk<\/span> -F: <span class=\"token string\">&#039;($2&#061;&#061;&#034;&#034; || $2&#061;&#061;&#034;x&#034;) &amp;&amp; $1!&#061;&#034;root&#034; {print $1}&#039;<\/span> \/etc\/shadow<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300c\u5bc6\u94a5\u6cc4\u9732\u4ecd\u88ab\u626b\u7aef\u53e3\u7206\u7834\u300d\u300csudo NOPASSWD \u5168\u6743\u9650\u300d\u300c\u9632\u706b\u5899\u5f00\u4e86\u4f46 Docker \u7ed5\u8fc7\u300d\u2014\u2014\u52a0\u56fa\u5931\u8d25\u591a\u5728 \u9ed8\u8ba4\u914d\u7f6e\u672a\u6539\u3001\u89c4\u5219\u987a\u5e8f\u9519\u8bef\u3001MAC \u672a Enforcing\u3002\u672c\u6587\u6309 OpenSSH\u3001firewalld\/nftables\u3001auditd \u771f\u5b9e\u8def\u5f84\u5c55\u5f00\u3002<br \/>\n\u6e90\u7801\u951a\u70b9\u8def\u5f84 \/ \u914d\u7f6e\u4f5c\u7528\/etc\/ssh\/sshd_configSSH \u670d\u52a1\u7aef\/etc\/ssh\/ssh_configSSH \u5ba2\u6237\u7aefman sshd_config\u6307\u4ee4\u8bf4\u660e\/etc\/sudoerssudo \u4e3b\u914d\u7f6e<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[58,77,61],"topic":[],"class_list":["post-105247","post","type-post","status-publish","format-standard","hentry","category-server","tag-linux","tag-ssh","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/105247.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u300c\u5bc6\u94a5\u6cc4\u9732\u4ecd\u88ab\u626b\u7aef\u53e3\u7206\u7834\u300d\u300csudo NOPASSWD \u5168\u6743\u9650\u300d\u300c\u9632\u706b\u5899\u5f00\u4e86\u4f46 Docker \u7ed5\u8fc7\u300d\u2014\u2014\u52a0\u56fa\u5931\u8d25\u591a\u5728 \u9ed8\u8ba4\u914d\u7f6e\u672a\u6539\u3001\u89c4\u5219\u987a\u5e8f\u9519\u8bef\u3001MAC \u672a Enforcing\u3002\u672c\u6587\u6309 OpenSSH\u3001firewalld\/nftables\u3001auditd \u771f\u5b9e\u8def\u5f84\u5c55\u5f00\u3002 \u6e90\u7801\u951a\u70b9\u8def\u5f84 \/ \u914d\u7f6e\u4f5c\u7528\/etc\/ssh\/sshd_configSSH \u670d\u52a1\u7aef\/etc\/ssh\/ssh_configSSH \u5ba2\u6237\u7aefman sshd_config\u6307\u4ee4\u8bf4\u660e\/etc\/sudoerssudo \u4e3b\u914d\u7f6e\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/105247.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-14T23:00:22+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/105247.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/105247.html\",\"name\":\"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-09-14T23:00:22+00:00\",\"dateModified\":\"2026-09-14T23:00:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/105247.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/105247.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/105247.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/105247.html","og_locale":"zh_CN","og_type":"article","og_title":"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u300c\u5bc6\u94a5\u6cc4\u9732\u4ecd\u88ab\u626b\u7aef\u53e3\u7206\u7834\u300d\u300csudo NOPASSWD \u5168\u6743\u9650\u300d\u300c\u9632\u706b\u5899\u5f00\u4e86\u4f46 Docker \u7ed5\u8fc7\u300d\u2014\u2014\u52a0\u56fa\u5931\u8d25\u591a\u5728 \u9ed8\u8ba4\u914d\u7f6e\u672a\u6539\u3001\u89c4\u5219\u987a\u5e8f\u9519\u8bef\u3001MAC \u672a Enforcing\u3002\u672c\u6587\u6309 OpenSSH\u3001firewalld\/nftables\u3001auditd \u771f\u5b9e\u8def\u5f84\u5c55\u5f00\u3002 \u6e90\u7801\u951a\u70b9\u8def\u5f84 \/ \u914d\u7f6e\u4f5c\u7528\/etc\/ssh\/sshd_configSSH \u670d\u52a1\u7aef\/etc\/ssh\/ssh_configSSH \u5ba2\u6237\u7aefman sshd_config\u6307\u4ee4\u8bf4\u660e\/etc\/sudoerssudo \u4e3b\u914d\u7f6e","og_url":"https:\/\/www.wsisp.com\/helps\/105247.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-09-14T23:00:22+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"16 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/105247.html","url":"https:\/\/www.wsisp.com\/helps\/105247.html","name":"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-09-14T23:00:22+00:00","dateModified":"2026-09-14T23:00:22+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/105247.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/105247.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/105247.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Linux \u5b89\u5168\u52a0\u56fa\u5b8c\u6574\u7bc7\uff1a\u4ece SSH\u3001\u9632\u706b\u5899\u5230SELinux\/AppArmor \u4e0e\u5ba1\u8ba1"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/105247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=105247"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/105247\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=105247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=105247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=105247"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=105247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}