The SUSE Linux Enterprise Server Security and Hardening Guide deals with the particulars of installation and set up of a secure SUSE Linux Enterprise Server server and additional post-install processes required to further secure and harden that installation. Security and hardening elements and procedures are best applied to a server both during installation and post-installation and aim to improve the fitness of the system for the purposes demanded by its administrator.
This guide supports administrator in making security related choices and decisions. The individual steps and procedures should be seen as proposals, not as strict rules. In many cases, you will have to evaluate the usefulness of measures for your organization yourself.
The objective is to improve the security value of the system. Definitions about the meaning of the term security vary, but we want to settle on one that is both simple and abstract:
A good system does what it is expected to do, and it does it well.
A secure system is a good system that does nothing else.
The focus of this guide lies on doing “nothing else”. The Linux system is constructed in such way that security policies are enforced. These policies consist of the following concepts (fairly generic and incomplete list):
DAC (Discretionary Access Control): File and directory permissions, as
set by chmod and chown.
Privileged ports: TCP and UDP ports 0-1023 as well as raw sockets can
only be used by root.
Other privileged operations: Loading kernel modules, configuring network interfaces, all security relevant settings of the Linux kernel. These are operations that can only be done by the root user, that is the user with the user ID 0, or any other process with the necessary capabilities.
Attacking a system means to attempt to overcome (for example, circumvent or break) these privilege boundaries in a way that the administrator of the system or the programmer of the corresponding subsystem has not taken into account.
A hardened system raises the bar by reducing the area that the system exposes to the attacker (often called attack surface). Besides that a hardened system can also provide measures to reduce the impact of vulnerabilities in the parts of the systems that must be exposed to a potential attacker.
Security is about decisions, and whenever security is in (apparent) opposition to function, these decisions become trade-offs. While it can be argued that all systems should be set up to be as securely as possible, some levels of security and hardening may very well be overkill in some cases. Each system's operational environment has its own security requirements derived from business drivers or regulatory compliance mandates. SUSE Linux Enterprise Server can, for example, be configured to comply with security standards, such as SOX, HIPAA and PCIDSS. It can also be set up to fulfill the requirements from the German Federal Office of Information Security (Bundesamt für Sicherheit in der Informationstechnik) as described in BSI TR-02102-1. An effective business requirements analysis should be performed in order to determine the right level of security and hardening to be applied to a server or defined as part of a baseline server build.
As a final note before we begin: You may encounter individual requirements in regulatory compliance frameworks that may not make sense from a technical perspective, or they do not serve the purpose of improving security. It may be a productive attitude to simply implement what is required, but whenever there is a contradiction to security, an informed discussion in the documentation serves the overall purpose of your regulative compliance framework much more than blindly obeying the specifications. Please feel encouraged to dispute list items that you think are counterproductive.
While in most cases in this document reference will be made to a single server target or host, the scope can generally be applied to more than one machine. We generally assume that the security target can cover one or more systems running SUSE Linux Enterprise Server.
We explicitly do not make any assumptions about the hostility of the network that the systems are connected to, or the cooperative nature of the users that leverage the services provided by the systems.
In turn, this means that you partially define your context on your own when reading through this document. You will need to broaden the meaning of individual portions to adopt it to your environment. In some cases, such as the use case of a server that is exposed to the Internet, this document may even be insufficient or incomplete; however, it may still serve as a good starting point on your journey towards an increased level of confidence that your system will behave like you want it to.
About trust: Trust relationships exist among all systems that participate in networked transactions. In this way, the trust relationship between the people that use the systems is transported across these systems. The chain that is formed by your trust relationships is only as strong as the weakest link. It is good practice to graphically visualize the trust relationships with the services in a schematic overview or map of your network. Generally, it is up to the owner of a resource to enforce the policies imposed on that resource; this would usually be the server that provides the resource. The client that opens a connection to request the resource can only be made responsible for the actions that it performs. This refers to the action of opening the connection to start with, but to nothing else as such.
The case of hostile users is special and unique: The Human Resources department may be able to solve some of your security problems in your computing environment at least as well as some technical measures can. Please make sure that the necessary regulations in your environment fit your needs, and that they back your intentions instead of obstructing them if you need to work around a missing support from your HR department (and your management).
Persons that have administrative privileges on a system are automatically considered trusted.
A Linux system - without any additional security frameworks such as SELinux - is a single level security system: From a security policy perspective there is only the superuser (root) and non-privileged users. System users are non-root user IDs that have access to files specific to their purpose. The separation of administrative duties is complicated by this simplicity. Some tools help: Make use of sudo(8) for administrative tasks, but be aware that once the privilege boundary is crossed, a program running with root privileges does not enforce any file access policies for non-privileged users any more. vi(1) that runs as root can read and write to any file in the system.
Another tool to mitigate the risk of abuse or accidental misuse of administrative privileges is NetIQ's Privileged User Manager product. More information is available here:
Physical security of the server is another assumption made here, where the server is protected from theft and manipulation by unauthorized persons. A common sobering thought amongst security professionals is the “ten-second Denial of Service”: Unplug the wires and reboot the server. Physical security must be ensured and physical access must be controlled. Otherwise, all assumptions about at least the availability of these systems are void.
The use of cryptography to protect the confidentiality of transactions with the services that your system provides is generally encouraged. The need to implement cryptographic enhancements is strongly dependent on the operational environments of all participating systems. Keep in mind that you need to verify all of the possible security benefits that cryptography can provide, for all of your services, and that these benefits are not delivered automatically just by turning on the “encrypt” option of your service (if you can enjoy the idyllic situation where encryption is available as a button to check):
Protection against reading the content of a transaction
Protection against knowing that a transaction exists, and some properties that it may have, such as size, identities of involved parties, their presence, ...
Protection against alteration of content. Be aware that cryptography does not automatically provide this kind of protection.
Protection against identity fraud. Cryptography that does not know about identities of participating entities cannot deliver this value.
Keep in mind that encryption of data for confidentiality purposes can merely reduce the size of the data to protect from the actual size to the size of the key that is used to encrypt the data. This results in a key exchange problem for encrypted transactions, and in a key management problem for encrypted data storage. Since data is (typically, there are exceptions!) processed in clear, you need your vault unlocked while data within is being worked with. The encryption of such data on the file system or block device layer helps against the theft of the system, but it does not help the confidentiality of the data while the system is running.
If you want to implement a consistent security policy covering multiple hosts on a network then organizational procedures must ensure that all those hosts can be trusted and are configured with compatible security configurations enforcing an organization wide security policy. Isolation of groups of systems that maintain data of the same trust domain can provide an adequate means of control; ultimately, the access controls to these systems, both for end users and for other systems, need to be carefully designed, configured, inspected and monitored.
Data can only be trusted to the degree that is associated with the domain it comes from. If data leaves the domain in which security policies can be enforced, it should consequently be associated with the trust of the target domain.
For a review of industry best practices on security, the development of sound security processes, controls, development, reviews, audit practices and incident management, you can review a public RFC (request for comments). RFC 2196 is the ongoing work of the world-wide community and individual security and process experts. You can review it online here: http://www.faqs.org/rfcs/rfc2196.html. An RFC is an open and living document that invites comments and review. Enhancements and improvements are welcome; you will find instructions on where to send those suggestions within the document itself.
This guide provides initial guidance on how to set up and secure a SUSE Linux Enterprise Server installation but it is not intended to be the only information required for a system administrator to learn how to operate Linux securely. Assumptions are made within this guide that the reader has knowledge and understanding of operating security principles in general, and of Linux administrative commands and configuration options in particular.
Part I, “Common Criteria” contains a reference to Common Criteria and SUSE Linux Enterprise Server. Part II, “General System Security and Service Protection Methods” contains more general system security and service protection schemes.
당사에서는 여러 언어로 작성된 HTML 및 PDF 버전의 설명서를 제공합니다. 이 제품에 대해 다음과 같은 사용자와 관리자용 설명서가 제공됩니다.
시스템 요구사항을 나열하고 DVD 또는 ISO 이미지에서 SUSE Linux Enterprise Server를 설치하는 과정을 단계별로 안내합니다.
단일 또는 다중 시스템을 설치하는 방법과, 배포 인프라를 위해 제품 고유의 기능을 이용하는 방법을 보여 줍니다. 로컬 설치 또는 네트워크 설치 서버로부터 원격 제어 방식의 고도로 사용자 정의된 자동 설치 방법을 사용한 일괄 배포에 이르는 다양한 방식 중에서 선택하십시오.
처음 설치된 시스템의 유지 관리, 모니터링 및 사용자 정의와 같은 시스템 관리 작업에 대해 설명합니다.
일반적으로 가상화 기술을 설명하고, 가상화에 대한 통합 인터페이스인 libvirt를 소개하고, 특정 Hypervisor에 대한 자세한 정보를 제공합니다.
SUSE Linux Enterprise Server에 대한 저장소 장치를 관리하는 방법에 대한 정보를 제공합니다.
AutoYaST는·설치·및·구성·데이터가·포함된·AutoYaST·프로파일을 사용하여 사용자 작업 없이 자동으로 하나 이상의 SUSE Linux Enterprise 시스템을 설치하기 위한 시스템입니다. 이 설명서에서 자동 설치, 준비, 설치 및 구성의 기본 단계를 안내합니다.
로컬 보안 측면과 네트워크 보안 측면을 모두 망라하여 시스템 보안의 기본 개념을 소개합니다. AppArmor와 같은 제품 고유의 보안 소프트웨어 또는 보안 관련 이벤트에 대한 정보를 올바르게 수집하는 감사 시스템을 사용하는 방법을 보여줍니다.
보안 SUSE Linux Enterprise Server의 설치 및 설정에 대한 특정 정보와 해당 설치를 추가 보안 및 강화하는 데 필요한 사후 설치 과정에 대해 다룹니다. 보안 관련 선택사항 및 결정을 통해 관리자를 지원합니다.
문제 감지, 해결책 및 최적화에 대한 관리자 안내서 도구를 모니터링하여 시스템을 검사 및 최적화하는 방법과, 리소스를 효율적으로 관리하는 방법을 검색하십시오. 일반적인 문제와 해결책, 추가 도움말과 설명서 리소스에 대한 개요도 포함되어 있습니다.
SUSE Linux Enterprise Server의 GNOME 데스크톱을 소개합니다. 데스크톱의 사용 및 구성을 안내하고 주요 작업 수행을 도와줍니다. 주로 GNOME을 기본 데스크톱으로 이용하려는 사용자를 위한 설명서입니다.
HTML 버전으로 작성된 대부분의 제품 설명서는 /usr/share/doc/manual의 설치된 시스템 또는 데스크톱의 도움말 센터에서 찾으십시오. 최신 설명서 업데이트는 제품 설명서의 PDF 또는 HTML 버전을 다운로드할 수 있는 http://www.suse.com/doc에서 찾으십시오.
여러 피드백 채널을 사용할 수 있습니다.
제품에 사용 가능한 서비스 및 지원 옵션에 대해서는 http://www.suse.com/support/를 참조하십시오.
제품 구성요소의 버그를 보고하려면 http://www.suse.com/mysupport로 이동하여 로그인하고 을 선택합니다.
당사는 본 설명서 및 본 제품과 함께 제공된 기타 문서에 대한 사용자의 의견과 제안을 받고자 합니다. 온라인 설명서의 각 페이지 하단에 있는 사용자 의견 기능을 사용하거나 http://www.suse.com/doc/feedback.html로 이동하여 의견을 입력하십시오.
본 제품 문서에 대한 피드백이 있는 경우 doc-team@suse.de로 메일을 통해 보낼 수도 있습니다. 문서의 문서 제목, 제품 버전 및 게시 날짜를 포함해야 합니다. 오류를 보고하거나 개선사항을 제안하려면 문제점에 대한 간략한 설명을 제공하고 해당 섹션 번호 및 페이지(또는 URL)를 참조하십시오.
본 설명서에서는 다음과 같은 인쇄 규칙이 사용됩니다.
/etc/passwd: 디렉토리 이름 및 파일 이름
placeholder: placeholder를 실제 값으로 교체합니다.
PATH: 환경 변수 PATH
ls, --help: 명령, 옵션 및 파라미터
user: 사용자 또는 그룹
Alt, Alt–F1: 누르는 키 또는 키 조합. 키는 키보드에서와 같이 대문자로 표시됩니다.
, › : 메뉴 항목, 버튼
x86_64 이 단락은 x86_64 아키텍처에만 해당됩니다. 화살표는 텍스트 블록의 시작과 끝을 나타냅니다.
POWER, System z
이 단락은 System z 및 POWER 아키텍처에만 해당됩니다. 화살표는 텍스트 블록의 시작과 끝을 나타냅니다.
춤추는 펭귄(펭귄 장, ↑다른 설명서): 다른 설명서의 장을 참조하는 것입니다.