[리눅스 일반] 사용자 패스워드 입력 및 설정하기( passwd )

 1. 사용자 패스워드를 변경하는 passwd 개론

 – passwd 명령어는 사용자의 패스워드 입력 및 변경하는 명령어임. 패스워드는 리눅스서버의 일차적이고 기본적인 보안역할을 하는 것으로 필수관리 항목임.

 – 리눅스시스템에서 기본적인 패스워드는 8자로 제한되지만, MD5 를 사용하여 패스워드를 입력할 경우에는 256문자까지 패스워드 입력이 가능함. MD5 는 -S 옵션을 사용하여 설정해야 함.

 – 사용형식 : passwd [ -k ] [ -l ] [ -u [ -f ] ] [ -d ] [ -S ] [ 사용자ID ]

 2. 관리자에 의한 사용자생성 후 passwd 명령어로 패스워드 설정하기

 – 서버관리자는 새로운 계정하용자를 생성한 후에는 반드시 패스워드를 설정해야만 함.

 – 슈퍼유저( root )는 일반계정사용자의 패스워드를 마음대로 변경할 수 있음.
 참고로 일반사용자는 자기자신의 패스워드만 변경할 수 있음.

 3. 일반사용자의 자기자신 패스워드 변경하기

 – 일반사용자가 자기자신의 패스워드를 변경하고자 한다면 그냥 passwd 라고만 입력하면 됨. 그런 다음 현재 사용중인 패스워드를 입력하고 새로 사용할 패스워드를 동일하게 두번 입력해 주면 패스워드가 변경됨.

 – passwd

 4. passwd 명령어로 패스워드 설정시 MD5 로 암호화 하기

 – MD5 를 사용하고자 한다면 -S 옵션으로 설정할 수 있음.

 – MD5 로 암호화하는 대부분의 이유는 패스워드 사용문자를 길게 사용하여 보안을 강화하기 위한 것임. 하지만 최근 리눅스 배포판들은 모두 기본적으로 MD5 암호화방식을 사용하고 있으므로 굳이 -S 옵션을 사용할 필요는 없음.

 – passwd -S stkim

 5. passwd명령어로 일반계정사용자의 패스워드 락(lock)걸기

 –
수퍼유저( root )는 passwd 명령어의 -l 옵션을 사용하여 일반계정사용자의 암호에 lock 을 걸어서 접속을 제한할 수
있음. 일반사용자의 패스워드에 lock 을 거는 것은 일시적으로 접속을 제한해야하는 경우에 관리자에 의해 설정되는 것임.

 – paswd -l stkim

 – lock 을 걸어두게 되면 해당 사용자는 접속이 불가능하게 됨.

 6. 패스워드 락( lock )걸린 사용자의 패스워드 락( lock ) 해제하기

 – 패스워드 lock 을 풀어주려면 paswwd 명령어에 -u 옵션을 사용하여 해제함.

 – passwd -u stkim

 – 패스워드 lock 이 풀리게 되면 stkim 사용자는 이전에 사용했던 패스워드를 그대로 사용하여 접속이 가능해 짐.

 7. 계정사용자의 패스워드 삭제하기

 – 수퍼유저( root )는 일반계정사용자의 패스워드를 삭제할 수 있음.

 – 계정사용자의 패스워드를 삭제하게 되면 아무 패스워드나 사용하여 로그인할 수 있음. 특별한 경우가 아니면 패스워드삭제는 하지 않는것이 좋음.

 – 계정사용자의 패스워드 삭제시 passwd 명령어에 -d 옵션을 사용하면 됨.

 – passwd -d stkim

[리눅스 일반] 원격서버의 사용자 계정정보 확인하기( finger )

 1. 로컬 또는 원격시스템의 사용자 계정정보 확인하는 finger 개론

 – finger 는 로컬사용자 또는 원격서버사용자의 계정정보를 확인하는 명령어

 – finger 는 지정된 계정사용자의 정보를 /etc/passwd 파일에서 읽어서 보여줌.

 – 사용형식 : finger [ -lmsp ] [ 계정… ] [ 계정@호스트… ]

 – 또한 finger는 로컬서버의 사용자 뿐아니라 원격지서버의 사용자 계정정보도 확인이 가능함.

 –
서버보안을 위하여 /etc/xinetd.d/finger 파일을 삭제하고 /etc/services 파일 내에 finger 행을
삭제하여 finger 서비스를 죽이는 것이 서버계정사용자 정보를 보호하고 서버보안을 한층 강화시키는 현명한 방법임.

 – finger 명령어에 -s 옵션을 사용하면 계정 정보를 간단히 정리하여 보여줌.

 – finger -s

 2. finger 명령어로 원격서버의 사용자 계정정보 확인하기

 – finger 명령어는 원격서버에 존재하는 사용자의 계정정보도 확인이 가능함.

 – 특정 호스트내의 사용자로그인 정보라든지 또는 원격서버의 계정사용자 계정정보등을 로그인하지 않고서도 원격지에서 확인이 가능함.

 – finger @host3.pchero21.com
 원격서버( host3.pchero21.com )에 접속해있는 계정사용자 모두를 확인하는 명령어
 각각의 사용자들이 어디에서 접속하였으며, 사용하고 있는 터미널 정보등을 확인할 수 있음.

 2. finger 명령어로 원격서버의 특정 사용자 계정정보 확인하기

 – finger stkim@host3.pchero21.com
 원격서버( host3.pchero21.com )의 특정 사용자의 계정정보( stkim )에 대해서 확인하는 finger 명령

 3. finger 로 계정정보 확인이 가능하도록 설정하는 방법 그리고 보안

 – finger 명령어를 이용하여 서버사용자의 계정정보를 확인하려면 확인대상 원격지서버( host3.pchero21.com )에 finger 서비스가 허용되어있어야 함.

 – finger 허용을 위한 host3.pchero21.com 의 /etc/xinetd.d/finger 파일에 대한 설정예
 /etc/xinetd.d/finger 파일
 service finger
 {
       disable                = no
       socket_type        = stream
       wait                      = no
       user                     = nobody
       server                  = /usr/sbin/in.fingerd
 }

 – tcpwrapper 에서도 허용이 되어 있어야 함. 하지만 허용되지 않은 시스템에서 finger 를 사용하는 것은 일종의 불법 scan 이므로 법적인 책임을 질 수도 있음.

 – 대부분의 서버관리자들은 finger 서비스를 허용하지 않고 있음.

 – finger 서비스가 꼭 필요한 경우가 아니라면 밑의 2가지 작업을 해두고 서버보안을 강화하느것이 현명함.
 첫째 : /etc/xinetd.d/finger 파일의 삭제
 둘째 : /etc/services 파일내에서 finger 행의 삭제 또는 주석( # ) 처리.

[리눅스 일반] 원격 접속을 위한 telnet 활용

 1. 원격서버 로그인하는 대표적인 도구 telnet 개론

 – 리눅스의 Shell 에서 그냥 telnet 이라고 하면 telnet 모드로 들어간다.

 – telnet 모드로 들어가게 되면 telnet 모드임을 나타내는 telnet> 프롬프트가 나타남. 여기서 telnet 모드의 여러가지 명령어들을 사용할 수 있음.

 – close : 현재 연결을 종료함.

 – logout : 원격접속된 사용자를 강제 로그아웃하고 연결을 종료함.

 – display : 텔넷 환경인수(parameter)들을 출력함.

 – mode : 문장 또는 문자모드를 받아들이도록 함.

 – open : 원격서버로 연결을 시도함.

 – quit : 텔넷을 종료하고 쉘로 빠져나옴.

 – send : 특수문자를 전송함.

 – set : 텔넷 환경 인수(parameter)들을 설정한다.

 – unset : 텔넷 환경인수(parameter)들의 설정을 해제한다.

 – status : 현재 상황정보를 출력한다.

 – toggle : 텔넷 환경파라미터의 값을 토글(on/off)시킨다.

 – slc : 특수문자들의 상태를 변경한다.

 – z : 텔넷을 잠시 중단한다.

 – ! : 서브쉘을 불러들여 실행한다.

 – environ : 환경변수를 변경한다.

 – ? : 텔넷모드에서 도움말을 출력한다.

 2. 텔넷모드에서 특정 사이트로의 원격접속하기

 – telnet IP주소 : ex) telnet 192.168.0.100

 – telnet 도메인 : ex) telnet study.superuser.co.kr

 – telnet 호스트명 : ex) telnet study

 – 호스트명으로 원격 로그인을 하려면 로컬서버의 /etc/hosts 파일에 접속대상 호스트명이 설정되어 있어야 함.

 3. telnet으로 원격로그인시에 사용자이름 지정하여 원격 접속하기

 – 원격서버의 특정 계정명으로 telnet 접속을 하고자 한다면 -l 옵션 다음에 계정명을 지정하면 됨.

 – telnet -l 계정명 IP주소 : ex) telnet -l stkim 192.168.0.100

 – telnet -l 계정명 도메인명 : ex) telnet -l stkim study.superuser.co.kr

 – telnet -l 계정명 호스트명 : ex) telnet -l stkim study

 – 이와 같이 접속을 하게 되면 192.168.0.100 (원격서버) 의 /var/log/messages 파일에 접속로그기록이 남게된다.
 jan   4  13:28:00  stkim  login(pam_unix)[1894]: session opened for user stkim by (uid=0)
 jan   4  13:28:00  stkim    — stkim[1894]: LOGIN ON pts/0 BY stkim FROM 192.168.0.10

 – /var/log/secure 파일에서도 확인할 수 있으며, /var/log/messages, /var/log/secure 파일을 확인하여 불법적인 침입이 있었는가를 확인해야 함.

 4. 원격로그인시에 현재 사용자와 동일한 계정으로 telnet 원격 접속하기

 – 현재 사용중인 계정명과 동일한 계정명으로 원격로그인 하고자 한다면 -a 옵션을 사용하면 된다.

 – telnet -a IP주소 : ex) telnet -a 192.168.0.100

 – telnet -a 도메인명 : ex) telnet -a study.superuser.co.kr

 – telnet -a 호스트명 : ex) telnet -a study

[리눅스 일반] 스왑용량 늘리는 방법

 1. 스왑파일시스템을 이용하여 스왑용량 늘리는 방법

 – /dev/sda2 를 스왑파일시스템으로 만들기

 – 현재 시스템의 스왑용량을 확인하기

 – free , swapon -s

 – fdisk 를 실행후에  fdisk 전용명령어 t 를 입력. t 는 현재의 파일시스템 타입을 변경하는 것

 – /dev/sda2 파티션을 82번으로 변경. 파일시스템 타입 82번은 스왑파일시스템을 의미

 – fdisk 전용명령어 w 를 입력하여 파티션 설정을 저장하고 fdisk 모드에서 나온다.

 – mkswap 명령어를 이용하여 /dev/sda2 파티션을 스왑파일시스템으로 포맷한다.
 mkswap /dev/sda2

 – swapon 명령어를 이요하여 /dev/sda2를 스왑공간으로 활성화 한다.
 swapon /dev/sda2

 – 현재 시스템의 스왑용량을 확인하면 기존의 용량에 /dev/sda2 가 추가되어 늘어난 용량을 확인할 수 있다.
 free, swapon -s

 – 설정한 후에 /dev/sda2 가 재부팅 후에도 지속적으로 스왑공간으로 사용되도록 하기 위하여 /etc/fstab 파일에 설정.
 /dev/sda2            swap        swap        defaults        0   0

 – 설정한 /dev/sda2 의 스왑사용을 중지하려면 swapoff /dev/sda2 를 사용함.

 2. 스왑파일을 이용하여 스왑용량 늘리기

 – 스왑으로 사용할 파일을 만든다.
 touch /swapfile

 – dd 명령어를 이용하여 입력을 /dev/zero 로 하고 출력을 방금 생성한 /swapfile 로 하여 작업한다.
 dd if=/dev/zero of=/swapfile bs=1024 count=1000

 – 생성한 스왑파일 확인
 ls -l swapfile

 – mkswap 을 이용하여 swapfile 을 스왑파일로 포맷한다.
 mkswap /swapfile

 – swapfile 을 스왑공간으로 활성화 한다.
 swapon /swapfile

 – 스왑용량을 확인하면 전체적인 스왑공간이 늘어났음을 확인할 수 있다.
 swapon -s, free

 – 설정한 스왑파일을 재부팅시에 매번 적용하기 위하여 /etc/rc.d/rc.local 파일에 등록한다.
 swapon /swapfile

[리눅스 일반] 파일과 디스크 보안

 1. 중요한 시스템 파일의 원본을 꼭 한부 복사하여 숨겨 두기

 – 시스템관련 중요한 명령어나 설정파일들은 자신만이 아는 곳에 아주 특별한 디렉토리를 만들어서 별도로 보관시킴.

 – 해킹을 이유로 명령어들이 변조되어 있다면 변조된 파일을 삭제하고 복사되어 있었던 명령어 파일을 가져와 사용함.

 – 숨겨둔 디렉토리명은 .(점)으로 시작하는 디렉토리이름을 사용하는 것이 좋음.

 2. chattr 명령어를 사용하여 파일이 변경되지 않도록 설정하기

 – 대부분의 해킹툴들이 실행되면 중요한 명령어나 파일들이 변조됨. 하지만 파일이나 디렉토리에 i속성이 들어있다면 해킹툴에 의한 변조가 어렵게 됨.

 – /bin/ps 파일을 대상으로 charttr +i /bin/ps 를 실행해 두게 되면 /bin/ps 파일은 추가, 삭제, 변조가 전혀 되지 않음.

 3. 파일시스템 마운트시에 읽기전용으로 마운트하기

 – 읽기전용으로(or FTP서비스, 다운로드서비스) 사용되는 파티션이나 디스크라면 마운트 할 때에 읽기/쓰기모드로 마운트하지 말고 읽기전용(read only)으로만 마운트를 한다.

 – mount 명령어 사용시에 -r 옵션을 사용하면 읽기 전용으로 마운트를 함.

 – 일반적 옵션없이 그냥 일반적인 방법으로 마운트를 하면 기본값으로 읽기/쓰기모드로 마운트를 하게 됨.

 – /etc/fstab 파일의 마운트 옵션에서 ro 옵션을 사용하면 매번 부팅할 때마다 마운트시에 지속적으로 읽기전용모드로 마운트를 할 수 있음.

 – mount -t ext3 -r /dev/sda1 /readonly

 4. 백업 디스크의 보안을 위해 백업시에만 마운트하기

 –
대부분 백업을 할 때에는 tar 명령문이 들어있는 쉘스크립트를 cron 에 넣어 두고서 자동 백업되도록 함. 이때 이
쉘스크립트내에 백업하기 전에 mount를 수행하고 백업하도록하고 tar로 백업이 끝난 후에는 다시 umount를 해서 마운트를
해제해 둠.

 – 이렇게 할 경우 불가피하게 해킹을 당하여 rm -rm / 가 수행되더라도 최소한 백업 디스크의 내용만은 삭제되지 않음.

 – 백업데이터가 저장되는 백업디스크나 파일시스템을 백업할 때에만 마운트하고 평상시에는 마운트 해제되도록 하는 방법임.

 5. 하드디스크의 뒷표면에 데이터쓰기금지 점프스위치 사용하기

 – 디스크의 물리적인 뒤표면에 보면 아주 작은 점프스위치가 있음.

 – 이 스위치를 연결해 두면 이 디스크의 어떠한 데이터도 변경되지 않음. 삭제뿐만 아니라 새로운 파일의 생성도 되지 않음.

 – 가장 강력한 물리적인 방법이 될 수 있음.