>> Edit article
이름
제목
패스워드
아래의 문서는 http://www.openna.com/community/articles/security/v1.3- xml/coverpage.html 에서 영어 원문을 한글로 일부 번역한 문서 입니다. 이문서의 원래 용도는 학원에 다니는 우리반 사람들을 위한것이었지만 우리반 사람들만 보기에는 아까운 나머지 올리게 되었습니다. 제가 번역한 문서는 일부 의역과 직역을 한 경우 가 많이 있습니다.그점 참 고 해 주시고 제가 번역한 가운데 버그가 약간 있을수 있으니 참고 해 주시길 바랍니다. ========본문서의 저작권은 영문원서의 저작자에게 있습니다.========== 이문서의 배포는 마음대로 할수 있으나 저작자와 번역자는 꼭 밝히시길 바랍 니다.(참고:본 번역 문서의 버그 패치는 학원수료후 할 예정입니다.) =========================================번역자 김진섭========= General System Security 개요 리눅스 서버의 보안은 관리자가 어떻게 하느냐에 따라 달려 있다. 우리는 필요로 하지 않는 서비스를 제거 하므로서 우리의 서버에 있는 소프 트웨어와 서비스를 보호 할수가 있다.약간의 시간내에 당신 시스템의 설치와 설정으로 당신은 많은 서버 공격으로 부터 막을수가 있다. 이 장에서 우리는 당신의 시스템에서 기본적인 보안 기 술을 좀더 많이 이야기 할 예정이다. 아래에 나오는 것들은 안팎에서 공격하는것을 막아주는 데에 도움이 돼어진다. 바이오스 바이오스에 패스워드를 설정하고 플로피 드라이버로 부팅하는것을 막는방법 은 추전을 한다. 당신은 당신의 바이오스 매뉴얼을 점검하거나 부팅을 어떻게 하는지 계속해 서 보게 된다면 플로피 드라이버의 부팅 불가능과 바이오스의 패스워드 설정은 당신 시스템 의 보안을 향상 시킬것이다. 이것(바이오스 패스워드설정,플로피 드라이버의 부팅불가능)은 외부사람이 특별하게 제작된 부팅 디스크로 당신 시스템의 부팅이나 바이오스의 재설정을 막아 줄것이 다. 또한 중요한게 있는데 외부사람이 당신의 컴퓨터본체를 열어서 바이오스 배터리를 뽑아 버리므로 서 당신의 시스템에 접근할수 있다는것을 주의 하기 바란다. 만약에 바이오스 배터리를 뽑았다 가 다시 집어넣으면 바이오스 내용은 초기화가 된다. 서버와 네트워크간의 분리 최근의 설치된 당신의 리눅스 서버에서 당신이 현재 온라인 상태로 있다면 서버와 네트워크간의 분리가 현명한 방법이 아니다. 그래서 만약에 보안설정을 하기전에 모드 네 트워크를 비활성화 시킨다음에 보안설정을 해야 한다. *당신의 시스템의 네트워크 디바이스 장치를 비활성화 시킬려면 아래의 명령 어를 사용. [root@deep /]# ifdown eth0 *당신의 시스템의 네트워크 디바이스 장치를 활성화 시킬려면 아래의 명령어 를 사용. [root@deep /]# ifup eth0 *모든 네트워크를 비활성화 시킬려면 아래의 명령을 사용. [root@deep/]# /etc/rc.d/init.d/network stop Shutting down interface eth0 [OK] Disabling Ipv4 packet forwarding [OK] *모든 네트워크를 활성화 할려면 아래의 명령을 사용. [root@deep/]# /etc/rc.d/init.d/network start Setting networkparameters [OK] Bringing up interface lo [OK] Bringing up interface eth0 [OK] 보안 정책 어떠한 누구로 부터 서버의 공격을 막을 필요가 없다고 결정을 하지 않았다 면 이러한 보안 정책은 필요가 없다는 것을 알기 바란다. 당신은 생각 할수 있는 보안정책이나 생 각 할수 도 없는 보안정책 이 필요하다. 정책은 또한 침입에 대비해 당신이 어떻게 해야할지 결정해야 한다. 당신이 보안 목적과 정책이 완전히 부합된다고 했을 때 무엇을 고려 하고 있는가? 다음 에 질문들은 몇몇의 일반적인 윤곽을 제공하게 될것이다. *당신은 기밀이나 민감한 정보를 어떻게 등급화 하고 분류화 해놓고 있는가? *당신의 시스템에 기밀이나 민감한 정보가 존재하는가? *정확히 누구를 대상으로 시스템을 보호하려 하는가? *원격에서의 사용자가 꼭 당신의 시스템에 접속할 필요성이 있는가? *패스워드나 암호화가 충분한 보호를 제공하는가? *당신은 인터넷에 접속하는게 필요하는가? *얼마나 많은 사람이 인터넷으로 당신의 시스템에 접속하는가? *당신은 보안홀이 생겼을때 어떻게 행동하는가? 지금까지의 목록은 짧다. 그리고 이이러한 목록들이 완전히 만들어 지기전 에 당신의 목록들은 좀더 많이 일을 수행하도록 할것이다. 어떠한 보안정책이든지 집단 모임에 서의 안과 밖의 사람 가운데 얼마나 많은 사람이 믿을 수 있는지 믿지 못하는지의 분류화가 돼어 있어야 한다. 하지만 보안 정책은 당신이 허락하는 사람이 작업에 필요한 정보를 이유가 있어서 갖고 가는지 아니면 이유가 없이도 정보를 가져 가는지의 균형을 마춰야 한다. 방금 말 한 윤곽들은 당신의 보안정책을 결정하게 될것이다. 적절한 패스워드 선택 리눅스의 일반적인 시스템 보안은 패스워드부터가 시작이다. 많은 사람들은 자신들만의 가치 있는 정보와파일을 컴퓨터에 저장을 해놓는다. 그리고 다른 사람들로 부터 보호 하고 있는 유일한 8자문자가 패스워드라고 한다. 깨지지 않는 패스워드는 많은 사람들이 생각하는 것 보 단 세상에 존재 하지 않는다. 시간과 모든 패스워드들의 관한 정보만 있다면 사회적인 기술자나 폭력으로 패스워든 추측 돼어 질것이다. 사회적인 서버로의 접근인 패스워드 방식과 또 다른 접근 방식들은 여전히 쉽고, 대부분 유명한 방법으로 서버와 계정을 취득하고 접근할수있다. 때때로 남보다 뛰어 난 사람이거나 회사에서 높은위치에서 엔지니어에게 간단한 행동을 하므로써 그리고 하루에서 적당 한 시간에 엔지니어에게 호통을 치므로서 좋지 않는 결과를 낳게 된다. 일주일마다 당신의 시스템에서 패스워드 크랙을 시도한다면 좋은 생각이다. 이러한 계획은 쉽게 추측돼어지고 허접이 드러난 패스워드를 발견하거나 대체하는것을 도와준 다. 또한 패스워드 점검 매커니즘은 제일 처음의 패스워드나 오래된 패스워드를 선택할때 보안 에 약한 패스워드를 제거 할때 이용돼어 진다. 패스워드가 명백한 사전 용어 이거나 똑같은 규칙 의 패스워드 이거나 숫자나 특수 문자를 포함 돼어 있지 않는 것을 새로운 패스워드로 받아 들이 지 않도 록 해야 한다. 우리는 패스워드를 만들때 다음의 규칙을 따르도록 추천한다. *최소한 6문자로 만들어야 하며, 제공돼어지는 8문자는 최소한 하나의 숫자 나 특수 문자가 제공 돼어 져야 한다. * 패스워드는 평범한것은 아니어야 한다.(평범한 패스워드는 추측하기도 쉽 고,보통 사용자 나 가족,직업이나 몇몇 다른 사람의 문자들로 이루어 진다.) *패스워드는 기간이 정해 져 있어야 한다. (몇 주기마다 패스워드는 새로운 패스워드로 바뀌어야한다) *패스워드 입력은 몇번의 시도로 잘못 입력 돼었을 경우 초기화가 돼어 있어 야 한다. 관리자 계정 root란 계정은 대부분의 유닉스 시스템에서 미리 제공돼어지는 계정이다. root계정은 보안에 구속돼 어 있지가 않다(보안에 허술하다.). 이것은 무얼 의미 하냐면 당신은 시스템 이 무엇을 하는지 그리고 당신이 요구 하는 것을 정확히 하는지 알수가 있다. 게다가 잘못된 명령으 로 시스템 파일을 손상 시키는것이 쉽다. root계정을 사용했을때 가능한한 조심해야 하는게 중요하 다. 보안적인 이유로, 꼭 필요로 하지 않는다면 root 계정으로 접속 하지 는 말아라. 또한 당신이 당신의 서버에 있지 않는다면 root 라는 계정으로 계속해서 로그인 해 있지 말아라. root 계정 로그인 시간 설정 주의를 줬는데도 불구 하고 그렇지 않는 사람(root계정으로 로그인 해서 계 속해서 root계정으로 접속해 있거나,작업을 하면서 로그인을 빠뜨린것을 신경쓰지 않는 사람)이 있다. 이러한 문제를 풀어줄 대답은 일정한 시간동안 사용하지 않는다면 자동적으 로 로그 아웃 할수 있 도록 배쉬 쉘스크립트를 만드는 것이다. 이렇게 하기 위해서는 당신은 초단 위인 "TMOUT"라는 특별한 값을 설정해 주어야 한다. * profile파일 (vi /etc/profile)에 "HISTSIZE="라는 구문 뒤에 어느 라인 이던간에 다음 구문을 입력하고 저장 시킨다. TMOUT=7200 우리가 입력했던 "TMOUT"값은 초단위이고 2(60*60=3600*2=7200초)시간을 나 타낸다.만약 당신이 "TMOUT"값을 /etc/profile파일에 기록하는것을 결정했다면 이 설정은 자신 의 시스템에 접속해 있는 모든 유저에게 적용이 된다는것을 알고 있어야 한다. 그래서 대신에 각각의 유저에게 따로 적용 시키고자 한다면 각각의 유저의 디렉토리에 있는 .bashrc파일에 값을 설정 해 주도록 한다. "TMOUT"값을 당신의 시스템에 설정해 주었다면 당신은 로그 아웃하고 다시하 번 root로그인하여 결과값이 적용 돼는지 체크 하여야 한다. /etc/exports 파일 만약에 당신이 NFS서비스를 사용하여 파일을 공유 시켜 놓았다면, 자신의 시 스템에 접근 제한을 할수 있도록 /etc/exports파일을 설정해 주어야 한다.(루트로서 쓰기 모드 를 허용 하지 않으며 어디서는 읽기만 할수 있도록 설정 하는 것을 의미한다.) 단계 1 * exports파일(vi /etc/exports)을 편집하고 추가하기 실례 : /dir/to/export host1,mydomain.com(ro,root_squash) /dir/to/export host2.mydomain.com(ro,root_squash) /dir/to/export는 당신이 공유시키고자 하는 디렉토리이 며,host1.mydomain.com은 당신의 시스템에 접근 할수 있는 컴퓨터라 할수 있으며, <ro>옵션은 읽기 모드로만 마운트할 수있도록 한것이며, <root_squash>옵션은 루트로 접속을 하더라도 이디렉토리에다가 쓰기를 허용 하지 않는 것이다. 단계 2 * 이러한 설정을 실행 할려면 아래의 명령을 실행 시켜야 한다. [root@deep]# /usr/sbin/exportfs -a 경고 : NFS서비스는 보안상의 위험을 가질수 있다. 나는 NFS서비스 사용 하 는것을 추천하지는 않는다. 단일 사용자 리눅스 모드 리눅스에서는 "linux single" 이라는 단일 사용자 모드의 명령어가 있 다. "linux single"이란 문장은 시스템이 시작할때 부트 프롬프트 에다가 입력 할수 있다. 단일 사용자 모드 는 보통 시스템 유지를 위해 사용되어 진다. 당신은 LILO부트 프롬프트 다음에 아래에 명령어로 단 일 사용자 모드 명령어를 입력하여 부트 할수 있다. LILO : linux single 이러한 명령어는 당신이 수퍼 유저로서 런레벨 1로 로그인하여 패스워드는 입력 하지 않아도 된다. 단계 1 단일 사용자 모드에서 패스워드를 입력 하지 않는 것은 좋지 않는 생각이 다. 당신은 이것을 inittab파일(vi /etc/inittab)을 아래에 라인을 변경하므로서 설정할수 있 다. id:3:initdefault: To read: id:3:initdefault: --:S:wait:/sbin/sulogin 윗라인의 추가는 단일 사용자 모드로 부트하기전에 root패스워드를 입력하기 를 요청할것이다. (root쉘을 읽어 들이기 전에 init(8)이 만들어져서 sulogin(8)이 실행 되어 진다.) 단계 2 이러한 설정이 실행돼도록 다음 의 명령어를 입력한다. [root@deep /]# /sbin/init q LILO 와 /etc/lilo.conf파일 LILO는 대부분 리눅스 부트 로더롤 사용 되어진다. LILO는 부트 프로세서 를 다루고 플로피 디스크와 하드디스크나 다른 운영체제를 위한 부트 매니저로서 부팅할수 있도록 한 다. LILO는 리눅스 시스템에서 이러한 이유로 매우 중요하다. 우리는 LILO를 우 리가 가능한한 보호할수 있도록 해야 한다. LILO파일의 설정파일은 lilo.conf파일이며 lilo.conf파일 은 /etc디렉토리에 있다. lilo.conf파일은 리눅스 시스템과 LILO 프로그램의 보안을 향상 할수있도록 설정할수 있다. 아래의 세가지 중요한 옵션은 LILO프로그램의 보안을 향상 시킬것이다. timeout=00추가 이 옵션은 LILO가 유저의 디폴트 선택으로 부팅하기전 유저의 입력을 기다리 는 시간을 조정 하는 것이다. C2보안의 요구사항중의 하나는 시스템 듀얼 부팅을 하지 않는다면 0으로 설 정해 주는 것이다. restricted추가 이옵션은 패스워드만을 요구하는 것이다. 만약 LILO입력창에서 리눅스 단일 사용자 모드 명령어를 친다면 restricted옵션은 "password"옵션과 함께 사용되어진다. password=<password>추가 이옵션은 커널이미지를 읽어 들일려고 할때 패스워드를 사용자에게 요구한 다. 실제적으로 /etc/lilo.conf 에서 password파라미터를 사용하는 것은 부팅으로 부터 리눅스 이미지를 보 호하는 것이다. 만약 당신이 리눅스 단일모드나 보통적으로 부팅한다면 아무 문제가 없다는 것을 의미한다. password파라 미터는 항상 당신에게 패스워드를 요청할것이다. 당신이 콘솔에서 루트 패스워드를 입력하고 있는동안 원격으로 리눅스를 리 부팅 못하는것은 매우 좋지 않은 영향을 줄수 있다. 이것은 "restricted"와 "password"간의 이유때문이 며 "restricted"는 패스워드보호를 편하게 하고 "password"는 "LILO"프롬프트에서 단지 파라미터가 기술되어야 만 필요하다. 패스워드는 항상 민감한 경우이다. 또한 /etc/lilo.conf파일이 더이상 읽지 못하게 하거나 어느 사용자라 하더라도 패스워드를 읽을수 있게도 할수 있다. 여기에 lilo.conf파일에 있 는 LILO의 예제가 있다. 단계1 lilo.conf파일(vi /etc/lilo.conf)를 편집하고 다음에 보여준 3가지 옵션을 첨가하거나 바꿔라 boot=/dev/sda map=/boot/map install=/boot/boot.b prompt <-LILO프롬프트에서 당신이 pass옵션을 원하지 않는다면 이 라인을 제거하라. timeout=00 <-LILO프롬프트가 없도록 이라인을 00으로 바꿔라. linear messag=/boot/message<-환영메시지를 원하지 않는다면 이라인을 제거하라. default=linux restricted<-패스워드 보호를 편하게 하려면 이라인을 첨가한다. password=<password><-당신의 패스워드를 입력할려면 이라인을 첨가하라. image=/boot/vmlinuz-2.4.2-2 label=linux initrd=/boot/initrd-2.4.2-2.img read-only root=/dev/sda6 단계2 /etc/lilo.conf파일에서는 암호화하지 않는 패스워드의 파일이며 이것은 수 퍼유저인 "root"만이 읽을수 있도록 해야 한다.아래와 같이 입력하므로 위와 같이 할수 있다 . [root@deep/]#chmod 600 /etc/lilo.conf 단계3 /etc/lilo.conf의 업데이트된 설정을 적용시켜야 한다. * /etc/lilo.conf파일을 업데이트 하기위해서는 아래의 명령어를 사용한다. [root@deep/]#/sbin/lilo -v LILO version 21.4-4, copyright 1992-1998 Wernerr Almesberger 'lba32' extentions copyright 1999,2000 John Coffman Reading boot sector from /dev/sda had : ATAPI 32X CD-ROM drive, 128kB Cache Merging with /boot/boot.b Mapping message file /boot/message Boot image : /boot/vmlinuz-2.2.16.22 Mapping RAM disk /boot/initrd-2.2.16-22.img Added linux * /boot/boot.0800 exists - no backup copy made Writing boot sector 단계4 당신이 lilo.conf 파일을 변하지 않게 보안을 좀더 강화하게 할려면 chatter 명령어를 사용한다. [root@deep/]#chattr +i /etc/lilo.conf 그리고 이러한 설정은 lilo.conf파일에는 어떠한 변화도 막을것이다. 만약 당신이 lilo.conf파일을 고치고자 싶다면 변하지 않도록 하는 것을 변 하도록 할 필요가 있다. *다시 편집할려고 한다면 아래의 명령어를 사용한다. [root@deep/]#chattr -i /etc/lilo.conf 경고: 당신이 패스워드 옵션을 사용했을때 LILO는 상상 패스워드를 당신에 게 요청할것이다. 만약 당신이 LILO 프롬프트(e.g single)에서 옵션을 입력하여 통과하거 나 /etc/lilo.conf 파일에 "restricted"옵션을 설정하지 않을 부주의가 있을수 있다. "restricted"옵션은 패스워드 보호를 느슨게 해주고 "password"옵션은 단지 LILO프롬프트에서 요구 되어진다. 만약에 당신이 "restricted"옵션을 사용하지 않는다면 리눅스는 항상 당신에 게 패스워드를 물어보고 당신은 원격에서 당신의 시스템을 리부팅할수 없으며 게다가 /etc/lilo.conf 파일속에 "password"옵션을 함께 "restricted"옵션을 같이 사용하는것도 소홀히 해서는 않된다. Ctrl-Alt-Delete키를 이용한 재부팅 방지 /etc/inittab파일의 아래에 "#"(주석처리 기호)으로 Control-Alt-Delete명령 을 사용하여 당신의 컴퓨터를 셧다운시키는 것을 못하게 할것이다. 만약 당신이 물리적인 보안장치가 없다 면 이것은 꽤 중요하다. 단계 1 * 이렇게 하기 위해서 inittab파일(vi /etc/inittab)파일을 편집하고 주석처 리한다. ca :: ctrlaltdel:/sbin/shutdown -t3 -r now To read #ca::ctrlaltdel:/sbin/shutdown -t3 -r now 단계2 *변화된걸 즉시 적용할려면 [root@deep/]#/sbin/init q /etc/services 파일 "standard" 서비스들의 포트넘버는 RFC(1700)문서의 "Assigned Numbers"에 명시되어 제공되어진다. /etc/services파일은 서버와 클라이언트 프로그램간에 숫자(포트넘버)로 서 비스 이릉을 주고 받는다. 서비스의 종류와 포트넘버의 리스트가 있는곳이 /etc/services파일이 다. /etc/services파일을 "root" 유저만이 변경할수 있도록 되어있다. 드물게도 /etc/services파일을 편집할 려고 했는데 이미 서비스 이름과 포트번호가 적혀 있을수 있다(역자 주 : 리눅스 배포판 업체가 패키 징 하면서 적어 놓을수 있다.) 보안을 강화 할려면 우리는 허가 받지 않은 사람으로 부터 저워지거나 변경 되는것을 막기 위하여 변경불가능하게 해야한다. * /etc/services파일을 변경 불가능하게 할려면 아래의 명령어를 사용한다. [root@deep/]# chatter +i /etc/services /etc/securetty 파일 /etc/securetty파일은 tty와 vc(virtual console)디바이스를 통하여 당신이 로그인 하는 것을 허락하도록 설정되어진 파일이다./etc/securetty파일은 로그인 프로그램에 의해 읽어진 다.(보통 /bin/login) /etc/securetty파일에 tty와 vc디바이스가 명시되어 있으면 로그인이 가능하 게 되겠지만 디바이가 명시 되지 않는 디바이스로 로그인해 온다면 루트라 할지라도 접근불가능 할것이 다. tty와 vc디바이스를 사용하지 않을려면 주석 처리(#)을 첨가하거나 디바이스 네임을 없에면 된다. *securetty파일 (vi /etc/seceretty)파일을 편집하고 주석처리 하거나 아니 면 그 해당 라인을 제거하라. vc/1 tty1 #vc/2 #tty2 --이하 생략 원문 참조-- 위에서의 뜻은 tty1와 vc/1만이 로그인이 허락되는것이다. 이것은 내가 추천하는 사항이다. "root"로그인을 tty나 vc만을 허락하고 좀더 많은 장치를 사용하려면 su 명 령어를 사용하라. 특별계정 초기계정을 모두 사용하지 못하게 한다면 당신은 당신의 시스템을 사용하지 못할것이다. (당신이 몇몇 서비스를 설치하지 않더라도 기본적인 계정은 존재 한다.) 이러한 계정은 소프트웨어를 업그레이드 하거나 새로 설치할때 항상 점검해 보아야 한다. 리눅스는 여러 시스템을 동작시키기 위해 이러한 계정이 필요하며 당신이 이러한 서비 스를 필요로 하지 않는다면 이러한 계정은 필요하지 않을 수 있다. 좀더 많은 계정이 있을수록 당신은 당신의 주변기기에 접근하기가 쉽다. 우리는 당신이 리눅스 시스템에서 쉐도우 패스워드를 사용 할거라 추측되어 진다. 만약 당신이 사용하지 않는다면 당신은 쉐도우 파일 시스템을 사용하도록 권장한다. 쉐도우 파일 은 보안을 좀더 강화할것이다. 쉐도두 파일 사용은 리눅스 설치시 "Authentication Configuration"에 서"Enable shadow password"로 기본 선택되어져 있다. *당신의 시스템에서 사용자를 지우려면 아래 명령을 사용하라 [root@deep/]# userdel username *당신의 시스템에서 그룹을 지우려면 아래 명령을 사용하라 [root@deep/]# groupdel username 단계1 처음 우리는 초기 벤더 계정들을 /etc/passwd파일에서 제거할것이다. 우리가 사용할 이책에 서버보안 설정가운데 이러한 벤더 계정은 불필요하다. *초기 사용자의 계정을 지울려면 아래 명령어를 입력하라 [root@deep/]# userdel adm " " lp " " shutdown --이하 생략 원문 참조-- 경고 기본적으로 userdel 명령어는 지워지는 사용자의 홈디렉토리를 지울수 없을 것이다. 만약 당신이 디렉토리를 지우기를 원한다면 userdel에 -r옵션을 추가하라. -r옵션을 유저 는 추가하거나 생생,제거할때 사용되어진다. -r옵션은 보통의 벤더계정을 삭제하거나 했을때 사용할 필요 가 없었다. 당신이 mailx패키지와 함께 메일 서버로 sendmail을 사용하지 않는다면 시스 템에서 mail이라 불리우는 계정을 꼭제거 하기 바란다. 이 mailx유저는 sendmail이 아니고 mailx와 연 관이 있다. /etc/passwd파일에서 위에 제시된 유저를 지운결과는 이렇게 표시 되어진다. root:x:0:0:root:/root:/bin/bash --이하 생략 원문 참조-- 단계2 /etc/passwd파일에서 불필요한 계정을 지운후에 우리는 /etc/group파일에서 도 지워야 한다. 그룹 파일에서 불필요한 계정을 지울려면 아래 명령을 사용하라. [root@deep/]# groupdel adm " " lp --이하 생략 원문 참조-- 참고 "mail"이란 계정은 당신이 "mail"이란 계정을 통해 mailx프로그램을 사용하 지 않는다면 꼭제거하라. 이것은 아마도 qmail하고는 연관이 없을 것이다. 벤더 그룹을 지운결과 /etc/group파일이다. root:x:0:root bin:x:1:root,bin,daemon --이하 생략 원문 참조-- 단계3 마침내 당신의 시스템에 유저를 추가할 필요가 생겼다. *아래의 명령사용으로 유저 추가 [root@deep/]# useradd username 실례 *[root@deep/]#useradd admin *패스워드 변경시 아래 명령 사용 [root@deep/]#passwd username 실례 [root@deep/]#passwd admin 출력 결과는 이렇게 나올것이다. Changing password for user admin New UNIX password: Retype new UNIX password: passwd: all authentichation tokens updated successfully 단계 4 지금까지 해온작업이 사로 지워지거나 덮어 쒸워 지거나 했을때 보호할려면 변경 불가능하도록 해야 한다. 또한 이파일들에 심볼릭 링크를 할수도 있다. *패스워드와 그룹파일을 변경불가능하게 할려면 다음 명령을 실행하라. [root@deep/]# chattr +i /etc/passwd ............................/shadow ............................/group ............................/gshadow 경고 미래에 당신이 유저나 패스워드,유저그룹이나 그룹파일을 첨가 하거나 지울 려 하거나 당신은 모든 파일들을 변경하도록 한다면 모든 파일들을 변경하도록 해야 한다. 또한 RPM프로그램 을 설치할려 한다면 passwd와 group파일에 새로운 유저를 첨가시킬려 한다면 당신은 에러 메시지를 보게 될것이다. *변경가능하도록 할려면 다음 명령을 실행하라. [root@deep/]# chattr -i /etc/passwd ............................/shadow ............................/group ............................/gshadow 마운팅 파일 시스템 제어 /cache,/home이나 /tmp/ 파티션 같은 파일 시스템을 마운트 하여 좀더 제어 를 할수 있다. 또한 noexec,noder,그리고 nosuid와 같은 재치있는 옵션을 사용할 수 있 다. /etc/fstab파일을 설정할수 있다. fstab파일은 여러가지 파일시스템을 옵션과 함께 서술되어 포함되 있다. 보안과 관련된 정보가 fstab파일에 있다. defaults 이 파티션에는 모두가능하다(quata읽고 쓰기.suid) noquata 이 파티션엔 디스크 사용제한이 없다. nosuid 이 파티션엔 SUID/SGID를 설정할수 없다. nodev 이 파티션엔 특별한 디바이스 장치를 액세스 할수 없다. noexec 이 파티션엔 어떠한 바이너리 실행파일도 실행 시킬수 없다. quota 이 파티션엔 디스크 사용제한이 허락된다. ro 이 파티션엔 읽기만 가능하다. rw 이 파티션엔 읽고 쓰기 가능하다. suid SUID/SGID접속이 가능하다. 참고 좀더 많은 옵션을 참고 할려면 mount(8)맨 페이지를 보면 된다. 단계1 fstab파일(vi /etc/fstab)파일을 편집하고,당신의 필요에 따라 편집가능하 다. 실례 LABEL=/cache /cache ext2 defaults 1 2 ----이하 생략 원문 참고------ To read: LABEL=/cache /cache ext2 defaults.nodev 1 2 ----이하 생략 원문 참고------- <nosuid>는 set-user-identifier나 set-group-identifier를 사용할 수 없게 한다. <nodev>는 문자를 나타내지 않거나 이파티션의 파일 시스템을 사용못하도록 한다. 그리고 <noexec>는 바이너리 파일을 샐행 못하도록 한다. 단계2 /etc/fstab파일을 재조정할 필요가 있다. * 다음 명령을 통해서 적용 할수 있다. [root@deep/]# mount /cache -oremount [root@deep/]# mount /home -oremount [root@deep/]# mount /tmp -oremount 각각의 변경된 파일시스템은 위에서 보여지는 명령어로 다시 마운트 시켜야 한다. 우리의 예제는 /cache,/home and /tmp파티션의 파일 시스템을 변경하였다. 그리고 이러한 이유로 우리는 이러한 파일 시스템을 윗 명령과 함께 다시 마운트를 시켜야 한다. * 당신은 아래 명령어로 우리가 지정된것이 잘되었는가 확인할수 있다. [root@deep/]# cat /proc/mounts /dev/root /ext2 rw 0 0 -------이하 생략 원문 참고------- 이 명령어는 파라미터 들이 잘 적용 되었는지 당신의 리눅스 서버의 모든 파 일 시스템을 보여 줄것이다. /boot 디렉토리를 읽기 모드로 마운트 /boot 디렉토리에는 리눅스 커널과 커널에 관련된 파일이 있다. 여러가지 많 은 리눅스들은 자신만의 /boot파티션이 있으며 디폴트 파라미터로 읽고 쓰기모드로 마운트 돼어 있다. 우리는 좀더 보안적으로 /boot파티션을 읽기 모드로 만들수 있다. 중요한 파일이 있는 /boot파티션을 누군가가 변경하거나 수정할려 하기때문 에 읽기 모드로 /boot파티션을 마운트 해야 한다. /boot 파티션을 읽기 모드로 하기 위해서 는 간단한 단계가 있다. 단계 1 fstab 파일(vi /etc/fstab)을 편집하고 라인을 수정한다. LABEL=/boot /boot ext2 defaults 1 2 To read LABLE=/boot /boot ext2 defaults,ro 1 2 우리는 /boot파티션이 읽기 전용모드로 마운트 하기 위하여 라인에다 가 "ro"옵션을 첨가하였다. 단계 2 당신이 /etc/fstab파일에 설정해둔걸 확인하도록 한다. * 아래의 명령어로 적용할수 있다. [root@deep/]# cat /proc/mounts /dev/root / ext2 rw 0 0 ----------이하 생략 원문 참고 ---------- 만약에 당신이 가끔 /dev/sda1 /boot ext2 ro 0 0 을 본다면 축하한다! 경고 만약 당신에 미래에 리눅스 커널을 업그레이드 하길 원한다면 /boot 디렉토 리의 읽기 모드를 초기 상태로 리셋 하거나 커널 없그레이드를 하지 않도록 해야 한다.만약 당 신이 /boot디렉토리를 초기 상태로 리셋할려면 /etc/fstab파일가운데 "ro"옵 션을 제거하여 다시 편집 해야 하며 "mount -oremount" 명령어를 재실행하여야 한다. 아래의 문서는 http://man.kldp.org/에서 chattr명령에 관한 한글 맨페이를 소개한글입니다. 이름 chattr - 리눅스 개정판 확장 화일시스템 상의 화일 속성 변경 개요 chattr [ -RV ] [ -v 버전 ] [ 모드 ] 화일들... 설명 chattr 은 개정판 확장 화일시스템의 화일 속성을 변경한다. 심볼릭 모드의 형식은 +-=[Sacdisu] 이다. `+' 연산자는 주어진 속성을 현재 화일의 속성에 추가한다. `-' 연산자는 속 성을 제거한다. `=' 연산자는 화일이 갖는 속성을 오로지 주어진 속성만 갖 도록 설정한다. `Sacdisu' 라는 문자들은 화일에 대한 속성을 나타낸다. 동시적 갱신 (S), 추가만 지원(a), 압축상태(c), 면역상태 (i), 덤프 안함 (d), 안전한 지움 (s), 지울 수 없음 (u). 옵션 -R 디렉토리와 그 이하 모든 내용의 속성을 회귀적으로 변환시킨다. -V 변화된 속성에 대하여 자세히 출력한다. -v 버전 화일에 버전을 설정한다. 속성 `a' 속성을 지닌 화일은 쓰기시에 오로지 추가모드로만 열 수 있다. `c' 속성을 지닌 화일은 커널에 의해 디스크 상에 압축 상태로 저장된다. 화 일로부터 읽기 작업을 하면 압축이 풀린 자료가 반환된다. 쓰기 작업은 디스 크 상에 저장하기 전에 자동으로 압축된다. `d' 속성을 지닌 화일은 dump(8) 명령 수행시 백업되지 않는다. `i' 속성을 가진 화일은 수정할 수 없다: 지울 수도 이름을 변경할 수도 그 리고 링크도 가할 수 없으며 어떤 자료도 써질 수 없다. 오로지 수퍼유저만 이 다시 이 속성을 설정하거나 지울 수 있다. `s' 속성을 가진 화일이 지워질 때는 일단 블럭들이 모두 0 으로 되고 다시 디스크상에 씌여진다. `S' 속성을 가진 화일이 수정될 때는 그 변화가 디스크 상에 동기화된다. 이 것은 마치 `sync' 마운트 옵션을 몇몇 화일에게 부여한 것과 같다. `u' 속성을 가진 화일이 지워지면 그 내용이 저장된다. 사용자는 다시 복구 할 수 있다. 저자 chattr 은 ext2 화일시스템의 개발자이자 관리책임자인 Remy Card <card@masi.ibp.fr>씨가 만들었다. 버그와 제한 사항 ext2 화일시스템 0.5a 까지는 커널에 의해 `c'와 `u' 속성이 제대로 지켜지 지 않고 있다. 이러한 속성들은 다음 버전의 ext2 화일 시스템에서 구현될 것이다. AVAILABILITY chattr 은 ftp.ibp.fr 또는 tsx-11.mit.edu 에서 익명 ftp 를 통하 여 /pub/linux/packages/ext2fs 디렉토리에서 구할 수 있다. 참고 lsattr(1) 번역자 이 만 용 <geoman@nownuri.nowcom.co.kr> <freeyong@soback.kornet.nm.kr>--이 곳에 서명을 적어주십시오. 아직 없습니다. 단지 저의 이름 만 -__-;;; 김진섭
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved