aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Vermeulen <sven.vermeulen@siphos.be>2013-12-11 21:51:06 +0100
committerSven Vermeulen <sven.vermeulen@siphos.be>2013-12-11 21:51:06 +0100
commit912cc3b552b8dd23ddccdca7f77a1beaa490d136 (patch)
treea70855286b24c40213b0bcbaeb4db1e5f93bef8e
parentAdding datastream creation (diff)
downloadhardened-docs-912cc3b552b8dd23ddccdca7f77a1beaa490d136.tar.gz
hardened-docs-912cc3b552b8dd23ddccdca7f77a1beaa490d136.tar.bz2
hardened-docs-912cc3b552b8dd23ddccdca7f77a1beaa490d136.zip
Adding OpenSSH files
-rw-r--r--xml/SCAP/openssh-oval.xml354
-rw-r--r--xml/SCAP/openssh-xccdf.xml579
2 files changed, 933 insertions, 0 deletions
diff --git a/xml/SCAP/openssh-oval.xml b/xml/SCAP/openssh-oval.xml
new file mode 100644
index 0000000..ad1ca8c
--- /dev/null
+++ b/xml/SCAP/openssh-oval.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<oval_definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5"
+ xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
+ xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5"
+ xmlns:ind-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent"
+ xmlns:lin-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux"
+ xmlns:unix-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#unix">
+ <generator>
+ <oval:product_name>vim</oval:product_name>
+ <oval:schema_version>5.9</oval:schema_version>
+ <oval:timestamp>2011-10-31T12:00:00-04:00</oval:timestamp>
+ </generator>
+
+<definitions>
+<!-- @@GENOVAL START DEFINITIONS -->
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:1" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:1" comment="file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:2" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:2" comment="file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:3" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:3" comment="file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:5" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^AllowGroup</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^AllowGroup</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:5" comment="file /etc/ssh/sshd_config must have a line that matches ^AllowGroup" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:6" version="1">
+ <metadata>
+ <title>file /etc/hosts.allow must have a line that matches ^sshd:</title>
+ <description>file /etc/hosts.allow must have a line that matches ^sshd:</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:6" comment="file /etc/hosts.allow must have a line that matches ^sshd:" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:7" version="1">
+ <metadata>
+ <title>file /etc/hosts.deny must have a line that matches ^sshd: ALL</title>
+ <description>file /etc/hosts.deny must have a line that matches ^sshd: ALL</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:7" comment="file /etc/hosts.deny must have a line that matches ^sshd: ALL" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:8" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:8" comment="file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:9" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:9" comment="file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:10" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:10" comment="file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:11" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:11" comment="file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:12" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:12" comment="file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:13" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:13" comment="file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:14" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:14" comment="file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:15" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:15" comment="file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:16" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:16" comment="file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:17" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:17" comment="file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:18" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:18" comment="file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:19" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^ListenAddress</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^ListenAddress</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:19" comment="file /etc/ssh/sshd_config must have a line that matches ^ListenAddress" />
+ </criteria>
+</definition>
+<definition class="compliance" id="oval:org.gentoo.dev.swift:def:20" version="1">
+ <metadata>
+ <title>file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no</description>
+ </metadata>
+ <criteria>
+ <criterion test_ref="oval:org.gentoo.dev.swift:tst:20" comment="file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no" />
+ </criteria>
+</definition>
+<!-- @@GENOVAL END DEFINITIONS -->
+</definitions>
+
+<tests>
+<!-- @@GENOVAL START TESTS -->
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:1" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:1" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:2" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:2" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:3" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:3" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:5" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^AllowGroup" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:4" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:6" version="1" check="at least one" comment="file /etc/hosts.allow must have a line that matches ^sshd:" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:2" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:5" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:7" version="1" check="at least one" comment="file /etc/hosts.deny must have a line that matches ^sshd: ALL" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:3" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:6" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:8" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:7" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:9" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:8" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:10" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:9" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:11" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:10" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:12" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:11" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:13" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:12" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:14" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:13" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:15" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:14" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:16" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:15" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:17" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:16" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:18" version="1" check="none satisfy" comment="file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:17" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:19" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^ListenAddress" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:18" />
+</ind-def:textfilecontent54_test>
+<ind-def:textfilecontent54_test id="oval:org.gentoo.dev.swift:tst:20" version="1" check="at least one" comment="file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no" check_existence="at_least_one_exists">
+ <ind-def:object object_ref="oval:org.gentoo.dev.swift:obj:1" />
+ <ind-def:state state_ref="oval:org.gentoo.dev.swift:ste:19" />
+</ind-def:textfilecontent54_test>
+<!-- @@GENOVAL END TESTS -->
+</tests>
+
+<objects>
+<!-- @@GENOVAL START OBJECTS -->
+<ind-def:textfilecontent54_object id="oval:org.gentoo.dev.swift:obj:1" version="1" comment="Non-comment lines in /etc/ssh/sshd_config">
+ <ind-def:filepath>/etc/ssh/sshd_config</ind-def:filepath>
+ <ind-def:pattern operation="pattern match">^[[:space:]]*([^#[:space:]].*[^[:space:]]?)[[:space:]]*$</ind-def:pattern>
+ <ind-def:instance datatype="int" operation="greater than or equal">1</ind-def:instance>
+</ind-def:textfilecontent54_object>
+<ind-def:textfilecontent54_object id="oval:org.gentoo.dev.swift:obj:2" version="1" comment="Non-comment lines in /etc/hosts.allow">
+ <ind-def:filepath>/etc/hosts.allow</ind-def:filepath>
+ <ind-def:pattern operation="pattern match">^[[:space:]]*([^#[:space:]].*[^[:space:]]?)[[:space:]]*$</ind-def:pattern>
+ <ind-def:instance datatype="int" operation="greater than or equal">1</ind-def:instance>
+</ind-def:textfilecontent54_object>
+<ind-def:textfilecontent54_object id="oval:org.gentoo.dev.swift:obj:3" version="1" comment="Non-comment lines in /etc/hosts.deny">
+ <ind-def:filepath>/etc/hosts.deny</ind-def:filepath>
+ <ind-def:pattern operation="pattern match">^[[:space:]]*([^#[:space:]].*[^[:space:]]?)[[:space:]]*$</ind-def:pattern>
+ <ind-def:instance datatype="int" operation="greater than or equal">1</ind-def:instance>
+</ind-def:textfilecontent54_object>
+<!-- @@GENOVAL END OBJECTS -->
+</objects>
+
+<states>
+<!-- @@GENOVAL START STATES -->
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:1" version="1" comment="The match of ^PermitRootLogin no">
+ <ind-def:subexpression operation="pattern match">^PermitRootLogin no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:2" version="1" comment="The match of ^PasswordAuthentication no">
+ <ind-def:subexpression operation="pattern match">^PasswordAuthentication no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:3" version="1" comment="The match of ^ChallengeResponseAuthentication no">
+ <ind-def:subexpression operation="pattern match">^ChallengeResponseAuthentication no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:4" version="1" comment="The match of ^AllowGroup">
+ <ind-def:subexpression operation="pattern match">^AllowGroup</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:5" version="1" comment="The match of ^sshd">
+ <ind-def:subexpression operation="pattern match">^sshd</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:6" version="1" comment="The match of ^sshd">
+ <ind-def:subexpression operation="pattern match">^sshd</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:7" version="1" comment="The match of ^IgnoreRhosts.*no">
+ <ind-def:subexpression operation="pattern match">^IgnoreRhosts.*no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:8" version="1" comment="The match of ^RhostsRSAAuthentication.*yes">
+ <ind-def:subexpression operation="pattern match">^RhostsRSAAuthentication.*yes</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:9" version="1" comment="The match of ^HostbasedAuthentication.*yes">
+ <ind-def:subexpression operation="pattern match">^HostbasedAuthentication.*yes</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:10" version="1" comment="The match of ^PermitEmptyPasswords.*yes">
+ <ind-def:subexpression operation="pattern match">^PermitEmptyPasswords.*yes</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:11" version="1" comment="The match of ^UsePAM.*no">
+ <ind-def:subexpression operation="pattern match">^UsePAM.*no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:12" version="1" comment="The match of ^Protocol.*1">
+ <ind-def:subexpression operation="pattern match">^Protocol.*1</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:13" version="1" comment="The match of ^UsePrivilegeSeparation.*no">
+ <ind-def:subexpression operation="pattern match">^UsePrivilegeSeparation.*no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:14" version="1" comment="The match of ^X11Forwarding.*yes">
+ <ind-def:subexpression operation="pattern match">^X11Forwarding.*yes</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:15" version="1" comment="The match of ^StrictMode.*no">
+ <ind-def:subexpression operation="pattern match">^StrictMode.*no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:16" version="1" comment="The match of ^ListenAddress.*0.0.0.0">
+ <ind-def:subexpression operation="pattern match">^ListenAddress.*0.0.0.0</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:17" version="1" comment="The match of ^ListenAddress *">
+ <ind-def:subexpression operation="pattern match">^ListenAddress[ ]*</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:18" version="1" comment="The match of ^ListenAddress">
+ <ind-def:subexpression operation="pattern match">^ListenAddress</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<ind-def:textfilecontent54_state id="oval:org.gentoo.dev.swift:ste:19" version="1" comment="The match of ^AllowTcpForwarding.*no">
+ <ind-def:subexpression operation="pattern match">^AllowTcpForwarding.*no</ind-def:subexpression>
+</ind-def:textfilecontent54_state>
+<!-- @@GENOVAL END STATES -->
+</states>
+
+</oval_definitions>
diff --git a/xml/SCAP/openssh-xccdf.xml b/xml/SCAP/openssh-xccdf.xml
new file mode 100644
index 0000000..0230c63
--- /dev/null
+++ b/xml/SCAP/openssh-xccdf.xml
@@ -0,0 +1,579 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Benchmark xmlns="http://checklists.nist.gov/xccdf/1.2" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="xccdf_org.gentoo.dev.swift_benchmark_Gentoo-Security-Benchmark-OpenSSH-1" xsi:schemaLocation="http://checklists.nist.gov/xccdf/1.2 xccdf-1.2.xsd" resolved="0">
+ <status date="2012-07-14">draft</status>
+ <title>Hardening OpenSSH</title>
+ <description>
+ The OpenSSH server offers remote Secure Shell services towards your users. This benchmark
+ focuses on the hardening of OpenSSH within a Gentoo Hardened environment.
+ </description>
+ <platform idref="cpe:/o:gentoo:linux"/>
+ <version>1</version>
+ <model system="urn:xccdf:scoring:default"/>
+ <model system="urn:xccdf:scoring:flat"/>
+ <Profile id="xccdf_org.gentoo.dev.swift_profile_default">
+ <title>OpenSSH server setup settings</title>
+ <description>
+ Profile matching all OpenSSH hardening rules
+ </description>
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-rhosts" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-rrsa" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-hostbased" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-empty" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-pam" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-protocol" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-useprivsep" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-nox11fwd" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-def-strictmode" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-norootlogin" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-nopasswordauth" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-nochallengeresponse" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-allowgroup" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-hostsallow" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-hostsdeny" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-listen" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-listen4" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-listen6" selected="true" />
+ <select idref="xccdf_org.gentoo.dev.swift_rule_sshd-notcpfwd" selected="true" />
+ </Profile>
+ <Group id="xccdf_org.gentoo.dev.swift_group_intro">
+ <title>Introduction</title>
+ <description>
+ The OpenSSH service is one of the most used SSH providing services.
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_intro-using">
+ <title>Using this guide</title>
+ <description>
+ The guide you are currently reading is the guide generated from this SCAP
+ content (more specifically, the XCCDF document) using <h:b>openscap</h:b>,
+ a free software implementation for handling SCAP content. Within Gentoo,
+ the package <h:code>app-forensics/openscap</h:code> provides the tools, and
+ the following command is used to generate the HTML output:
+ <h:br />
+ <h:pre>### Command to generate this guide ###
+# <h:b>oscap xccdf generate guide scap-openssh-xccdf.xml &gt; output.html</h:b>
+ </h:pre>
+ <h:br />
+ Secondly, together with this XCCDF XML, you will also find an OVAL XML file.
+ The two files combined allow you to automatically validate various settings as
+ documented in the benchmark.
+ <h:br />
+ <h:br />
+ You can test the benchmark against your configuration.
+ <h:pre>### Testing the rules mentioned in the XCCDF document ###
+# <h:b>oscap xccdf eval --profile Default scap-openssh-xccdf.xml</h:b></h:pre>
+ <h:br />
+ To generate a full report in HTML as well, you can use the next command:
+ <h:pre>### Testing the rules and generating an HTML report ###
+# <h:b>oscap xccdf eval --profile Default --results xccdf-results.xml --report report.html scap-openssh-xccdf.xml</h:b></h:pre>
+ <h:br />
+ Finally, this benchmark will suggest some settings which you do not want
+ to enable. That is perfectly fine - even more, some settings might even
+ raise eyebrows left and right. We'll try to document the reasoning behind
+ the settings but you are free to deviate from them. If that is the case,
+ you might want to create your own profile which only contains the rules
+ you want checked. You can then use that profile instead of the Default one.
+ </description>
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_intro-profiles">
+ <title>Available XCCDF Profiles</title>
+ <description>
+ As mentioned earlier, the XCCDF document supports multiple profiles. For the time
+ being, one profile is defined:
+ <h:br />
+ <h:ul>
+ <h:li>Default contains all mentioned tests</h:li>
+ </h:ul>
+ Substitute the profile information in the commands above with the profile you want to test on.
+ </description>
+ </Group>
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config">
+ <title>Configuration Settings</title>
+ <description>
+ In this section, we look at the configuration settings of an OpenSSH service
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default">
+ <title>Default OpenSSH settings</title>
+ <description>
+ OpenSSH comes with some sane defaults to start with. These should not be touched.
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-rhosts">
+ <title>Ignore Rhosts</title>
+ <description>
+ Historically, users could define a <h:code>.rhosts</h:code> or <h:code>.shosts</h:code>
+ file in which they mention the systems from which they log on to the system (the client
+ hosts). When the user then logs on from one of these remote locations, the shell service
+ would not ask for password authentication and just automatically log in the user.
+ <h:br />
+ <h:br />
+ The shell service treats <h:code>.shosts</h:code> mentioned hosts a bit different: it first
+ checks that hosts identity using some public key authentication scheme (in which case the
+ host keys of the clients are placed in <h:code>/etc/ssh/ssh_known_hosts</h:code> or
+ <h:code>~/.ssh/known_hosts</h:code>).
+ <h:br />
+ <h:br />
+ This is however a very insecure setup and can be easily circumvented. It only performs
+ host-based authentication, not user authentication, and in case of the <h:code>.rhosts</h:code>
+ file this host-based authentication is only based on the hostname/IP matching.
+ <h:br />
+ <h:br />
+ For this reason, support for the <h:code>.rhosts</h:code> and <h:code>.shosts</h:code>
+ files is by default disabled.
+ <h:br />
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : IgnoreRhosts
+# If set, IgnoreRhosts must be set to yes (which is the default)
+IgnoreRhosts yes</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-rhosts -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-rhosts" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^IgnoreRhosts.*no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:8" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-rhosts -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-rhostsrsa">
+ <title>Do not allow RSA Host Authentication</title>
+ <description>
+ As part of the Rhosts implementation, OpenSSH supports using RSA authentication for remote hosts.
+ With RSA authentication enabled, hosts mentioned in the <h:code>.rhosts</h:code> (or <h:code>/etc/hosts.equiv</h:code>)
+ files need to be authenticated based on their RSA key. This applies to the SSH protocol version 1 only.
+ <h:br />
+ <h:br />
+ As Rhosts is found insecure, this option does not make rhosts more feasible to use. For this reason,
+ this option is by default disabled.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : RhostsRSAAuthentication
+# If set, RhostsRSAAuthentication must be set to "no" (which is the default).
+RhostsRSAAuthentication no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-rrsa -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-rrsa" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^RhostsRSAAuthentication.*yes</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:9" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-rrsa -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-hostbased">
+ <title>Do not allow Host-based Authentication</title>
+ <description>
+ As part of the Rhosts implementation, Ope SSH supports using public key authenticatoin for remote hosts.
+ With this enabled, hosts mentioned in the <h:code>.rhosts</h:code> (or <h:code>/etc/hosts.equiv</h:code>)
+ files need to be authenticated based on their public key. This applies to the SSH protocol version 2 only.
+ <h:br />
+ <h:br />
+ As Rhosts is found insecure, this option does not make rhosts more feasible to use. For this reason,
+ this option is by default disabled.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : HostbasedAuthentication
+# If set, HostbasedAuthentication must be set to "no" (which is the default)
+HostbasedAuthentication no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-hostbased -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-hostbased" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^HostbasedAuthentication.*yes</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:10" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-hostbased -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-emptypassword">
+ <title>Do not Permit Empty Passwords</title>
+ <description>
+ If password-based authentication is used, it is wise not to allow empty passwords.
+ <h:br />
+ <h:br />
+ Allowing empty passwords within your network makes the services <h:em>very</h:em> vulnerable
+ to exploit, even when the software is fully up-to-date.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : PermitEmptyPasswords
+# If set, PermitEmptyPasswords must be set to "no" (which is the default).
+PermitEmptyPasswords no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-empty -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-empty" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^PermitEmptyPasswords.*yes</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:11" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-empty -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-pam">
+ <title>Use PAM</title>
+ <description>
+ PAM (Pluggable Authentication Modules) is a powerful framework for managing
+ authentication of users and services in a flexible manner. By default, OpenSSH
+ uses PAM for the authentication of users.
+ <h:br />
+ <h:br />
+ One of the many advantages of PAM is that you can add in additional rules you want
+ to enforce during the authentication. You can limit access based on login count (or number of failures),
+ use centralized authentication repositories (like OpenLDAP), allow access only during specific
+ time windows, etc.
+ <h:br />
+ <h:br />
+ It is strongly advised to use PAM for SSH authentication too (but do manage the PAM configuration
+ properly!) Be aware though that the authentication services themselves (is the user who he sais
+ he is) of PAM are not used if public key authentication is used. The other services, which include
+ the access controls mentioned earlier, are still consulted though.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : UsePAM
+# If set, UsePAM must be set to "yes" (which is the default)
+UsePAM yes</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-pam -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-pam" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^UsePAM.*no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:12" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-pam -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-protocol2">
+ <title>Only use version 2 of the SSH protocol</title>
+ <description>
+ The first version of the SSH protocol has been found insecure: TODO.
+ <h:br />
+ <h:br />
+ For this reason, it is strongly advised to use version 2 of the protocol only. This is also
+ the default for OpenSSH.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : Protocol
+# If set, Protocol must be set to 2 only (which is the default)
+Protocol 2</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-protocol -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-protocol" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^Protocol.*1</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:13" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-protocol -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-privsep">
+ <title>Use privilege separation</title>
+ <description>
+ With privilege separation enabled, the SSH daemon has a tiny footprint running as root,
+ whereas the rest of the application runs as an unprivileged process to deal with the
+ incoming network traffic. This can be tuned with <h:code>UsePrivilegeSeparation yes</h:code>
+ which is the default for OpenSSH.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : UsePrivilegeSeparation
+# If set, UsePrivilegeSeparation must be set to yes (which is the default)
+UsePrivilegeSeparation yes</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-useprivsep -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-useprivsep" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^UsePrivilegeSeparation.*no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:14" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-useprivsep -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-x11fwd">
+ <title>Disable X11 forwarding</title>
+ <description>
+ SSH supports forwarding X11 packets, so X11 applications started on the remote system have their
+ display shown on the client. This behavior is by default disabled.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : X11Forwarding
+# If set, X11Forwarding must be set to no (which is the default)
+X11Forwarding no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-nox11fwd -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-nox11fwd" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^X11Forwarding.*yes</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:15" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-nox11fwd -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-default-strictmode">
+ <title>Enable strict mode</title>
+ <description>
+ When <h:code>StrictModes yes</h:code> is enabled, the SSH daemon will only allow a remote user to
+ log on when some of the important files in that users' home directory have the proper privileges and
+ ownership. This behavior is by default enabled.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : StrictModes
+# If set, StrictModes must be set to yes (which is the default)
+StrictModes yes</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-def-strictmode -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-def-strictmode" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^StrictMode.*no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:16" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-def-strictmode -->
+ </Group>
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-auth">
+ <title>Authentication-related settings</title>
+ <description>
+ Being a remote shell service, authentication is one of the main features that OpenSSH provides.
+ A few settings help us in hardening the SSH server even further.
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-auth-noroot">
+ <title>Disable root logins</title>
+ <description>
+ As root is one of the most powerful accounts, direct access to root should be limited. It is
+ advised that, if a process needs root privileges, it uses a functional account which has the
+ right to call one or a few commands as root, but nothing else.
+ <h:br />
+ <h:br />
+ With OpenSSH, it is possible to prohibit direct root access towards the system if feasible within
+ your architecture. This can be accomplished using the <h:code>PermitRootLogin no</h:code> directive.
+ If you need root logins, consider only allowing specified command access (forced-commands-only).
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : PermitRootLogin
+# Set this to "no" or, if needed, "forced-commands-only"
+PermitRootLogin no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-norootlogin -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-norootlogin" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^PermitRootLogin no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:1" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-norootlogin -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-auth-nopassword">
+ <title>Use public key authentication</title>
+ <description>
+ By default, OpenSSH uses interactive, keyboard-based password logins. One intrinsic problem with
+ passwords is that they can be weak, but also that hacked passwords can be used from other locations.
+ <h:br />
+ <h:br />
+ A safer approach for remote shell invocation is to use a keypair: the key is much stronger than most
+ passwords, making brute-force improbably and dictionary-attacks useless. The private key is only
+ known by you (on your system) and optionally (but preferably) protected by a (strong) passphraze so that
+ adversaries that force access to your system can still not use your private key.
+ <h:br />
+ <h:br />
+ Such a keypair an be generated by the users using <h:b>ssh-keygen -t dsa</h:b> after which the private and
+ public keys are stored in <h:code>~/.ssh</h:code>
+ <h:br />
+ <h:br />
+ On the OpenSSH server level, you can force the use of public key authentication (and thus deny
+ keyboard-interactive password logins) using <h:code>PasswordAuthentication no</h:code>.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : PasswordAuthentication
+# Set this to "no"
+PasswordAuthentication no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-nopasswordauth -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-nopasswordauth" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^PasswordAuthentication no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:2" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-nopasswordauth -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-auth-nochallengeresponse">
+ <title>Disable ChallengeResponseAuthentication</title>
+ <description>
+ In OpenSSH, a (confusing) parameter called <h:code>ChallengeResponseAuthentication</h:code>
+ is available (and by default enabled). Many users might believe that this implements a more secure
+ authentication method (based on a challenge and a token that need to be verified - i.e. multi-factor
+ authentication). However, in case of this parameter, this isn't true.
+ <h:br />
+ <h:br />
+ The <h:code>ChallengeResponseAuthentication</h:code> setting enables <h:em>TIS Challenge/Response</h:em>
+ in SSH protocol version 1, and keyboard-interactive in SSH protocol v2. Hence, in our case, it is best
+ set disabled as we do not want regular password authentication to be enabled (and don't use protocol
+ version 1).
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : ChallengeResponseAuthentication
+# Set this to "no"
+ChallengeResponseAuthentication no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-nochallengeresponse -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-nochallengeresponse" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^ChallengeResponseAuthentication no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:3" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-nochallengeresponse -->
+ </Group>
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-acl">
+ <title>Access control related settings</title>
+ <description>
+ By default, OpenSSH allows access from any location and by any user who gets authenticated properly.
+ However, it is safer if you can restrict access from hosts that are allowed to access the SSH service
+ (and not other hosts) as well as users that are known to access the system remotely.
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-acl-allowgroup">
+ <title>Only allow specific group(s) access</title>
+ <description>
+ Not every user on your system needs to be able to remotely log on to the system. Many
+ users on your system are local-only, either because they are services accounts, or
+ because the users are only meant to log on directly (or through another service).
+ <h:br />
+ <h:br />
+ With OpenSSH, you can limit SSH access to users defined in a limited set of (Unix) groups.
+ It is recommended to define a Unix group (like <h:code>ssh</h:code> if that isn't used by the
+ service daemon itself) in which those users are defined, and then only allow SSH access
+ for this group.
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : AllowGroup
+# Set this to the unix group whose members are allowed access
+AllowGroup ssh</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-allowgroup -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-allowgroup" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^AllowGroup</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^AllowGroup</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:5" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-allowgroup -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-acl-hosts">
+ <title>Only allow specific host(s) access</title>
+ <description>
+ Not every host on your network (or beyond) needs access to your system. On the contrary, most
+ hosts probably shouldn't have SSH access to your system.
+ <h:br />
+ <h:br />
+ With a service called <h:em>tcpwrappers</h:em> OpenSSH allows administrators to define the hosts
+ allowed access (or explicitly not allowed access) in the <h:code>/etc/hosts.allow</h:code> and
+ <h:code>/etc/hosts.deny</h:code>.
+ <h:br />
+ <h:br />
+ For a good secure setting, it is recommended to disallow access from any host, and then explicitly grant
+ access from a select set of hosts (or subnetworks).
+ <h:br />
+ <h:pre>### /etc/hosts.allow
+# Give the list of allowed hosts or networks
+sshd: 192.168.1.0/24</h:pre><h:br />
+ <h:pre>### /etc/hosts.deny
+# Deny access by default from everywhere
+sshd: ALL</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-hostsallow -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-hostsallow" selected="false">
+ <title>file /etc/hosts.allow must have a line that matches ^sshd:</title>
+ <description>file /etc/hosts.allow must have a line that matches ^sshd:</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:6" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-hostsallow -->
+ <!-- @@GEN START rule-sshd-hostsdeny -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-hostsdeny" selected="false">
+ <title>file /etc/hosts.deny must have a line that matches ^sshd: ALL</title>
+ <description>file /etc/hosts.deny must have a line that matches ^sshd: ALL</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:7" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-hostsdeny -->
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-acl-listen">
+ <title>Only listen on proper interfaces</title>
+ <description>
+ By default, OpenSSH listens on all available interfaces. In many cases though, this isn't necessary.
+ <h:br />
+ <h:br />
+ Multihomed systems (i.e. systems with multiple network interfaces) usually only use a single interface
+ for the administrative access, whereas the other interface is to connect to the Internet or disclose the
+ "business applications".
+ <h:br />
+ <h:br />
+ On dual stack systems (i.e. systems with an IPv4 and IPv6 stack) the IPv6 (or IPv4) address might not be
+ in use, or not for the administrative access (like through OpenSSH). In these cases, it is wise not to have
+ OpenSSH listen on these addresses either.
+ <h:br />
+ <h:pre>## /etc/ssh/sshd_config : ListenAddress
+# Define a ListenAddress, but do not set it to "any address"
+# (which is 0.0.0.0 in IPv4 and :: in IPv6)
+ListenAddress 192.168.100.121</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-listen -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-listen" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^ListenAddress</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^ListenAddress</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:19" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-listen -->
+ <!-- @@GEN START rule-sshd-listen4 -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-listen4" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress.*0.0.0.0</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:17" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-listen4 -->
+ <!-- @@GEN START rule-sshd-listen6 -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-listen6" selected="false">
+ <title>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$</title>
+ <description>file /etc/ssh/sshd_config may not have a line that matches ^ListenAddress[ ]*::$</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:18" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-listen6 -->
+ </Group>
+ </Group>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-use">
+ <title>Disable unused settings</title>
+ <description>
+ OpenSSH has a few more options that it supports. If you, however, have no need for these options,
+ it is safer to have them disabled. Potential vulnerabilities that might be discovered later on these
+ options then have no effect on your system.
+ </description>
+ <Group id="xccdf_org.gentoo.dev.swift_group_config-use-tcpfwd">
+ <title>Disable TCP forwarding</title>
+ <description>
+ SSH supports "tunneling", where packets are forwarded over a (partially) secure channel towards
+ another location. If you do not need this, disable TCP forwarding through <h:code>AllowTcpForwarding no</h:code>
+ <h:br />
+ <h:pre>### /etc/ssh/sshd_config : AllowTcpForwarding
+# If not needed, disable TCP forwarding
+AllowTcpForwarding no</h:pre>
+ </description>
+ <!-- @@GEN START rule-sshd-notcpfwd -->
+<Rule id="xccdf_org.gentoo.dev.swift_rule_sshd-notcpfwd" selected="false">
+ <title>file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no</title>
+ <description>file /etc/ssh/sshd_config must have a line that matches ^AllowTcpForwarding.*no</description>
+ <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
+ <check-content-ref name="oval:org.gentoo.dev.swift:def:20" href="openssh-oval.xml" />
+ </check>
+</Rule>
+ <!-- @@GEN END rule-sshd-notcpfwd -->
+ </Group>
+ </Group>
+ </Group>
+</Benchmark>