Day 6-파일 구조와 퍼미션, 리눅스 네트워크 설정, 네트워크 명령어

2019. 11. 25. 09:12Security/리눅스

* 리눅스 파일 구조

실제 실행화면

- ls -al 명령어로 확인 가능.

- 디바이스 파일은 /dev에 저장되어 있음.

 

파일 종류

- : 일반 파일

d : 디렉토리(리눅스에서는 색으로도 구분되어 있음)

l : 링크 파일

b(block) : 블록 디바이스 파일(운영체제에서 정한 블록 단위로 캐시 가능)

c(character) : 문자 디바이스 파일

 

* 퍼미션

- rwx의 3종류로 나뉘며 8진수로 표기함. r은 읽기, w는 쓰기, x는 실행을 뜻함.

- 소유자(user) : 이 파일의 소유자. 첫 번째 퍼미션의 권리를 가짐

- 그룹 소유자(group) : 이 파일의 그룹 소유자 : 두 번째 퍼미션의 권리를 가짐

- 이외 모든 사용자(other) : 소유자와 그룹소유자를 제외한 일반 사용자. 세 번째 퍼미션의 권리를 가짐.

- 파일이 실행 파일이 아니면 x권한이 있는 것이 의미없음.

 

디렉토리에서 퍼미션의 의미

- r : 디렉토리의 파일 목록 확인

- w : 파일의 목록을 변경할 수 잇는 권한(파일에 대한 생성, 삭제도 가능)

- x : 디렉토리 목록에 직접 들어갈 수 있음.

 

chmod : 퍼미션 수정(파일 소유자만 가능)

형식 : chmod [옵션] [퍼미션] [파일]

-R :  디렉토리인 경우 하위 디렉토리와 파일도 같이 수정

 

chown : 소유자 변경

형식 : chown [-R] [변경할 소유자명] [대상]

 

chgrp : 그룹 소유자 변경

형식 : chgrp [-R] [변경할 그룹명] [대상]

 

- 소유자를 바꾸는 경우 그룹 소유자도 변경하는 경우가 대부분이기 때문에 chown [-R] [변경할 소유자명].[변경할 그룹명] [대상] 의 형식으로 사용 하기도 하는데, 비표준 명령(실행이 항상 보장되지 않음)이기 때문에 조심히 사용해야 한다.

 

# echo 11 > aa

// echo 11이라는 명령 결과를 aa에 저장.

 

#ls -l aa

// aa 파일의 상세 정보 확인

 

#chmod 755 aa

// aa 파일의 퍼미션을 755로 변경

 

#ls -l aa

// aa 파일의 상세 정보 확인(퍼미션이 -rwxr-xr-x로 변경된 것을 확인할 수 있음)

 

#chmod u-x,g-x,o-x aa

// aa 파일의 퍼미션 중 소유자(u), 그룹 소유자(g), 일반 사용자(o)의 실행 권한 삭제

 

# ls -l aa

// aa 파일의 상세 정보 확인(퍼미션이 -rw-r--r--으로 변경된 것을 확인할 수 있음)

 

# chown st01 aa

// 파일의 소유자를 st01로 변경

 

#ls -l aa

// aa 파일의 상세 정보 확인(소유자가 st01로 변경된 것을 확인할 수 있음)

 

# chgrp st aa

// 파일의 그룹 소유자를 st로 변경

 

# ls -l aa

// aa 파일의 상세 정보 확인(그룹 소유자가 st로 변경된 것을 확인할 수 있음)

 

# chown root.root aa

// aa 파일의 소유자와 그룹 소유자를 동시에 root로 변경(비표준 명령)

 

# ls -l aa

// aa 파일의 상세 정보 확인(소유자와 그룹 소유자가 aa로 변경된 것을 확인할 수 있음)

 

umask

- 파일을 만들때 퍼미션중 제외할 퍼미션 지정. 기본적으로 022(0022)로 지정한다. /etc/profile에 설정됨.

형식 : umask [제외할 퍼미션]

ex ) umask 077(0077)을 실행하면 생성되는 파일의 퍼미션은 700(0700)으로 변경된다.

기본 umask 설정 확인

# chmod 766 ~/t/test

// 모든 사용자가 읽기, 수정 가능

 

# chmod 755 ~/t/

// 파일의 삭제는 소유자만 가능 

 

* 네트워크 설정

NIC(Network Interface Card)

- 유닉스 시스템들은 각 시스템마다 NIC를 지칭하는 디바이스 파일명이 고유하다.

- 리눅스의 경우 ens32(eth0), ens34(eth1)로 명명. 지원되지 않는 NIC는 직접 컴파일 후 디바이스를 적재 해야 함.

- /lib/modules/3.10.0-693.el7.x86_64 /kernel/drivers/net에 리눅스에서 지원하는 모든 네트워크 디바이스 파일이 존재.

 

ifconfig

- 네트워크 인터페이스 상태를 확인하거나 설정 변경

형식 : ifconfig

        ifconfig [NIC명] 

        ifconfig [NIC명] [IP] netmask [mask명] [up|down]

- inet : ip 주소

- netmask : 넷마스크

- broadcast : 브로드캐스트

- ether : 맥주소

 

* TCP/IP 설정

- /etc/sysconfig/network-scripts/ifcfg-NIC명

- 네트워크 설정 파일(설정파일은 운영체제마다, 버전마다 위치가 다를 수 있음)

- IP, subnet mask, gateway 등등

- 왼쪽에 있는 것을 파라미터, 오른쪽에 있는 것을 값이라고 한다. 연산 기호를 대입 연산자라고 한다.

- ONBOOT : 시작할 때 마다 네트워크가 작동하는지에 대한 여부

- IPADDR : IP주소. IP주소를 변경 후 네트워크를 재시작 해주면 IP가 변경 됨.

- PREFIZ : 서브넷 마스크

- GATEWAY : 게이트웨이 주소

- DNS1 : DNS 서버 주소

 

resolv.conf(/etc/resolve/conf)

- DNS 서버

- 만약 /etc/sysconfig/network-scripts/ifcfg-NIC명에 저장한 DNS서버 주소와 /etc/resolv.conf에 저장한 DNS서버 주소가 다르면 resolv.conf에 있는 DNS주소를 먼저 참조

- nameserver : DNS 서버 IP. 도메인 이름을 IP주소로 변환 시켜주는 역할을 함.

- search : default 도메인 명

 

hostname(/etc/hostname)

- 호스트명

/etc/sysconfig/network

- 추가 설정 파일(호스트명, gateway, NOZEROCONF=yes)

- 중요한 파일이라고 보긴 어려움.

- NOZEROCONF : Zero Configuration Networking을 위해 예약된 서브넷 설정을 제거. 반드시 필요하지 않음.

- systemctl restart network(service network restart) : 파일을 수정한 후에는 반드시 네트워크를 재시작 해야한다.

 

* 다양한 네트워크 명령어

ping

- 특정 호스트까지 연결과 대상 시스템의 작동 여부를 확인한다.

 

netstat

-시스템의 연결 상태, 포트, 인터페이스등의 상태, 통계정보를 확인해 네트워크 상태를 진단

형식 : netstat [옵션]

-i : 인터페이스 상태 확인

-s : IP, ICMP, TCP, UDP에 대한 패킷 통계 정보

-nr : 라우팅 테이블 확인

- 192.168.10 대역대의 IP는 게이트웨이를 거치지않고 곧바로 통신하고 나머지 IP는 192.168.10.1(게이트 웨이)를 통해서 통신함을 의미.

 

- MTU : Maximum Transmission Unit

- RX : 수신 패킷의 갯수

- TX : 전송 패킷의 갯수

- DRP : 버린 패킷

- OVR : 유실 패킷

- Destination : 대상 주소. 0.0.0.0으로 되어 있을 경우 모든 호스트를 의미

- Gateway : 대상과 연결해주는 관문 역할을 담당하는 장치의 IP

- Genmask : 대상의 netmask. 255.255.255.255는 호스트, 0.0.0.0은 디폴트 라우트를 의미 한다.

 

* arp

- 패킷을 송수신한 대상의 MAC주소를 확인.

- 상대방의 ip주소는 아는데 mac주소를 모를때 정보를 요청해서 알아내는 것.

 

옵션(유닉스)

-a : arp 목록 전체 출력

-s : arp 등록(거의 사용 안 함)

-d : arp 삭제(거의 사용 안 함)

ip -s neigh flush all : arp 초기화

 

옵션(윈도우)

netsh interface ip add neighbors “interface” ip mac : arp 등록

netsh interface ip delete neighbors “interface” ip : arp 삭제

netsh interface ip delete arpcache : arp 초기화  

 

host

- 도메인명에서 ip를 확인하거나 ip를 이용해서 도메인 명을 확인.

- ip로 도메인을 확인하는 것은 rev zone을 확인하는 것이므로 도메인 설정을 확인하는 것으로는 큰 의미가 없다. 

 

traceroute(tracert)

- 출발지 시스템에서 목적지 시스템까지의 데이터 전송 경로를 추적하는 명령어

 

route

- 라우팅 경로를 확인하거나 수정.

- 네트워크 대역이 2개 이상이면서 필요할때만 수정. 

- Destination : 목적지

- Gateway : 게이트웨이 주소

- Genmask : 목적지 network의 netmask 주소. 255.255.255.255는 목적지 host의 주소, 0.0.0.0은 기본 gateway 주소.

- Flags : 해당 경로에 대한 정보를 알려주는 기호.(U : 활성화된 경로, H : 호스트 주소, G : 게이트 웨이)

- Iface : 패킷이 오가는데 사용할 네트워크 인터페이스.

 

* 개념 및 용어 정리

buffer(버퍼)

- 일종의 임시 저장 장소.

- 어떠한 파일을 사용해야 할때 데이터 대신 담아둘 수 있는 공간. 1회성의 성격이 짙음.

 

cache(캐시)

- 속도가 느린 매체를 사용할 때, 자주 쓰는 데이터를 빠르게 실행하기 위해 저장하는 공간.

- 여러번 사용 가능

 

디바이스 파일이 필요한 이유

- 하드웨어를 직접 제어하는 커널을 통해 장치에 접근하기 위해서.

- 하나의 디바이스가 동작하기 위해서는 커널에 드라이버가 적재되어 있어야 하고 /dev에 디바이스 파일이 있어야 함.

 

selinux

- 보안을 강화해주는 보안 강화 터널

 

멀티플렉싱(다중화)

- 응용계층에서 받은 데이터를 전송계층이 세그먼트로 만든 뒤, 세그먼트를 네트워크 계층으로 캡슐화해서 보내는 것. 

 

디멀티플렉싱(역다중화)

- 네트워크 계층에서 받은 세그먼트를 응용계층이 포트번호와 헤더를 확인하고 적절한 소켓에 전달 하는 것.