RedHat 계열에서 사용, Linux 배포판을 위한 디폴트 패키지 관리도구
Binary code RPM 포맷으로 꾸림 =package
RPM package에는 Source Code(~.src.rpm)도 들어있어
소스 코드를 적합한 형태로 변경한 뒤 rebuild 해서 RPM 이진 파일을 만들어서 설치하거나 재배포 할 수 있음
rpm 파일의 경우 프로그램을 설치 할 때 종속파일들을 별도로 확인하여 설치가 필요
yum으로 종속적인 파일까지 일괄적으로 설치/삭제하여 관리 할 수 있음
/var/lib/rpm 데이터베이스 디렉터를 사용해서 사용자 시스템에 설치된 RPM 패키지의 변경을 추적
관리시스템이 소프트웨어에 관한 것을 수행하므로 사용자는 이들 패키지에 대해서 수정이나 설정,관리가 필요가 없음
RPM 패키지 .rpm 확장자를 가지고 있기 때문에 쉽게 구별 할 수 있음
설치되거나 업데이트 된 파일 정보들과 이들 패키지의 변동추이를 지켜봄
~.src.rpm 보이면 RPM 소스코드로써 SRPM
실제 설치되는 RPM 이진 파일 전 단계 코드로 사람이 읽을 수 있음
개발자가 배포판 별로 소스파일을 생성해서 배포하면 사용자는 SRPM 코드를 시스템 목적에 맞춰 rebuild 하여 이진 RPM 파일로 만들어서 설치
~src.rpm: 목적에 따라 변경할 수 있는 소스 파일
~.spec: RPM의 rebuild 한 뒤 RPM 파일로 만드는 과정이 있는 스펙파일
~.rpm: 설치하면 실행되는 이진파일
패키지명 1.2.3-3kr.i123.rpm
: 패키지명 major, minor, patch, 패키지 릴리즈, Architecture 순
minor: 짝수이면 안정적, 홀수일 경우 개발이라는 의미
RPM 파일 다운 받을 시 minor의 숫자가 짝수인 것을 받아야됨
패키지 릴리즈: 몇 번 빌드했는가
Architecture: CPU 구조
-force: 충돌 무시
-nodeps: 의존성 무시하고 설치
--replacepkgs: 기존 패키지에 이상이 있을 때 대체
--replacefiles : 기존 패키와 버전이 다를 때 대체
rpm -i(설치),v(상세하게)h(hash)/U(업그레이드 설치)vh(#), --percent ~.rpm
yum으로 설치 가능
rpm -e(삭제) ~.rpm
rpm -qlp: 쿼리로 파일구성 확인 가능
웹 상에서 배포되는 RPM 패지키는 openGPG 표준(RFC2240)을 따르는 GPG도구로 DSA 암호화(md5/sha1) 알고리즘을 사용해서 생성한 배포자의 공개키와 패키지에 들어있는 개인키로 상호 서명 할 것을 요구
사용자가 패키지를 다운받아서 사용한다며 패키지에는 배포자의 개인키가 들어있고,
패키지를 설치하는 사용자에게는 패키지의 공개키를 다운받거나 비교하여
파일의 무결성을 확인 할 수 있다는 뜻
동시에 생성되므로 상호 동일한 개인키와 공개키로 서명되면, 해당 패키지에 유일한 ID가 부여되어서 패지키 설치할 때 숫자로 해당 패키지와 오리지널 소유자로부터 배포된 것이라는 것을 확인
설치 시 nokey라는 단어가 보이면 해당 패키지에 대한 개인키가 설치하는 머신에 없거나 배포자가 공개키를 생성해 두지 않아도 nokey로 나옴
GPG-Key에 의해서 정식 파일로 인증받은 것
: GPG키로 인증받은 패키지가 있으면 해당 디렉터리에 저장되게 됨
Key-ring이라고 부름
: SSL(Secure socket layer)키를 사용하는 패키지의 키는 해당 디렉터리에 저장되게됨
https, smtps,sftp 등을 사용하는 패키지들이 사용
certs: 인증서
pem: 개인키 공개키를 가지고 있음, 여러개의 키를 가지고 있음
외부로 연결할 때 도메인을 사용하여 평문장으로 연결하나, HTTPS를 사용함으로 SSL인증키가 있어야 연결됨
브라우저 별로 대표적인 포트 사이트를 이미 SSL 키를 저장해둠
firefox > reference >privacy>view Certificate> Authorities 해당 위치에서 보유하고있는 키를 보유하고 있기 때문에
firefox 브라우저를 통해서 외부로 나갈 경우 키를 확인해보면 이미 보유하고 있는것으로 확인이 가능
rpm 파일을 편집하고 -> rebuild -bb .spec => rpm 파일 생성, 설치 사용
1. 컴파일러 gcc, gcc-c++ 및 rpm build 설치
2. mockbuild: 이진 pacage를 생성하기 위해서 mockbuild라는 사용자를 생성
3. rpm 파일 다운로드 받고 설치
4. rmpbuild 디렉터리에 SOURCES_오리지널 파일과 PATCH, SPECS_SPEC 파일 존재
5. rpm build 작업을 하기 위해 bison.spec 파일을 사용환경에 맞춰 변경 후 저장
6. rpmbuild -bb bison.spec 실행하면 rpmbuild 아래에 RPMS 디렉터리 생성
7. RPMS 디렉터리 아래에 .rpm 파일이 생성되어 사용할 수 있음
사용자 정의 rpm 파일 생성
RedHat 계열에서 시스템 업데이트 or 사용 중인 package 업데이트 할 때 사용
Repository(저장소)가 있어 종속적인 패키지 문제도 한 번에 해결해가면서 작업할 수 있음
해당 패키지의 올바른 공개키를 찾아서 시스템의 키링에 넣어줌으로써 패키지의 전자 서명도 스스로 알아서 해주고
패키지 제거에도 뛰어난 도구, 종속된 모든 패키지들을 데이터베이스 디렉터리에 찾아가서 제거 할 준비한 뒤 종속되는 패키지들을 먼저 제거해서 제거 시 종속성의 문제가 없어짐
디폴트 리포지터리인 Centos -Base.repo 외에 특정 패키지에 대한 리포지터리 파일을 사용하거나, EPEL, REMI, IUS 등 추가적인 리포지터리를 설정 해두면 소프트웨어 관리를 풍부하게 할 수 있음
provides nmap: 어느 package로 설치하는지 확인
list installed: 설치된 여부를 확인
deplist: 종속적인 패키지 확인
info: 패키지의 정보 확인
--skip-broken: Repository 문제 무시
--nogpgcheck: 종속적 키 문제를 해결
remove: 종속 패키지를 한번에 삭제 할 수 있음
clean packages dbcache metadata: 캐시된 정보 지움
erase : 해당 패키지만 삭제
데비안 계열에서 사용
/etc/apt/source.list 파일에 설정해두면 됨
~.deb package를 사용할 경우
dpkg -s nmap 으로 설치 여부 확인 및 dpgk -P로 패키지를 삭제
dpkg frontend is locked by process error 발생 시
rm -rf /var/lib/dpkg/lock* 명령어 실행
/etc/yum.repos.d
파일에 들어있는 경로 정보는 인터넷 사이트가 대부분이지만
로컬에 형상 서버 등을 두고 이를 지정해서 사용 할 수 있음
리포지터리를 로컬/네트워크 디렉터리일 수도 있고 외부 HTTP/FTP 서버 일수도 있음
BASE와 같은 리포지터리를 사용
DVD등을 사용하거나
EPEL, REMI 별도의 리포지토리 설치해서 사용
NgniX 와 같은 특정 패키지에 관한 리포지터리를 파일을 생성하거나
~.repo 파일을 다운받아서 repository 디렉터리에 넣어두고 사용
base_usl, gpgkey, enable활성화 여부 등
필요시 priority: 우선순위 설정 ,enable: 허용 설정 등의 항목을 설정하여 사용할 수 있음
로컬에 서버를 구축해두고 조직에서 필요로 하는 모든 파일을 다운받게 해주는 서버
형상서버 구축하면
LAN에서 다운로드 하므로 WAN에서보다 다운로드 속도가 빠르고
인터넷 회선과 무관하므로 대역폭 사용이 적음
검증파일만 사용하게되므로 보안이 높고, 일관된 정책과 관리자 규칙에 따라 패키지가 관리됨
클라이언트가 로그인하면 먼저 찾아서 update여부 등을 push
WAN을 사용하여 다운로드 받을 경우
yum -y install createrepo
createrepo -v 생성할 디렉터리
/etc/yum.repos.d/ 아래에 local.repo 생성
local.repo 확인
clean all: 캐시 삭제
repolist all:
yum search nmap
서버가 있을 때 서버에 보안레벨이 있는데 클라이언트의 보안레벨과 서버의 보안레벨이 같을 때만 접속이 가능
setenforce 0 && getenforce 0 : 보안레벨이 낮음
defuals enforce로 적용되어 있음 보안레벨이 높음
context0 : 보안레벨에 대한 등위