Study/리눅스

리눅스 15일차(SSH 심화/캐싱DNS서버)

됵이 2022. 7. 25. 19:16

User와 Group 별 접근 제한 두기

vim /etc/ssh/sshd_config

종류

  • AllowUsers : 유저 허용 
  • DenyUsers : 유저 거부
  • AllowGroups : 그룹 허용
  • DenyGroups : 그룹 거부

우선순위

DenyUsers > AllowUsers > DenyGroups > AllowGroups

 

사용방법

vim /etc/ssh/sshd_config 에 접속한다.

위와 같이 입력 해주면 1,2,3 유저는 접속이 허용되고  user03 은 접속이 거부 될 것이다. 

※Allow : and 조건 (Users 와 Groups를 모두 적어줘야 한다.)

※Deny : or 조건 (Users 와 Groups 둘중 하나만 입력 되어도 된다. )

 

vim /etc/security/limits.conf

서버의 리소스 관리

종류

  • soft : 새로운 프로그램을 생성하면 기본으로 적용되는 한도
  • hard : 최대로 늘릴수 있는 한도

사용법과 메뉴 설명

제일 하단을 보면 아래 그림과 같이 domain type item value  로 나열 되어 있다. 

domain

  • 사용자 이름
  • @group 구문이 있는 그룹 이름
  • 와일드카드 * 기본 항목의 경우
  • 와일드카드 %maxlogin 제한에 대해 %group 구문과 함께 사용가능

type 

  • soft : 새로운 프로그램을 생성하면 기본으로 적용되는 한도
  • hard : 최대로 늘릴수 있는 한도

item

  • core : 코어 파일크기 제한(KB)
  • data : 최대 데이터 크기 (KB)
  • fsize : 최대 파일 크기 (KB)
  • memlock : 최대 잠금 메모리 주소 공간 (KB)
  • nofile : 열린 파일의 최대 수
  • rss : 최대 상주 세트 크기
  •  stack : 최대 스택 크기 (KB)
  • cpu : 최대 cpu 시간(MIN)
  • nproc : 최대 프로세스 수 
  • as : 주소 공간 제한 (KB)
  • maxlogins : 이 사용자의 최대 로그인 수 
  • maxsyslogins : 시스템의 최대 로그인 수
  • priority : 사용자 프로세스를 실행할 우선 순위
  • locks : 사용자가 보유할 수 있는 최대 파일 잠금수
  • sigpending : 보류 중인 신호의 최대 수
  • megqueue : POSIX 메시지 대기열이 사용하는 최대 메모리(바이트)
  • nice :  값을 올릴 수 있는 최대 좋은 우선 순위 :[-20,19]
  • rtprio : 최대 실시간 우선 순위 

vim /etc/pam.d/sshd

플러그인 관련 설정

※PAM (Pluggable authentication module) : 착탈형 인증 모듈으로 사용자를 인증하고 그 사용자 서비스의 엑세스를 제어하는 모듈화 된 방법

첫번째 줄을 복사하여 다음과 같이 수정한다.

 auth required pam_tally2.so onerr=fail deny=3 unlock_time=120

해석 (모든 사용자에게 적용됨)

onerr=fail : 액션(실패가 일어났을 경우)

deny=3 : 3번 실패를 하게 된다면

unlock_time = 120 : 120초 뒤에 lock을 풀어준다. 

 

=> 하지만 root 계정이 잠기게 되면 아무것도 설정할 수 없으므로 root계정은 잠기지 않도록 설정을 해야한다.

vim /etc/ssh/sshd_config

 

네임 서버

DNS 라고 하기도 하며 문자로 이루어진 주소와 IP를 서로 매핑 시켜주는 역할을 한다.

단 DNS는 인터넷 서비스를 보장하지 않는다. 

 

네임서버의 특징

네임 서비스는 한 국가에 종속되지 않고 전세계가 같이 사용한다. 

하지만 하나의 네임서버로 전세계가 모두 사용하자니 용량이 너무 커지기 때문에 13개의 hostserver로 나눈다. (A~M)

 

네임스페이스 

도메인 주소를 관리하기 위한 전체 트리 구조를 의미 한다. 

 

 

FQDN 

절대 도메인 네임 또는 전체 도메인 네임 이라고 불리는 도메인 전체 이름을 표기하는 방식을 의미

도메인 구조

root Domain

  • 네임 스페이스에서 이름 해석의 출발지 역할을 수행하는 노드(서버)
  • 최상위 도메인 서버의 정보를 가지고 있다. 
  • 전세계에 13개의 원본 root 서버가 있다. 

TLD

  • 국가 코드 최상이 도메인 ex) .kr , .jp
  • 일반 최상위 도메인 ex) .net , .com , org등

SLD

  • TLD 하위에서 관리되는 서브 도메인
  • 국가 도메인 하위에 기관 유형에 따른 분류 ex) .co(일반 회사) , .ac(교육기관) , .go(정부기관)
  • 회사별 도메인 ex) google , naver 등

 

IP 주소를 얻는 흐름

 

캐싱 DNS 서버

전세계의 많은PC들이 ROOT로 네임 매핑을 하게 되면 ROOT는 심한 트래픽 현상을 격게 된다. 

이를 방지 하고자 캐싱DNS서버를 만들어 한번 갔다온 서버에 대해서는 학습하여 DATABASE에 저장을 하고 있다가 ROOT로 가지 않고 캐싱 DNS서버에서 연결 해주는 방식이다. 

 

실습

캐싱 DNS 서버를 만들어 운영 해보자

서버

yum -y install bind bind-utils bind-libs
#bind 설치

#bind-utils : DNS 쿼리를 위한 유틸리티
#bind-libs : 라이브러리
#bind-chroot : Chroot  런타임 환경
#bind-devel : 헤더파일 및 라이브러리
#bind : BIND 패키지

ss -anlu
#네트워크 상태 표시

systemctl start named
#named 서버에 올리기

firewall-cmd --permanent --add-service=dns
#dns 방화벽 열어줌
firewall-cmd --reload 
#방화벽 재시작

firewall-cmd --list-service
#설정된 service 표시

systemctl enable named 
#named 를 재부팅시에 자동시작으로 만들어줌

vim /etc/named.conf
#named 설정을 변경하는 곳
#설정 환경
#13번줄 53번 포트를 108.3에 열어라
#21번줄 any로 변경하여 어디서 오든 답을 해주겠다. 만약 192.168.108.0/24로 하게 되면
#108네트워크에 대해서만 응답을 하겠다. 
#33번줄을 yes로 되어 있어야 캐싱 서버에 없으면 외부에서 받아오겠다. 

systemctl restart named
#named 재시작

클라이언트

vim /etc/resolv.conf
#도메인 네임 주소 설정

nameserver 192.168.108.3
#네임 서버를 108.3 으로 하겠다.

 

 

알아둘 것

ps aux : 프로세스 확인

killall -u user01 : 해당 사용자가 사용중인 프로세스 모두 종료

vim 에디터로 갔을 때 :set nu을 이용해서 다음과 같이 명령 할 수 있다 

2co 2 -> 2번줄을 copy 해서 2번줄 밑에 붙여라

log 확인 하는법 

tail/var/log/secure 

pam_tally2 -u user01

host =>단일 (단수)

domain=>범위 (복수)

 

DNS zone : dns 영역

LOCAL : '내'가 속해있는

 

네트워크 상태를 확인 하기 위한 명령어 netstat 와 ss가 있다. 

ss 옵션

  • -a : 모든 포트 확인
  • -t : TCP 포트 확인
  • -u : UDP 포트 확인
  • -l : LISTEN 상태 포트 확인 
  • -p : 프로세스명을 표시
  • -n :  호스트 / 포트 / 사용자 이름을 숫자로 표시