- 서버에 대한 인증
- 사용자에 대한 인증
Key-Pair / Password 이용
내부 사용자들의 웹 접속 속도 향상 / 인증 등을 거쳐 인터넷 사용가능
url filter 적용 또는 특정 컨텐츠 필터링을 통한 보안에도 활용이 가능하다
curl x ---proxy 서버 주소 : 포트 번호 -L 실제 목표하는 주소
Proxy 서버를 통해 외부 인터넷 접속
1) client가 www.naver.com 로 가려고 하면 proxy에게 www.naver.com 가고 싶다고 함
2) proxy 서버가 cache에서 www.naver.com 찾아보고 없으면 자신이 대신 www.naver.com 에 다녀와서 client에게 전해줌
3) client2 가 www.naver.com 으로 가려고 proxy 서버에게 요청하면 proxy를 cache에서 바로 www.naver.com을 응답해줌 -> 속도가 빠름
Proxy 서버를 통한 보안
내부 사용자들이 요청한 데이터에 대해서 url filter, file filter 등을 적용해 보안을 지킴
네임스페이스 : 별도의 독립적인 작업 공간을 가질 수 있다
cgroup : 각각의 별도의 작업 공간에 별도의 리소스를 적용시킬 수 있다
런 레벨이란? 유닉스 시스템에서 부터 시작되었으며, 시스템을 실행할 때 사용할 기능을 구분해서 실행 시키는 것. 0 ~ 6 번까지 있다
init 뒤에 번호를 붙인다 ( ex. init 0 )
- 0 : halt 로 시스템 종료해주는 것으로 power off / shutdown -P now 이기도 하다
- 1 : single user mode 로 복구모드다. 단일 사용자 모드로 root 계정으로만 로그인이 가능하며, 시스템 관리적 목적으로 사용. 네트워크 및 다중 접속 불가
- 2 : multiuser 로 네트워크를 사용하지 않는 다중 사용자 모드, 여러 계정으로 로그인 가능. level 3 에서 네트워크를 사용하지 않는 것과 동일
- 3 : full multiuser mode로 일반적인 CLI 부팅은 level 3이다. 네트워크를 지원하는 다중 사용자 모드
- 4 : unused로 사용하지 않는 런레벨이다. 사용자가 정의해서 사용 가능
- 5 : x11 로 네트워크가 지원되는 multiuser로 그래픽 환경으로의 부팅
- 6 : 재부팅 , reboot / shutdown -r now 라고 쓰기도 한다
- shutdown -c : 예약된 종료 / 재부팅을 취소
- shutdown -r 22:00 : 22시에 재부팅 예약
- shutdown -k + 15 : 현재 시간으로부터 15분 후에 종료된다는 것을 접속된 사용자들에게 알려주지만 실제로 종료가 되지는 않는다
- 7은 201 / 8은 111 로 설정되있다. 201은 서버로, 111은 클라이언트로 사용해보겠다
ip route : 라우팅 테이블 확인
netstat -nr : 라우팅 테이블 확인
nslookup : DNS 서버에게 QUERY 하여, 지정한 도메인의 IP 주소를 확인할 수 있다
- #53은 PORT의 번호로 일반적인 DNS 서버는 UDP/53에서 서비스 한다 ( TCP/53 에서도 제공한다 )
- 하나의 도메인 네임을 다른 이름으로 매핑시키는 도메인 네임 시스템의 리소스 레코드의 일종이다. 하나의 IP 주소로부터 여러 개의 서비스를 실행할 때 편리함
- canonical name ( cname ) : 일반적으로 도메인에 대한 Ip 정보는 TYPE A 로 보인다. 허나, 여러 서버가 하나의 도메인을 활용하는 경우에는 cname 을 사용하여 구성한다
- ssh_config : 클라이언트 입장에서 외부에 접속할때 설정
- sshd_config : 서버 입장에서 원격지에서 접속했을 때 제공할 서비스에 대한 설정
- port 번호를 확인하자
- ListenAddress는 접속할 수 있는 Ip이다. 0.0.0.0 이므로 모든 Ip가 접속가능하게 했다
원격지에서 접속할 때 root로 로그인하는 것을 허용하는 것으로, 보안상 좋은 설정은 아니다
한 번에 접속할 수 있는 최대 사용자 수
public key 인증에 대한 설정
password 인증에 대한 설정
- 현재 key-pair 인증 방식은 주석 처리 되있고, password 인증만 활성화 되있다. 원격지에서 ssh에서 연결할 때 key-pair로 인증하게 하고 싶으면, 주석 해제 처리 하면 된다
- pubkey 설정에 주석 처리를 해제해서 활성화하게 설정했다. 이제 재부팅으로 변경 사항을 반영 시키자
- sshd를 재부팅 해서 변경 사항을 반영 시켰다
만약, 위 과정을 진행하면서 오류가 난다면 어떻게 해결할까?
서비스의 상태를 확인해보면 무슨 오류인지 확인할 수 있다
journalctl -xe 로도 확인 가능 하다
- 서버 인증은 클라이언트가 서버에게 요청
- 클라이언트 인증은 서버가 클라이언트에게 요청
- 클라이언트가 서버에 처음 접속하면, 서버는 서버 인증을 위한 key를 전달하여 클라이언트의 .ssh/known_host에 저장한다. 이를 이용해 다시 접속할 때 서버 인증을 할 수 있으며, key를 다시 저장하지 않는다
- 서버 인증 후 클라이언트 인증을 위해서는 password 와 key pair 방식이 있으며, password는 보안상 좋지 않다
- keypair는 pub과 pri를 생성해서 pri는 클라이언트에게 전달하며, pub은 서버의 authorized_keys에 모두 저장한다. 클라이언트 인증시 이 pub과 pri 키를 비교하여 클라이언트 인증을 한다
- 인증 성공시 세션 생성
- .ssh 디렉토리 밑에 testkey.pem 파일로 key를 생성한다
- -N은 " " 안에 passphrase를 지정하여, 생성되는 key와 섞어서 암호화하여 더 고도화된 key를 제공해주는 옵션으로, passphrase 추가하여 인증하면, key로 인증하고, 지정한 passphrase를 입력해야한다. 우리는 " " 을 통해 공백을 주어 passphrase를 추가하지 않는다
- passphrase는 로컬 머신에서 private key를 해석하는데 사용한다. 이는, 일종의 비밀번호로 비공개키를 입력한 값으로 암호화한다
- 다수의 user에 대한 public key는 authorized_key 파일에 모두 저장한다. 이를 통해 user 들은 자신의 private key와 서버에 저장된 public key를 비교할 수 있다
public key를 복사하여 authorized_keys를 만든다
cat으로 pem 파일을 확인하고, 안에 private key를 복사하자
centos8로 넘어와서 pem 형식자로 파일을 하나 만들고, 안에 복사한 key를 복사한다. 반드시 맨 밑에 공백이 없게 하자
testkey.pem이 root 사용자만 사용할 수 있게 설정하자
- chmod 600 은 파일에 대한 권한을 rw-------로 변경한다. 600은 rw------의 8진법 퍼미션 값이다
user 1 으로 접속해서 key를 생성하고, pub key를 authorized_keys에 저장하자
user1.pem 파일을 cat으로 열어 복사하고, centos8에 들어와서 파일을 만들어 private key를 저장하고, user 1 만 사용할 수 있게 설정한다
다수의 서버가 있을 때, 이 방식을 사용하면 클라이언트는 다수의 서버에 대한 private key를 가지고 있어야 되서 번거롭다
- 실제 환경이라면 관리 서버에서 key-pair 를 생성한다
- 관리자는 private key를 갖는다. public key는 내가 관리하고자 하는 다수의 서버에 등록 시킨다
- 원격지에 있는 서버에 public key를 등록하기 위해서는 ssh-copy-id 를 이용해서 관리용 서버의 .ssh/authorized_keys에 등록시킨다
- 우리는 인스턴스 템플릿 이미지에 미리 public key를 넣어둘 예정이다
- 앞에 user20은 user 이름 , 뒤에 user20이 password다
- 사용자 이름과 암호 조합을 전송하는 방법
- 현재 user1은 가능하지만, user30은 불가능하다고 하다. 이는 user30이 sudoers 파일에 포함되지 않았기 때문이라고 한다. 이 파일은 내부에 등록한 계정에 대해 권한을 준다
- 안에 다수의 user에 대한 public key들이 있는데 이를 구별하는 방법 및 인증 할때는 순차적 비교하는가? 각 public key 마지막 부분에 유저 정보가 있으며, 이를 통해 구분하고, 인증은 순차적으로 진행해서 해당 유저에 대한 키를 찾는다
- 이 passphrase는 기본 생성 키에 섞어서 추가되는데, 이걸 추가하면 키 인증외에 지정한 passphrase를 입력하라고 한다. 즉, 보안이 강화되며 이 passphrase 와 기본 생성 key를 섞어서 암호화 하기에 키의 길이가 길어진다