The Pursuit of Happyness

서버 설정 1


http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-225-0


1. 최초 로그인

ssh 명령어를 실행해 서버에 접속한다. 처음에는 호스트를 확인하는 메시지가 표시되며 yes를 입력하고 암호를 입력하면 로그인이 완료 된다.


2. 소프트웨어 업데이트

운영체제를 최신으로 업데이트 한다.


# 우분투

>  apt-get update

> apt-get upgrade


# CentOS

> yum update


3. 사용자 계정 추가

루트 사용자의 권한을 제한 하기 위해 deploy 라는 이름의 계정을 생성해서 사용해 보자. 

우분투의 경우 adduser 를 실행하면 바로 사용자 암호를 설정하는 화면으로 넘어가지만 CentOS 의 경우 passwd 명령어로 비밀번호 설정을 별도로 해줘야 한다. deploy 유저에게 sudo 권한을 주기위해서 그룹을 설정해 주는데, 우분투에서는 sudo 그룹으로 CentOS에서는 wheel 그룹에 추가해 준다.


# 우분투

> adduser deploy

> usermod -a -G sudo deploy


# CentOS

> adduser deploy

> passwd deploy

> usermod -a -G wheel deploy


4. SSH 키 쌍 인증

ssh 서버 접속시 비밀번호 인증 대신 SSH 키 쌍 인증을 사용해서 서버 보안을 강화한다.


1). 접속할 로컬 컴퓨터 (클라이언트 PC) 에서 ssh-keygen 명령어를 이용해서 개인키 (~/.ssh/id_rsa), 공개키 (~/.ssh/id_rsa.pub)를 생성한다.

개인키는 로컬 컴퓨터에 두고 유출되지 않도록 보호해야 하며, 공개 키는 접속할 ssh 서버로 scp 등을 이용하여 복사한다.


> ssh-keygen


2). 접속할 로컬 컴퓨터에서 scp ~/.ssh/id_rsa.pub deploy@server_address: 명령어를 입력한다.

마지막에 ":" 콜론을 붙이면 deploy의 홈 디렉터리에 업로드 된다.


> scp ~/.ssh/id_rsa.pub deploy@server_address:


3). ssh 서버에서 deploy 홈 디렉터리에서 mkdir ~/.ssh  명령어를 이용하여 ~/.ssh 디렉터리를 생성한다.  


> mkdir ~/.ssh


4). ssh 서버에서 touch ~/.ssh/authorized_keys 명령어를 이용해서 authorized_keys 파일을 생성한다.


> touch ~/.ssh/authorized_keys


5). ssh 서버에서 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 명령어를 이용해서 공개키를 등록한다.


> cat ~/id_rsa.pub >> ~/.ssh/authorized_keys


6). ssh 서버에서 deploy 사용자만 ~/.ssh 디렉터리에 접근해서 authorized_keys 파일을 읽을 수 있도록 권한을 변경한다.


> chown -R deploy:deploy ~/.ssh

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys


여기까지 작업이 되었으면, 개인 키가 있는 로컬 컴퓨터에서는 비밀번호 없이 ssh로 원격 서버에 접속할 수 있다.


5. 비밀번호 인증 및 루트 로그인 비활성화

1) ssh 서버에서 /etc/ssh/sshd_config 파일을 편집하여 PasswordAuthentication과 PermitRootLogin 설정값을 찾아 모두 no로 수정한다. 주석처리 되어 있으면 주석을 풀어준다.


2) 아래 명령으로 ssh 서비스를 재시작한다.


# 우분투

> sudo service ssh restart


# CentOS

> sudo systemctl restart sshd




Comment +0

MySQL 을 관리하면서 가장 기본으로 필요한 것은 계정 생성 및 권한을 관리하는 것입니다.


사용자 계정과 관련된 구문은 다음과 같습니다.


 ALTER 

 사용자 정보를 변경  

 ex) ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;

 CREATE

 사용자 계정 생성  

 ex) CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';

 DROP

 사용자 계정 삭제 

 ex)  DROP USER 'testuser';

 GRANT

 사용자 계정에 권한을 부여 

 ex) GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY'password';

 RENAME

 사용자 계정을 변경 

 ex) RENAME USER 'testuser'@'localhost' TO 'testuser2'@'127.0.0.1';

 REVOKE

 사용자 계정의 권한을 제거 

 ex) REVOKE ALL PRIVILEGES ON testdb.* FROM 'testuser'@'localhost'; 

 SET PASSWORD

 사용자 계정의 비밀번호 변경 

 ex) SET PASSWORD FOR 'testuser'@'localhost' = password('new_password'); 


사용자 계정을 새로 생성하여 권한을 바로 부여하는 경우에는 CREATE 과정을 생략하고 바로 GRANT 구문만 사용해도 됩니다.

반대로 계정을 삭제하는 경우에는 권한을 제거하지 않고 바로 DROP 하면 계정이 삭제 됩니다.


사용자의 권한을 확인하기 위해서는 다음의 구문을 사용합니다.


 mysql> SHOW GRANTS FOR 'testuser'@'localhost';



사용자가 가질수 있는 권한은 종류가 매우 많습니다.

많이 쓰이는 권한은 다음과 같습니다.


ALL [PRIVILEGES] : 모든 권한


CREATE : 데이터베이스 혹은 테이블 생성 권한


DELETE : DELETE 구문을 사용할 수 있는 권한


DROP : 데이터베이스, 테이블 혹은 뷰를 삭제할 수 있는 권한


INSERT : INSERT 구문 사용 권한


LOCK TABLES : SELECT 구문시 테이블에 락을 걸수 있는 권한


SELECT : SELECT 구문 사용 권한


SUPER: admin 권한


UPDATE : UPDATE 구문 사용 권한


Comment +0