서버를 운영하면 여러 사용자, 시스템 설정 서버 서비스 정보 저장
서비스를 정상 운영, 정보 노출을 피하기 위해 서버 머신에 보안 설정
손실의 우려가 있는 정보와 정보자산을 타겟으로 하는 위험과 위협, 취약점이 겹쳐지는 곳에서 시스템/네트워크 위험이 발생
컴파일러는 프로그램을 변환하는 프로세스, 컴파일러 파일로 외부에서 파일을 변경할 수 있기 때문에 관리자만이 사용 가능하도록 변경하는 것이 필요
g++ 컴파일러는 ~.c와 ~.cpp파일을 모두 c++ 파일로 취급해서 컴파일
gcc-c++: ~.c와 ~.cpp 파일을 구별해서 컴파일하는 컴파일러
chatter(change attribute) 명령어를 사용하여 파일의 속성 변경을 막을 수 있음
root 사용자도 할 수 없도록 설정이 가능
chatter 명령어로 권한에 +i가 들어가면 파일의 속성을 변경할 수 없음
ls명령어로는 i에 대한에 대해 확인 할 수 없음
파일을 속성을 변경할려고 확인해보면 변경되지 않음
chattr의 권한을 해제하고 권한을 변경하면 변경됨
/usr/bin : 주요 명령어 , /usr/sbin : 시스템 설정 명령어
/etc/ : 각종 설정파일, /boot : boot 관련
/dev/sda : 운영체제가 들어있는 하드디스크
partition등 백업할 필요가 있음
백업 전 du -h 를 사용하여 디렉터리의 용량을 확인 > 용량에 맞는 하드디스크 추가
하드디스크 추가 후 파티션과 포맷을 진행 > 마운트 포인터 생성후 마운트
압축 명령어를 사용하여 마운트포인트 디렉터리 아래에 백업할 파일 저장
partion 백업의 경우 sfdisk를 사용(-d옵션: dump)
qmial, apache, vsftp, samba 등의 서비스 데몬도 백업 파일 생성이 가능
well-know 포트 이외에 포트는 접속하지 못하도록 하는 방법 등으로 보안
슈퍼데몬의 경우 /etc/xinetd 디렉터리 아래에 child Daemon이 존재,
설정파일에 includedir /etc/xinetd 때문에 슈퍼데몬을 실행하면 child 데몬이 동시 동작
child 데몬에 백도어를 저장할 경우 사용자가 슈퍼데몬을 실행할 때 백도어도 같이 실행됨
xinetd 디렉터리 아래에 backdoor라는 child Daemon을 생성
서비스 등록 흉내내어 /etc/services 에 추가
telnet 서버를 이용하기 위해 child Daemon 생성
방화벽을 열어주고 서비스 시작 한 후 외부에서 telnet 접속하면 곧 바로 root 사용자로 접속됨
telnet을 이용하여 backdoor port를 사용 할 경우 backdoor포트로 접속하여 들어가게 됨
open-ssh 설치 후 sshd_config 파일 수정
Port번호를 변경 할수 있고, root 사용자 접속과 특정 user의 접속을 설정할 수 있음
conf 파일에서 Port를 변경하였기 때문에 22번 포트로는 접속 할 수 없음
변경된 Port로 접속할 경우에도 root 사용자로 접속 할 수 없음
config 파일에서 접속가능한 user를 설정했음으로 해당 사용자로만 접속이 가능
/etc/securetty
console: 사용자와 컴퓨터의 인터페이스
tty root가 가상 터미널을 통해 접속, tty0은 모니터/키보드, tty1 이상부터 가상콘솔
CLI에서 실행되는 콘솔 = terminal
ttys: IoT의 Arduio 등에서 외부와 Serial 접속시 열리는 CLI 콘솔
vc: GUI 시행 콘솔 /dev/pts Xmanager에 의해서 X.org 접속시 열리는 GUI 콘솔, root 사용자 콘솔로 telnet,ssh 등 terminal 접속 시 사용
-> pts/1~pts/11로 표시되는데 원격지에서 root 접속을 막으려면 비워두거나 필요한 것만 주석을 제거하여 사용
pty: GUI 중 그래픽/텍스트의 가상 콘솔, xterm, screen 등에서 사용
hvc: HyperVisor Serial 연결을위한 콘솔
/etc/sudoers파일에 사용자가 기록되거나, %whell 그룹의 일원이 되면 sudo 명령어를 사용 할 수 있음
/etc/pam.d/su 에 지정하면 설정이 우선됨
sticky bit를 주의해야되는데, sticky bit는 누구나 사용할 수 잇는 설정
/etc/login.def 파일의 설정대로 작동
사용자의 패스워드 설정에 대해 규정할 수 있음
자주 사용하는 useradd,crond 등 명령어는 관리자만 사용하도록 속성을 변경
외부 속성 변경을 막기 위해 chattr + i 옵션
프로그램 실행에서 경로 설정은 중요
일반 자용자의 $HOME/.bash_profile에서 ~/bin 디렉터리
일반 사용자 홈디렉터리에서 bin 파일은 해당 사용자 이름으로 저장된 위치 이외의 어디서나 코드를 실행 할 수 있음
커널이나 시스템이 정보를 알려주는 배너 파일은 해당 파일을 확인하여 버전등의 정보를 알아낸 뒤 취약점을 찾아 침투 할 수 있기에 감추는 것이 좋음
/etc/issue, /etc/issue.net, /etc/redhat-release, /etc/motd
가상 파일시스템으로 하드디스크의 저장된 /etc/sysctl.conf 파일에 설정된 커널 값을 메모리에 저장하는 역할 (속도 향상, /etc/sysctl.conf =/proc의 원본 파일)
커널에 대한 modular 방식과 monolithic 방식의 차이를 볼 수 있음
커널 자원에 대한 정보를 PID 구별해서 보관
물리적으로 존재하는 것은 아니기 때문에 가상파일시스템
/etc/sysctl.conf 커널의 설정값을 변경하면 /proc파일 시스템에 바로 반영
:메모리에서 실행되고 있는 설정값을 변경할 때 /proc파일을 쓸 경우 /etc/sysctl.conf에서 변경하는 것보다 속도가 빠름
/proc 파일은 메모리에 있어 휘발성 설정으로 reboot 할 경우 원상 복구 됨
sysctl -p: 하드디스크에 저장된 커널의 설정값을 확인할 수 있고
하드디스크에 저장된 값이 메모리에 올라가 있음을 확인 할 수 있음
/proc은 리눅스 커널 자원들에 대한 정보를 PID 구별해서 보관
메모리의 총 용량을 top으로 확인 할 수 있는데 /etc/proc의 meminfo와 값이 동일
시스템 설정 조정할 필요가 있을 경우에는 물리적인 /etc/sysctl.conf파일에서 변경해주는 것이 시스템을 안정되게 해야됨