[리눅스 일반] 원격서버의 사용자 계정정보 확인하기( 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. 하드디스크의 뒷표면에 데이터쓰기금지 점프스위치 사용하기

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

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

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