Linux 부팅 레벨
리눅스 시스템에서 /etc/rc.d/sysinit 스크립트 파일이 실행되어 시스템 최기화 및 부팅 완료
런레벨(Runlevel)
시스템 관리를 용이하게 하기 위해 만들어짐
시스템을 실행할 때, 네트워크를 사용할지, 여러 명의 사용자가 로그인하는 것을 허용할지, 그래픽 인터페이스 사용할지 등을 구분해서 시스템을 구동시키는 것
# runlevel
현재 실행중인 리눅스 시스템의 런레벨 확인
- 6가지 런레벨 존재
Runlevel | 설명 | 특징 |
0 | Halt (Do Not set initdefault to this) | 시스템 중지 기본값으로 설정 불가 # init 0 → 실행시, 시스템 종료 |
1 | Single user mode | 싱글모드(관리모드) 로그인 과정 없이 root 계정으로 로그온 네트워크, 서버, 파일 공유 등과 같은 서비스 사용 X 시스템 점검/복구, root 계정 패스워드 초기화 등에 사용 (즉, 시스템 관리 목적으로 사용) |
2 | Multiuser, without NFS (The same as 3, if you do not have networking) |
NFS를 지원하지 않는 멀티유저 모드 여러 계정으로 로그온 가능 Runlevel 3에서 네트워크를 사용하지 않는 것과 동일 |
3 | Full multiuser mode | NFS를 지원하는 멀티유저 모드 서버용도로 사용되는 리눅스시스템에서 가장 많이 사용되는 레벨 |
4 | unused | 사용하지 않는 런레벨 사용자가 지정해서 사용 가능 |
5 | X11 | X Window를 사용하는 멀티유저 모드 (그래픽 인터페이스) 최근 배포판에서 기본값으로 사용됨 |
6 | reboot (Do Not set initdefault to this) | 재부팅시 사용 기본값으로 설정 불가 |
NFS; Network File System
Linux 컴퓨터끼리 저장공간을 공유할 수 있도록 해주는 시스템
Linux Deamon
리눅스에서 메모리 위에 올라가 있으면서 클라이언트의 요청을 처리하거나 리눅스 시스템이 구동되는데 필요한 기능 제공
사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
종류 | 역할 |
sshd | 원격 접속 |
syslog | 시스템 로그 관리 |
network | 네트워크 서비스 |
iptables | 방화벽 |
httpd | 웹서버 |
Linux RAID (Redundant Array Independent Disk)
여러개의 디스크를 활용하여 고성능의 디스크처럼 사용
Striping: 연속된 데이터를 여러 개의 디스크에 기록하는 기술
Mirroring: 디스크 하드웨어 장애가 발생했을 때, 데이터를 빠르게 복구할 수 있도록 데이터를 복사하는 기술
Spanning: 물리적인 여러 하드 디스크를 모아서 하나의 큰 용량을 제공하는 기술
Linux RAID 0 (Striping)
최소 2개 이상의 디스크 필요
데이터를 순차적으로 write
안정성보다는 고성능을 위해 사용
두 디스크 중 하나의 디스크에 Fault가 발생 → 데이터 절반이 날아감
Linux RAID 1 (Mirroring)
안정성에 중점
하나의 디스크가 Fault가 발생 → 나머지 하나의 디스크를 통해 데이터 접근 가능
전체 디스크 용량에 비해 사용 가능한 용량은 절반이 됨
Linux RAID 1+0 & 0+1
Linux Filesystem
Filesystem
파일에 이름을 붙이고, 저장 & 탐색을 위해 어디에 위치 시킬 것인지 나타내는 체계
파일이 디스크 상에서 구성되는 방식을 뜻함
(도서관에서 저자, 책 제목 등의 필터로 검색 가능)
NTFS (Windows OS filesystem)
EXT4, XFS (Linux OS filesystem)
Linux Filesystem 종류
저널링 파일시스템 (Journaling Filesystem)
- 주 파일 시스템에 변경사항을 반영하기 전에 저널안에 생성되는 변경사항을 추적하는 파일시스템
- 복구가 빠름
- 무결성 체크함
- 속도가 느림
저널링 파일시스템 종류
- ext3
- ext4 (ext3보다 연속적인 블록 할당 가능, 파일 접근 속도 향상)
- XFS (신속한 읽기, 쓰기 트랜잭션이 가능한 고성능 제공)
Linux Filesystem 구조
Disk → partitioning을 통해서 구분
partition → 용도, 사용자 구분 가능
Boot Block → OS 설치 관련
Super Block → 속성 등 자세한 메타 데이터가 들어가 있는 곳
속성에 있는 위치는 위치 Block이라고 할 수는 X ↝ 컴퓨터가 인식하는 것은 다르니까
Inode Block → 데이터의 위치가 어떻게 되어있는지 위치 정보. 데이터의 주소
Directory Block & Data Block → 실제 데이터 값이 들어가 있는 곳
Linux Filesystem command
fdisk -I
- 파일시스템 정보 확인 및 파티션 설정
mkfs.[filesystem 종류] [filesystem name]
- 파일시스템 생성
fsck (file system check) [filesystem name]
- 파일시스템 점검 및 복구
mount [filesystem name] [mount point]
- 디바이스와 파일시스템 연결
Linux Filesystem permission
- rw-r--r-- 1 root root 12 4ὶ 14 16:16 hello.txt
- | rw-r--r-- | 1 | root | root | 12 | 4ὶ 14 | 16:16 | hello.txt |
파일 유형 | 파일 허가 | 링크 수 | 소유자명 (계정명) |
그룹명 | 파일 크기 | 마지막 변경된 날짜 | 마지막 변경된 시간 | 파일명 |
Owner | Group | Other | Owner와 Group: 파일소유자 자신과 자신이 속한 그룹 Other: 제 3자, 웹사이트 방문객은 제 3자로 nobody로 취급 |
||||||
r | w | x | r | w | x | r | w | x | r : 파일 읽기(4) w : 파일 쓰기(2) x : 파일 실행(1) |
7 | 5 | 5 | 파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제 3자는 읽고 실행만 가능 |
||||||
7 | 7 | 7 | 제 3자도 쓰기 권한이 주어짐 |
chmod
- 파일 or 디렉토리의 사용 권한을 지정하는 명령어
chmod [사용자카테고리][연산자][권한] [파일명]
[사용자카테고리][연산자][권한]
- u+w, u-x
- g+x, g-wx
- o=rwx, go-wx
- a=rwx
사용자 카테고리 | 의미 | 연산자 기호 | 의미 | 권한 기호 | 의미 |
u | 소유자 | + | 허가권 부여 | r | 읽기 허가 |
g | 그룹 | - | 허가권 제거 | w | 쓰기 허가 |
o | 기타사용자 | = | 특정 사용자에게 허가권 지정 | x | 실행 허가 |
a | 모든 사용자 (u+g+o) |
chown
- 파일 or 디렉토리의 소유자와 소유 그룹을 변경할 때 사용하는 명령어
- ex) # chown ubuntu:ubuntu test.txt
chgrp
- 파일 or 디렉토리의 사용자 그룹 권한 변경 명령어
- ex) # chgrp root test.txt
Linux Network
유/무선으로 연결되어 특정 프로토콜을 통해 통신
Linux iptables
방화벽을 설정하는 도구로 커널상에서 netfilter 패킷 필터링 기능을 사용자 공간에서 제어
특정 조건을 가지고 있는 패킷에 대해 허용(ACCEPT)과 차단(DROP)을 지정할 수 있음
체인(chain)
- 어떠한 네트워크 트래픽(IP 패킷)에 대하여 정해진 규칙들을 수행
- 들어오는 패킷(INPUT)에 대하여 허용, 거부, 드롭할 것인지 결정
filter | INPUT | 호스트 컴퓨터를 향한 모든 패킷 |
OUTPUT | 호스트 컴퓨터에서 발생하는 모든 패킷 | |
FORWARD | 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷 | |
nat | postrouting | 내부 네트워크에서 방화벽을 통해 외부로 나갈 때 사용 |
prerouting | 외부에서 방화벽 내부 서버로 향하는 패킷을 방화벽이 보호하는 내부 서버로 포어딩 할 때 사용 | |
mangle | prerouting | 라이팅 경로가 결정되기 전에 방화벽으로 들어오는 패킷에 대해 변경하거나 매칭 |
OUTPUT | 내부에서 생성된 패키시 방화벽을 통해 나갈 때 변경하거나 매칭 |
매치(match)
- iptables에서 패킷을 처리할 때 만족해야 하는 조건을 가리킴
- 이 조건을 만족시키는 패킷들만 규칙 적용
규칙 | 특징 |
--source (-s) | 출발지 IP주소나 네트워크와의 매칭 |
--destination (-d) | 목적지 IP주소나 네트워크와의 매칭 |
--protocal (-p) | 특정 프로토콜과의 매칭 |
--in-interface (i) | 입력 인터페이스 |
--out-interface (-o) | 출력 인터페이스 |
--state | 연결 상태와의 매칭 |
타겟(target)
- iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟 지원
규칙 | 특징 |
ACCEPT | 패킷 받아들임 |
DROP | 패킷 버림 (패킷이 전송된 적이 없던 것처럼) |
REJECT | 패킷을 버리고 이와 동시에 적절한 응답 패킷 전송 |
LOG | 패킷을 syslog에 기록 |
RETURN | 호출 체인 내에서 패킷 처리를 계속함 |
연결 추적(Connection Tracking)
- 내부 네트워크 상 서비스 연결 상태에 따라서 그 연결을 감시하고 제한할 수 있게 함
- 상태에 기반한 iptables 연결 추적 기능은 어니 네트워크 프로토콜에서 사용 가능
규칙 | 특징 |
NEW | 새로운 연결을 요청하는 패킷 |
ESTABLISHED | 기존 연결의 일부인 패킷 |
RELATED | 기존 연결에 속하지만 새로운 연결을 요청하는 패킷 |
INVALID | 연결 추적표에서 어디 연결에도 속하지 않는 패킷 |
Linux iptables 옵션
iptables 설치 및 사용 옵션
사용 옵션 | 설명 |
-A (--append) | 새로운 규칙 추가 |
-D (--delete) | 규칙 삭제 |
-C (--check) | 패킷 테스트 |
-R (--replace) | 새로운 규칙으로 교체 |
-I (--insert) | 새로운 규칙 삽입 |
-L (--list) | 규칙 출력 |
-F (--flush) | chain으로부터 규칙을 모두 삭제 |
-N (--new) | 새로운 chain 만듦 |
X (--delete-chain) | chain 삭제 |
-P (--policy) | 기본정책 변경 |
Linux iptables 설정
INPUT 체인에 프로토콜이 tcp이며 목적지 포트가 22번인 패킷에 대해 허용하도록 추가
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
INPUT 체인에 대한 기본 정책을 드롭하도록 변경
# iptables -P INPUT DROP
체인에 정의된 모든 규칙 삭제
# iptables -F
기본 정책을 ACCEPT로 변경
# iptables -P INPUT ACCEPT
INPUT 체인에 로컬 호스트 인터페이스에 들어오는 모든 패킷을 허용하도록 추가
# iptables -A INPUT -i lo -j ACCEPT
INPUT 체인에 state 모듈과 매치되는 연결상태가 ESTABLISHED, RELATED인 패킷에 대해 허용하도록 추가
# iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
Linux tcp-wrapper
네트워크 서비스에 관련한 트래픽을 제어하고 모니터링 가능
호스트명 및 서비스명을 로그에 남기고 허가된 시스템은 서비스를 제공하고 허가되지 않은 경우에는 접속 차단
Linux tcp-wrapper (설정 파일)
/etc/hosts.deny
- 적혀있는 조건에 해당하는 패킷 차단
/etc/hosts.allow
- deny에서 모든 접근을 차단 한 후 허용된 서비스와 IP만 접근 허용
Linux tcp-wrapper (ssh 접속 차단 및 허용)
tcp-wrapper 설치: 모든 호스트에 대한 접근을 차단하고 허가된 호스트만 접근 허용
블랙리스트 설정
- sshd: ALL (서비스명: 모든 접근)
화이트리스트 설정
- sshd: 172.X.X.X (서비스명: 허용할 IP)
다른 호스트에서 ssh 접근 시도
/var/log/secure 파일 기록 확인
Linux tcp-wrapper (다른 설정 방식)
예약어 및 패턴 매치 형식 | |
ALL | 모든 서비스 or 모든 호스트 |
LOCAL | 같은 네트워크에 있는 모든 호스트 |
UN(KNOWN) | 이름이 알려지지 않은(알려진) 사용자 이름 or 주소가 알려지지 않은(알려진) 호스트 |
PARANOID | 주소와 일치하지 않는 이름을 가진 호스트 |
B EXCEPT A | B에서 A를 제외한 모든 B |
ALLOW / DENY | 하나의 접근통제 파일에서 허가와 거부 규칙을 설정하고 싶은 경우 사용 |
xxx.yyy. | 네트워크 주소가 xxx.yyy.로 시작하는 모든 호스트 |
.name.net | 도메인 name이 name.net으로 끝나는 모든 호스트 |
198.200.201.0/255.255.254.0 | 198.200.201.0에서 255.255.254.0까지의 모든 호스트 |
대치 확장자 | 대치 확장 내용 |
%a(%A) | 클라이언트(서버) 주소 |
%c | 클라이언트 정보 |
%d | 서비스 데몬 이름 |
%h(%H) | 클라이언트(서버) 이름 or 주소 |
%n(%N) | 클라이언트(서버) 이름 |
%p | 데몬 프로세스 아이디 |
%S | 서버 정보 |
%U | 클라이언트 사용자 이름 |
Linux tcp-wrapper (IP Spoofing 공격 & 해결)
IP Spoofing 공격
- TCP Wrapper에서 192.168.0.2로부터 오는 ssh 접속 요청을 허가하도록 설정되어있다고 가정할 때,
크래커가 자신의 주소를 192.168.0.2로 속이고 접근
tcpdump와 netlog를 활용하여 시스템의 패킷 모니터링
런레벨 참고| https://continuetochallenge.tistory.com/66
리눅스 런레벨(Runlevel)
여러분은 리눅스 하면 어떤 화면이 먼저 떠오르시나요? 대부분의 분들은 텍스트 커맨드 창을 떠올리실 겁니다. 근데 요즘 리눅스를 기본 설정으로 설치하다보면 그래픽 인터페이스로 설치가 되
continuetochallenge.tistory.com
7 Layers of the OSI Model 참고| https://www.bmc.com/blogs/osi-model-7-layers/
OSI Model: The 7 Layers of Network Architecture
www.bmc.com
'2023_국민대 > AI 개발 환경의 이해' 카테고리의 다른 글
[Linux] Docker 개발 환경 (0) | 2023.04.16 |
---|---|
[Linux] Docker (0) | 2023.04.16 |
[Linux] 웹 서버 구축 Apache (0) | 2023.04.15 |
[Linux] Virtual Box + Ubuntu Linux (0) | 2023.04.15 |
[Linux] Linux (0) | 2023.04.15 |