운영체제 이해 및 관리

CPU의 구조적 이해

메모리 시스템

I/O 인터페이스

 

운영체제 구조

운영체제 개요

프로세스 관리

CPU 스케줄링 기법

병행성 제어

장치 관리 방법

 

리눅스 서버 보안

리눅스 보안

리눅스 구조

리눅스 인증과 권한 관리

로그파일 및 주요 명령어

리눅스 방화벽

 

윈도우 클라이언트 및 서버 보안

윈도우 시스템

NTFS 시스템

공유폴더 취약점

레지스트리

이벤트 로그 및 웹 아티팩트 분석

바이러스와 악성코드

 

서버를 개발하거나 유지보수를 할 때, 

보통 서버가 원격지에 있는 경우가 많기 때문에,

putty 또는 telnet과 같은 터미널로 접속해서 로그를 확인, 설정 변경과 같은 작업을 하게 됩니다.


http 프로토콜의 기본 포트가 80번 포트인 것처럼, ssh 도 기본 포트 22번을 사용하는데,

모든 UNIX 계열 ( 리눅스 ) 는 관리자 ID 가 root 이고 이는 변경이 되지 않기 때문에 

일단 id가 외부에 알려져 있습니다.


따라서, 비밀번호를 추측하거나 무작위대입공격을 통해 접속하는 시도에 대한 보안이

필요합니다.


원격접속 보안을 위해 수행할 작업의 순서는 다음과 같습니다.


1. root 로 접속이 안되기 때문에 대신 접속할 user를 생성한다.

2. root 로 로그인을 시도할 수 있는 su ( switch user ) 명령어를 특정 그룹만 사용가능하게 제한한다.

3. 내가 사용할 user 계정을 su 명령어를 사용할 수 있는 그룹에 추가한다. 

4. ssh 설정파일의 root 접속에 대한 제한을 설정한다.

5. ssh 로 root 로그인을 통해 설정 적용이 잘 되었는지 확인한다.





1. 원격접속을 위한 유저 생성





현재 상태는 위의 그림처럼 root로 원격 접속 시도 및 로그인이 되는 상황입니다.







이에대한 보안을 위해 pauli 라는 유저를 추가하고 

# useradd pauli


생성한 유저의 비밀번호를 설정합니다.

# passwd pauli

# 비밀번호 입력 엔터

# 비밀번호 입력 확인 엔터





2. 스위치 유저 명령어 권한 설정


root의 권한 ( 관리자의권한 ) 을 아무나 사용하면 안되기 때문에 

일반 유저계정을 생성해서 스위치 시도도 하지 못하도록

유저변경 명령어에 대한 권한을 설정합니다.



유저변경 명령어는 su 이고 해당 명령어의 경로는 

일반적으로 /bin/su 에 있습니다.


1) 해당 파일의 권한 및 소유자 그룹을 보기위해 ls 명령어로 해당 파일을 조회합니다.

# ls -al /bin/su


파일의 권한은 rwsr-xr-x 이고 소유자 root 소유그룹 root 입니다.

기본적으로 리눅스에서 권한은 3분류로 나눠집니다.

유저

그룹

그외

그리고 그 순서대로 각각 읽기 쓰기 실행으로 나열되며

rwx 란 읽기 쓰기 실행하기에 대한 권한이 있다는 것입니다.


위 그림처럼 rwsr-xr-x 인 경우 소유자인 root는 읽고쓰고 실행할 수 있고,

root 그룹 또는 그외 사용자는 읽기와 실행에 대한 권한이 있는 상태입니다.


그리고 앞의 x대신 s가 표시되어있는 이유는 해당 파일이 실행될 때,

마치 소유자가 실행한 것과 같은 권한을 주는 것인데, 


다른 계정으로 로그인같은 경우 관리자의 권한이 없이는 불가능하게 막아놨기 때문입니다.

유저와 그룹은 그나마 괜찮지만 그외유저가 읽거나 실행하는 권한은 일단 막아야 합니다.

그리고 앞의 과정에서 추가한 계정이 그룹권한을 이용해서 su 명령을 사용할 수 있게 설정도 해야합니다.



2) 해당 파일에 대한 그룹 소유자를 wheel (리눅스의 기본 관리자그룹명) 이라는 그룹으로 설정합니다. 

# chgrp wheel /bin/su


# ls -al /bin/su

명령을 통해 확인해보면 소유 그룹이 변경되었음을 알 수 있습니다.


#chmod 4750 /bin/su

해당 파일에 대한 권한을 4750으로 변경합니다.

앞의 4는 setuid bit입니다.

위에서 설명한 해당파일이 실행될 때 소유자의권한으로 실행되도록 하는 비트이며 

해당 비트가 설정되면 소유자에대한권한인 rwx 중에 x가 

"rwsr-x---" 와 같이 s로 변경되어 출력됩니다.


4) chattr +i /bin/su


파일은 몇몇개의 속성이 있는데 복사변경삭제 불가 속성인 i를 지금 변경한 파일에 추가합니다.

그래야 타인이나 내가 실수로 해당 명령어에 대한 권한 설정을 변경하는 것을 방지 할 수 있습니다.






3. 내가 사용할 계정을 su명령어의 소유그룹에 추가한다.

모든 그룹에 대한 정보는  /etc/group 라는 파일에 저장이 됩니다.

wheel이라는 리눅스 기본 관리자 그룹은 보통 10번 그룹아이디를 가지고 있으며

그옆에 ,pauli 와 같이 내가 사용할 계정명을 추가하고 저장하면 

변경사항이 적용됩니다.






4. ssh 설정파일의 root접속 제한을 설정한다.

ssh 설정파일의 경로는 /etc/ssh/sshd_config 와 같으며

find / -name sshd_config 를 통해 sshd_config 파일을 찾으면 됩니다.


vi 에디터를 통해 해당파일을 열어보면 

아래쪽에

#PermitRootLogin yes 라는 주석처리된 부분이 있습니다

주석처리 되었지만 yes라고 써있다는 것은 보통 기본값이 yes라는 뜻입니다.





i 를 눌러 'INSERT' 모드로 변경한 후 

아래그림과 같이 저 부분만 no 로 바꾸고 주석을 해제하면 됩니다.




제대로 변경하였으면 :wq 를 입력하고 엔터를 입력해서 저장후 빠져나옵니다.







설정을 변경하고 있는동안에도 sshd 는 계속 실행중이기 때문에 변경사항을 적용하려면

service sshd restart 명령어를 통해 재시작 해줍니다.















5. 변경한 사항들이 잘 적용되었는지 확인




pauli 로 접속하여 su 명령어를 이용해 root 로 로그인 되는 것을 확인





root로 원격 접속이 차단됨을 확인.



'개발 > 서버' 카테고리의 다른 글

Node.js 서버 구축  (0) 2018.04.30

+ Recent posts