2019. 11. 25. 09:12ㆍSecurity/리눅스
* 리눅스 파일 구조
- 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)으로 변경된다.
# 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
- 보안을 강화해주는 보안 강화 터널
멀티플렉싱(다중화)
- 응용계층에서 받은 데이터를 전송계층이 세그먼트로 만든 뒤, 세그먼트를 네트워크 계층으로 캡슐화해서 보내는 것.
디멀티플렉싱(역다중화)
- 네트워크 계층에서 받은 세그먼트를 응용계층이 포트번호와 헤더를 확인하고 적절한 소켓에 전달 하는 것.
'Security > 리눅스' 카테고리의 다른 글
Day 8-리눅스 프로세스 및 RPM&YUM (0) | 2019.11.27 |
---|---|
Day 7-IP alias, 리눅스 파일시스템 (0) | 2019.11.26 |
Day 5-리눅스 사용자 관리 (0) | 2019.11.22 |
Day 4-네트워크 기본, 리눅스 (0) | 2019.11.21 |
Day 3-유닉스 기본 명령어, vi 에디터 (0) | 2019.11.20 |