Operating System/Linux2007/06/16 14:37

Kevin Fenzi (kevin@tummy.com)
Dave Wreski (dave@nic.com)
v1.1.0 2000년 3월 8일
장범수 bschang@kldp.org
2000년 5월 9일

-----------------------------------------------------------------------------------
이 문서는 Linux System 관리자가 상대하게 되는 보안 이슈에 대한 일반적 개론을 밝힌다. 일반적인 보안 철학 등과 Linux System을 침입자로부터 보호할 방법 등의 특정 보기를 몇 가지 적어 놓았다. 보안에 관계된 자료들과 Program을 구할 수 있는 곳도 적어 놓았다. 개선 사항, 건설적인 비평, 첨가 사안, 그리고 수정안 등을 감사한 마음으로 수용하겠다. 여러분의 의견은 두 저자 모두에게 "Security HOWTO"를 Mail의 제목에 써서 보내 주기 바란다
-----------------------------------------------------------------------------------

6. Password 보안과 암호화 (Encryption)

암호는 오늘날 쓰이고 있는 가장 중요한 보안 기능 중 하나다. 탄탄하고 추측할 수 없는 Password를 갖는 것은 여러분에게나 여러분의 사용자들에게 중요한 일인 것이다. 요즘의 Linux 배포본들은 쉽게 추측할 수 있는 Password는 설정할 수 없도록 관리하는 passwd Program을 포함하고 있다. 여러분의 passwd Program이 이런 특성을 가지고 있는 최신판인지 확인하도록 하라.

암호화에 대한 깊은 토론은 이 File의 범위를 벗어 나는 것이지만, 소개 정도는 해야겠다는 생각이 든다. 암호화는 매우 유용하며, 요즘 같은 시대에는 필수적이기까지 하다. 자료를 암호화하는 방법에는 여러 방법이 있으며, 각각 나름대로의 특성이 있다.

대부분의 (Linux를 포함한,) Unix 계열은 DES (Data Encryption Standard: Data 암호화 표준)라고 하는 단 방향 암호화 연산법 (One-way Encryption Algorithm)을 사용해서 Password를 암호화한다. 이렇게 암호화된 Password는 (흔히) /etc/passwd, (Shadow Password를 쓴 경우에는) /etc/shadow 에 저장된다. 여러분이 Log-In할 때 입력한 Password는 먼저 암호 처리가 된 후에, 이 처리된 값이 다시 passwd 문서에 저장되어 있는 Password 처리값과 비교가 되게끔 되어 있다. 둘이 일치하면 같은 Password임이 분명하므로 Access가 허가된다. 비록 DES는 (맞는 키가 사용되었다는 가정 하에서 -- 같은 키로 암호화했다가 다시 복호화 하므로) 엄격히 따지면 양방향 암호화 방법 (Two-way Encryption Algorithm)이기는 하지만, 대부분의 Unix 계열이 쓰는 변종의 DES는 단방향 식이다. 이것은 etc/passwd (혹은 /etc/shadow)안의 암호화된 값을 역산(逆算)해서 원래의 Password 값을 얻는 것이 가능하면 안 된다는 뜻이다. [38. 단방향 연산]

여러분 Password의 Random 요소가 충분하지 않다면 crack이나 John the ripper 같은 brute force attack에 의해 Password를 간파 당하는 경우가 있을 수 있다. (아래의 Crack 참조). 팸 (PAM) Module을 쓰면 Password에 (MD5 등의) 다른 암호화 방식도 쓸 수 있게 된다 (아래 참조). 또한 여러분에게 Crack이 득이 되도록 쓸 수도 있다. 여러분들이 가지고 있는 Password Database에서 쉽게 깨질 수 있는 Password를 찾아내기 위해서 Crack을 써서 Test해 낼 수도 있을 것이다. 이러한 약한 Password가 발견되면, Password의 주인에게 이 사실을 알려줌과 동시에 Password를 쉽게 추측할 수 없도록 만드는 법을 알려주도록 하자.

좋은 Password를 고르는 방법에 대해서는 여기에서 정보를 얻을 수 있다.

6.1 PGP와 공개 열쇠 암호 기법 (Public Key Cryptography)

PGP (Pretty Good Privacy) 등에 사용되고 있는, 공개 열쇠 암호 기법은 하나의 열쇠로 암호화하고 또 다른 열쇠로 복호화하는 (두 개의 열쇠를 쓰는) 암호 기법을 쓴다. 전통적인 암호 기법은 동일한 하나의 열쇠로 암호화와 복호화를 둘 다 처리해 왔다. 이 (한 개뿐인) "비밀 열쇠"는 (암호화하는 쪽과 복호화하는 쪽의) 양편이 모두 가지고 있어야 했고, 무슨 수로든 보안을 유지하면서 한 쪽에서 다른 상대방으로 전달되었어야 했다.

이렇게 보안을 유지하면서 열쇠를 전달해 주어야만 되는 어려운 수고를 덜어 주기 위해서, 공개 열쇠 암호법은 두 개의 키를 사용한다. 각 개인의 공개 열쇠는 누구나 암호화에 쓸 수 있도록 배포되고 이에 상응하는 -- 복호화에 사용될 -- 개인의 비밀 열쇠는 개인이 보관한다.

공용 열쇠 암호 기법과 비밀 열쇠 암호 기법에는 각 장점이 있고, 차이점은 이 항목의 끝 부분에 적어 놓은 RSA FAQ를 읽어보기 바란다.

Linux는 PGP를 잘 지원해 준다. PGP 2.6.2와 5.0이 잘 작동된다고 알려져 있다. PGP에 대한 기본 안내문과 사용법을 알고 싶으면 PGP FAQ를 읽기 바란다. [13. 국제판 PGP FAQ]

미국 정부는 강력 암호 기법을 군용 무기로 취급하고 있고, 이에 따라서 PGP 등의 강력 암호 기법을 전자적 매체를 통해서 송출하는 것을 "수출 제한 조치"로 금하고 있으므로, 여러분 국가에 맞는 Version을 사용하도록 하라. [14. 국제판 PGP].

여기를 보면 Linux에 PGP를 설치하는 자세한 설명서가 있다. 새로운 Version의 Linux에는 패치를 구해서 붙여야 되는데, 여기에서 구할 수 있다.

또한 PGP를 Open Source 형태의 무료판으로 재구성하는 계획이 진행되고 있다. GnuPG는 무료판 PGP의 완성본이다. 이것은 IDEA나 RSA를 사용하지 않기 때문에 (수출 제한 조치에 걸리지 않고) 제한 없이 쓸 수 있다. GnuPG는 OpenPGP 규격에 거의 들어맞게 제작되어 있다. GNU Privacy Guard Web Page 에 가면 자세한 정보를 얻을 수 있다.

RSA FAQ에서 좀 더 정보를 얻을 수 있다. 여기에서 "디피-헬램 (Diffie-Hellamn)", "공용 열쇠 암호 기법 (public-key cryptography)", "전자 인증 (Digital Certificates)" 등의 용어에 대한 정보를 얻을 수 있을 것이다.

6.2 SSL, S-HTTP, HTTPS 그리고 S/MIME

SSL:- SSL, 혹은 Secure Sockets Layer는 Internet 상에서의 보안을 위해서 Netscape 사에서 개발한 것이며 Client/Server 인증용으로 쓰인다. SSL은 Transport Layer에서 작동되며 -- 많은 종류의 Data들을 사용자가 인지하지 못하는 배경 투명 작업으로 암호화하는 -- 안전하며 암호화된 통신로(通信路: channel)를 만들어 준다. SSL의 예제는 Netscape Communicator (혹은 Navigator)로 Secure Site의 File을 열어 볼 때 쉽게 볼 수 있으며 -- Netscape 사의 Data Encription을 비롯한 -- Communicator를 이용한 보안 통신 (secure communication)의 기초로 쓰인다. 추가 정보를 얻을 수 있다. Netscape 회사의 다른 종류의 보안 기술은 여기에 가면 있다. [39. Netscape사의 정보]

S-HTTP:- S-HTTP는 Internet 상에서 보안을 담당하는 또 다른 종류의 Protocol이다. 다중 열쇠 관리 기법 (multiple key management mechanisms)을 지원하며, Data를 주고받는 두 사람이 사용하는 암호 연산 기법 (cryptographic algorithm)의 일치를 Option 교섭을 통해서 지원하는 동시에, 기밀성 (confidentiality), 인증 (authentication), 보전성 (integrity: Data의 무결성), 송신 사실 증명 기능 (non-repudiability) 등을 공급해 준다. S-HTTP는 사용 허가된 특별한 Software로 만 사용이 되도록 제한되어 있으며, 암호화될 대상 Data를 부분 부분적으로 잘라서 (블록) 암호화해 준다. [36]

SMIME/:- S/MIME (Secure Multipurpose Internet Mail Extension)은 전자 우편과 Internet 상의 Message를 암호화하기 위한 Encription 기준이다. RSA에서 개발한 공개 기준이니만큼, 언젠가는 Linux에서도 볼 수 있었으면 한다. S/MIME에 대한 추가 정보는 여기에서 구할 수 있다. [15. 새로운 URL]

6.3 Linux IPSEC 기술법

CIPE를 포함한 여러 형식의 Data Encription을 포함해서, Linux용의 IPSEC 사용 기술법에는 여러 가지가 있다. IPSEC은 IETF가 IP Network Level 상에서 암호 기법 상으로 안전한 통신을 하기 위한 목적으로 만들었으며, 인증 (authentication), 보전성 (integrity), Access 관리, 기밀성 등을 제공해 주는 제품이다. IPSEC에 대한 정보와 Internet Draft 문서는 여기에서 구할 수 있다. 여기에서는 열쇠 관리 기법을 쓰는 다른 Protocol에 대한 Link와 IPSEC Mailing List, 그리고 Mailing List의 Archive 등을 찾을 수 있다. 여기서는 열쇠 관리 (Key Management)에 관한 여러 Protocol에 대한 Link와 IPSEC의 Mailing List와 Archive를 볼 수 있다.

애리조나 대학에서 개발하고 있는 "x-Kernel의 Linux용 구성본" (x-kernel Linux implementation)은 x-Kernel이라는 Network Protocol을 쓰는 Object-base Framework이고, 이곳에서 구할 수 있다. 가장 간단하게 설명을 하자면, x-Kernel은 Kernel 차원에서 Message를 통과시키는 방법이다.

"Linux FreeS/WAN IPSEC"이라는 IPSEC 구성본의 무료 배포판도 있다. 제작자의 Web Page에 가보면

"이러한 Service는 신뢰할 수 없는 Network들 (untrusted networks) 상에서, 신뢰할 수 있는 터널 통로(secure tunnel)를 만들도록 해준다. 신뢰할 수 없는 Network를 지나게 되는 모든 통신은 IPSEC gateway machine을 사용해서 암호화되어서 송신되고, 끝 부분의 수신 지점에서 다시 복호화되게 된다. 결과적으로 Virtual Private Network (VPN - 가상사설망)가 만들어지는 것이다. 비록 이 Network가 공개적인 Internet으로 연결된 여러 Site를 포함한다 해도, 실질적으로는 통신 보안이 되는 Network가 구성되는 것이다."

라고 적혀 있다.

이 Program은 여기에서 다운로드 받을 수 있고, 이 문서가 만들어 질 당시에 이미 1.0 Version이 만들어져 나와 있다.

다른 류의 암호화 기법은 -- 수출 제한 조치 때문에 -- 기본적으로 배포본에 포함되지 않는다.

6.4 Secure Shell ssh와 Stelnet

ssh와 Stelnet은 원격 System으로 접속을 하고, 암호화된 Connection을 유지하기 위한 Program 뭉치다.

openssh는 rlogin, rsh, 그리고 rcp의 대체용으로, 이 셋 보다 더 안정적인 Program들의 뭉치다. SSH는 두 Host간의 통신 암호화와 사용자 인증을 위해서 공개 열쇠 암호 기법을 사용한다. Session Hijacking과 DNS Spoofing을 방지해 주면서, 원격 Host에 Log-In하거나, Host끼리 Data를 복사하기 위해 사용될 수 있다. [17. 중계인 공격] 송수신 시의 Data Compression을 실행하며, Host간의 X11 통신의 통신 보안을 실행해 준다.

이제는 ssh 구성본이 여러 가지 만들어져 있다. Data Fellows에서 만든 원래의 상업용 구성본은 이곳에서 구할 수 있다.

성능이 뛰어난 openssh는 Data Fellows사의 초기 구성본에 기초를 두었으며 특허권이나 각 회사 전용의 Source를 전혀 사용하지 않도록 완전히 재구성되어 있다. 무료이며 BSD 사용권 (BSD License)에 기초를 두고 배포 사용된다. 이 것은 에서 구할 수 있다.

ssh를 기초부터 다시 Open Source로 구성한 "psst..."도 있다. 자세한 정보는 여기에서 구할 수 있다. [18. psst]

Windows Workstation SSH에서 Linux SSH로 연결할 수도 있다. Windows Client용으로 만든 무료 제품을 여기에서 찾을 수 있고, DataFellows 사()에서 만드는 유료 제품은 이곳에 있다.

SSLeay는 Netscape사의 SSL를 무료판으로 구성한 것으로 Secure Telnet, Apache Module, 여러 가지 Database, DES와 IDEA 그리고 Blowfish등의 여러 종류 Algorithme을 포함한다.

SSLeasy는 Eric Young이 개발한 것으로, Netscape사의 Secure Sockets Layer Protocol의 작동을 무료 구성판으로 만든 것이다. 이 것에는 Secure Telnet, Apache용 Module, 여러 Database, DES와 IDEA Blowfish등을 포함한 Algorithme 등의 포함되어 있다.

Telnet 연결 시에 암호화를 할 수 있는 Secure Telnet의 교체품이 이 라이브러리를 써서 만들어져 있다. Stelnet은 SSH와는 달리 Netscape가 만든 SSL (Secure Sockets Layer)를 사용한다. SSLeay FAQ를 읽어보면 Secure Telnet과 Secure FTP에 대한 것을 찾을 수 있다.

SRP는 (Secure Remote Password Protocol) 또 다른 Telnet/ftp 통신 보안용 구성의 하나이다. 제작자의 Web Page에 가보면 다음과 같은 설명을 하고 있다.

"SRP Project는 통신 보안 목적의 Internet Program을 무료로 전세계에 배포하는 것이 목적으로 개발되고 있다. 완전한 통신 보안이 되는 Telnet과 FTP Distribution을 시작점으로 해 서, (현재의) 빈약한 Network 상의 인증 System을 사용자가 편하게 쓸 수 있는 강력한 것으로 교체하고자 한다. 보안은 선택적으로 제공되어서는 안되며, 당연히 기본적으로 제공되어야만 하는 것이다."

자세한 정보는 여기에서 구할 수 있다.

6.5 PAM - 장착 방식 인증 Module (Pluggable Authentication Modules)

새로운 Version의 Redhat에는 "PAM"이라는 통일된 인증 방식이 들어 있다. PAM은 -- 사용자 여러분이 이진 File을 다시 Compile할 필요가 없이 -- 인증법, 제한 사항, 지역 인증법을 쉽게 Encapsulation 해 준다. PAM의 Encapsulation 처리 방법은 이 File의 내용 밖의 문제이지만, PAM의 Web Site에 가서 꼭 보기를 권한다.

PAM으로 할 수 있는 일 가운데 몇 가지 만 들어보면 아래와 같다.

- Password에 비 () DES 암호화 방법을 쓴다. (Password를 부루트 포스 공격을 써서 풀어내는 것이 어렵게 된다)
- 사용자들이 쓸 수 있는 (프로세스 수, 메모리의 양 등의) 자원을 제한하는 방법을 써서 Service 거부식 공격 (Denial of Service: 이하 DoS)을 못하도록 한다.
- Password를 Shadow Password로 감추는 것을 쉽게 할 수 있도록 한다. (참조: Shadow Password)
- 특정한 사용자가 특정한 시간에 특정한 장소에서만 Log-In할 수 있도록 제한 조정하는 것이 가능하다.
- System을 설치하고 조정하기 시작한 지 몇 시간 안으로, 공격 시도 시점에서 막을 수 있다. 예를 들면, .rhosts File을 System 전체용으로 사용자 홈 Directory에서 사용하는 것을 막기 위해서 다음을 /etc/pam.d/rlogin에 PAM을 사용해서 넣을 수 있다.

#
# Disable rsh/rlogin/rexec for users
#

login auth required pam_rhosts_auth.so no_rhosts

6.6 암호 기술이 적용된 IP Encapsulation (Cryptographic IP Encapsulation :CIPE)

이 Software의 일차적 목적은 -- Internet 등의 -- 개방형 Packet Network를 가로 질러가는 Sub Network를 (가짜 Message 주입, Traffic 분석 등의 행위로부터) 보호하기 위한 방법을 제공하는 것이다.

CIPE는 Data를 Network 수준에서 암호화한다. Network의 Host 사이에서 돌아다니는 Packet이 암호화된다. 암호화 엔진은 Packet들을 주고받는 드라이버 근처에 위치한다.

이것은 --Socket 수준에서 Data를 연결함으로 암호화를 하는-- SSH와는 다른 것이다. CIPE는 --가상사설망 구성하기 위해서-- Tunneling에 사용될 수 있다. 아래 수준 (Low-level)에서의 암호화는 -- Application Software를 수정할 필요가 없이 -- VPN에 연결되어 있는 두 Network 사이에서 투명하게 작동되도록 만들어 질 수 있는 이점이 있다.

CIPE File에서 요약해 왔음:

IPSEC 기준은 (다른 일도 하지만) 암호화된 VPN을 만들기 위해서 사용될 수 있는 Protocol의 집합을 정의한다. 반대적으로, 많은 Option을 가지고 있는 IPSEC은 상대적으로는 헤비급이면서 복잡하며, 주어진 Protocol 전부를 사용하는 경우는 아직은 드물면서도, (열쇠 관리 등의) 몇 문제는 아직 완벽히 해결되어 있지 않다. CIPE는 좀 더 간단한 방식을 사용하는데, 초기 설정 시에 매개 변수 형식으로 (정말로 사용하고자 하는 Encription 방식을 선택하는 등) 많은 조건에 대한 정해진 선택을 할 수 있다. 이것은 탄력적인 운영을 제한하기는 하지만, 간단한 (그리고, 이 이유로, 쉽게 Debug를 할 수 있는 등으로) 능률적인 설정을 가능하게 해 준다.

정보를 더 원하면 여기을 참조할 것.

다른 Cryptography의 경우와 마찬가지로 이것도, 수출 제한 조치 때문에, Kernel과 함께 배포되지 않는다. [19. CIPE 구하기]

6.7 Kerberos

Kerberos는 MIT의 아테나 Project 아래에서 개발된 인증 방식이다. 사용자가 접속해 들어오면, Kerberos는 (Password를 사용해서) 사용자를 인증하고, Network 상에 흩어져 존재하는 Server와 Host들에게 이 사용자의 신분을 증명해 주는 방법을 제공한다.

이 인증법은 Remote Log-In (rhost) Program 등에 의해서 Password 없이 사용자가 다른 Host로 (.rhost File을 대신해서) 접속을 할 수 있도록 해 준다. 이 인증법은 또한, 보내는 사람 (발송인)이 가짜가 아닌 것을 보증하는 동시에, Mail이 정확한 사람 (수취인)에게 전달이 되도록 보증하기 위해서, Mail System에 의해 사용될 수도 있다.

Kerberos와 딸려 있는 많은 Program을 사용하는 궁극적인 효과는, 사용자가 System을 속여서 다른 사람인 척 "Spoofing"을 할 수 있는 능력을 거의 없애 버리는 데 있다.

Kerberos에 대한 추가 정보는 여기에서 찾을 수 있고, Code는 이곳에 있다.

[인용: Stein, Jennifer G., Clifford Neuman, Jeffrey L. Schiller 공저, "Kerberos: 오픈 Network System용 인증 Service", 1998년 겨울 미국 Texas 의 Dallas 에서 열린 USENIX 발표회 회보, (Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller, "Kerberos: An Authentication Service for Open Network Systems." USENIX Conference Proceedings, Dallas, Texas, Winter 1998)]

Kerberos를 Host의 보안의 정도를 높이가 위한 첫 방법으로 쓰지는 말아야 한다. 이 것은 매우 구성하기 힘들고, SSH처럼 광범위하게 사용되지는 않고 있다.

6.8 Shadow Password

Shadow Password는 암호화되어 있는 Password 정보를 일반 사용자들로부터 비밀로 유지하기 위한 한 가지 방법이다. 최근에 나온 Debian은 Shadow Password를 기본적으로 사용하도록 되어 있으며, 다른 Linux 구성본은 암호화된 Password를 /etc/passwd File에 누구나 읽을 수 있을 수 있도록 저장한다. 누구라도 이 File을 Password를 추측해 내는 Program에 돌려서 Password를 알아내려고 할 수 있다. 반면에 Shadow Password는 특별 권한이 있는 사용자들만 읽을 수 있도록 Password에 대한 정보를 /etc/shadow File에 저장한다. Shadow Password를 사용하려면, Password 정보를 읽어야 하는 모든 유틸리티들이 Shadow Password를 지원하도록 제대로 리Compile되었는지 확인해야 한다. 반면에 (위의 설명한) PAM은 실행 Program들을 리Compile할 필요 없이 단지 Shadow Module을 장착시킴으로써 Shadow Password를 쓸 수 있도록 해준다. 필요하다면 Shadow-Password-HOWTO File을 읽으면 된다. 이것인데, 지금은 약간 낡았고, PAM을 지원하는 배포본에는 필요가 없다.

6.9 Crack과John the Ripper

Passwd Program을 실행할 때, "쉽게 추측할 수 없도록 만든다"는 Password 규칙을 어떤 이유가 있어서 실행하지 못하게 된 상황이라면, 여러분 스스로가 Password 격파 Program을 실행시켜서 실제의 사용자들이 안전한 Password를 쓰고 있는지 확인하는 것도 좋은 것이다.

Password 격파 Program은 간단한 방식으로 작동한다: 사전에 있는 모든 단어와 그 변화형을 Password로 시도해 하고, 단어 하나 하나를 암호화하면서 이미 암호화된 Password와 비교하는 것이다. 만약에 일치하는 단어를 찾게 되면, 암호를 알아낸 것이다.

원한다면 많은 Password Crack Program들을 구할 수 있을 것이다. 그 중에서 알아두면 좋은 두 개가 바로 "Crack"과 "John the Ripper"다. CPU 자원을 엄청나게 소비할 것이지만, 이 Program을 여러분이 먼저 사용해 봄으로서 혹시나 공격자가 이런 Program을 사용해서 여러분의 System에 침입할 가능성이 있는지를 알아보는 동시에, 약한 Password를 쓰는 사용자들을 찾아내서 미리 알려줄 수가 있을 것이다. 공격자가 여러분의 passwd (Unix에서는 /etc/passwd) File을 얻으려면 우선은 다른 개구멍을 이용해 먼저 들어와 있어야 하겠지만, 이런 개구멍 허점들이 여러분이 생각하는 것보다 훨씬 흔하다는 점 (즉, passwd가 저장된 File을 빼내는 것이 어렵지 않다는 점)에 주의해야 한다.

전반적인 Network 보안에 관심을 두어야 하는 만큼, 여러분의 Network에 Microsoft Windows를 쓰는 Computer가 있다면, Windows용으로 제작된 Crack Program인 L0phtCrack도 한 번 보도록 하자

6.10 CFS와 TCFS - 암호화 File System과 투명 암호화 File System

CSF는 Directory 전체를 암호화하고, 사용자들이 문서를 암호화해서 저장할 수 있도록 하는 방법의 하나이다. 이것은 NFS Server를 지역 Computer에서 작동하는 방식으로 실행한다. RPM을 여기에서 구할 수 있고, 작동 방식에 대한 정보는 이곳에 더 있다.

TCSF는 CFS보다 좀 더 완성도를 높여서 (암호화/복호화 작업을 Background에서 투명하게 실행함으로서) 암호화된 System을 쓰고 있는 사용자 입장에서는 암호화/복호화 작업이 눈에 보이지 않도록 한 것이다. 이곳에서 정보를 구할 수 있다.

System 전체에 사용하지 않을 수도 있다. 부분적으로 Directory Tree를 암호화하는 것에만 쓰일 수도 있는 것이다. [20. Microsoft OS를 동시에 쓰는 경우]

6.11 X11, SVGA와 Display 보안

X11

Display의 보안은 중요하다. 입력되는 Password를 공격자가 가로채거나, 여러분이 Monitor로 읽고 있는 문서나 정보를 보거나, 심지어는 Superuser의 권한을 얻기 위해 보안 개구멍을 이용하기까지 하는 일들을 막기 위해서다. 도청자(sniffer)들이 여러분과 원격 System 사이의 상호작용을 모두 볼 수 있도록 허락하는 셈이라 할 수 있는, Network 상에서의 원격 X 응용 Program 수행도 위험 천만한 일이다.

X는 많은 Access 통제 장치를 가지고 있다. 가장 간단한 것은 Host에 기초를 두는 것이다. 여러분의 Display에 접근할 수 있는 Host들을 xhost를 사용해서 지정할 수 있다. 안전한 방법은 아니다. 누군가가 여러분의 Computer에 이미 근접할 수 있다면, 그는 xhost +그들의 Computer라는 명령어를 사용해서 쉽게 숨어 들어올 수 있다. 아울러 신임되지 않은 기계 (untrusted machine)의 접속을 허락하면, 그쪽의 누구라도 여러분의 Display를 침탈할 수 있다.

Log-In을 위해서 xdm을 (xdm: X Display 매니저, x display manager) 사용하고 있다면, 더 나은 Access 방법인 MIT-MAGIC-COOKIE-1을 구해서 사용하는 것을 고려해 보도록 하라. 128 Bit 짜리 "cookie"가 만들어져서 .Xauthority 문서에 저장된다. 원격 Computer에서 여러분의 Display에 접근하는 것을 허용할 필요가 있다면, 그 Computer로부터의 접근만을 제공하기 위해 xauth 명령과 여러분의 .Xauthority File에 들어 있는 정보를 적용할 수 있다. http://metalab.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.html에 있는 Remote-X-Apps mini-howto를 보도록 하라.

보안 유지되는 X의 접속을 만들기 위해서 ssh를 쓸 수 있다 (위의 [ssh]를 참조할 것). End User의 시점에서는 투명하게 작동되면서도, 암호화되지 않은 자료가 Network 상에 떠다니지 않도록 하는 방법이 되는 장점이 있다.

X 보안에 대해 더 많은 정보가 필요하면 Xsecurity의 Man Page (man)를 보기 바란다. 보다 안전한 방법은 xdm을 써서 Console에 Log-In 하도록 하고, ssh를 써서 X Program을 원격 수행하려는 원격 Site들로 가는 것이다.

SVGA

SVGAlib Program들은 Linux Computer에 있는 모든 Video Hardware에 접근할 수 있도록 이것의 SUID가 root로 정해져 있다. 이것은 매우 위험한 것이다. 만일 이 Program들이 깨지면, 쓸 수 있는 Console을 살리기 위해서 다시 Booting 시켜야 한다. 여러분이 실행시키고 있는 SVGA Program들이 진품인지, 그리고 최소 수준이나마 믿을 수 있는 것들인지 확인하라. 더 나은 방법은 SVGA Program들을 아예 수행시키지 않는 것이다.

GGI (Generic Graphics Interface project)

Linux GGI 계획은 여러 가지의 Linux Video Interface 문제들을 해결하고자 노력하고 있다.. GGI는 Video Code 일부분을 Linux Kernel 안으로 옮겨 실행하는 방식으로 Video System에 대한 Access를 관리할 것이다. 이것은 GGI가 -- 정해 놓은 양호 상태로 -- 언제라도 여러분의 Console을 복구해 줄 수 있다는 것을 의미한다. 또한 여러분 Console에서 트로이 목마식의 Log-In Program이 돌지 않도록 하기 위해서, 보안 경계 열쇠(관리)도 허락될 것이다.

Creative Commons License
Posted by BLUEDAY™