Linux 14

다원·2023년 1월 22일
0
post-custom-banner

Server system 보안

서버를 운영하면 여러 사용자, 시스템 설정 서버 서비스 정보 저장
서비스를 정상 운영, 정보 노출을 피하기 위해 서버 머신에 보안 설정

서버 시스템에 보안을 설정할 때의 원칙

  • 필요한 프로그램만 설치, 사용자 접근 최소
  • 관련 프로그램(응용프로그램과 패치등) 지속적인 업데이트
  • 사용자에 대한 정확한 정보 최신 유지
  • 비밀성, 무결성, 가용성, 기록성, 부인봉쇄라는 측면을 염두하고 설정

손실의 우려가 있는 정보와 정보자산을 타겟으로 하는 위험과 위협, 취약점이 겹쳐지는 곳에서 시스템/네트워크 위험이 발생

보안상 주의 점

  • Hot Piece나 Bug Fix 이뤄지므로 항상 최신의 상태가 유지되도록 정기적 업데이트
  • 미리 서버시스템과 클라이언트 시스템으로 이루어진 Pilot System 먼저 패치를 적용시켜서 문제가 없는지 관찰 한 뒤 네트워크에 뿌림
  • 시스템과 소프트웨어 설정에 보안을 지정하는데 파일과 디렉터리에 적절한 권한을 설정, 하드웨어적인 저장장치에 BitLocker 등으로 암호화 해두어야함
  • root 계정 로그인 자제, su 명령어 사용자 제한 및 sudo 사용
  • 모니터링과 분석도 수시로 수행
  • 로그파일 관리 주의
  • 방화벽뿐만 아니라 침임탑지, 침입예방 라우터 적절히 설정
  • 최소한 SELinux 설정으로 주요 파일과 프로세스별로 권한을 세분화
  • Bios 조절하여 외부 디바이스로 시스템이 부팅되는 것을 막도록 CMOS 설정에 패스워드 설정

보안 설정

컴파일러 Permition 변경

컴파일러는 프로그램을 변환하는 프로세스, 컴파일러 파일로 외부에서 파일을 변경할 수 있기 때문에 관리자만이 사용 가능하도록 변경하는 것이 필요
g++ 컴파일러는 ~.c와 ~.cpp파일을 모두 c++ 파일로 취급해서 컴파일
gcc-c++: ~.c와 ~.cpp 파일을 구별해서 컴파일하는 컴파일러

  • 기본적으로 other도 컴파일러 실행 실행 권한 보유

    root 관리자만 실행할 수 있도록 권한 변경

파일의 권한(속성)을 변경하지 못하도록 설정

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 연결을위한 콘솔

  • 포트 확인

su와 sudo 사용자 제한

/etc/sudoers파일에 사용자가 기록되거나, %whell 그룹의 일원이 되면 sudo 명령어를 사용 할 수 있음
/etc/pam.d/su 에 지정하면 설정이 우선됨
sticky bit를 주의해야되는데, sticky bit는 누구나 사용할 수 잇는 설정

사용자 패스워드 관리

/etc/login.def 파일의 설정대로 작동
사용자의 패스워드 설정에 대해 규정할 수 있음

중요 명령어는 root 사용자만 실행시키기

자주 사용하는 useradd,crond 등 명령어는 관리자만 사용하도록 속성을 변경
외부 속성 변경을 막기 위해 chattr + i 옵션
프로그램 실행에서 경로 설정은 중요
일반 자용자의 $HOME/.bash_profile에서 ~/bin 디렉터리
일반 사용자 홈디렉터리에서 bin 파일은 해당 사용자 이름으로 저장된 위치 이외의 어디서나 코드를 실행 할 수 있음

커널이나 시스템이 정보를 알려주는 배너 파일은 해당 파일을 확인하여 버전등의 정보를 알아낸 뒤 취약점을 찾아 침투 할 수 있기에 감추는 것이 좋음
/etc/issue, /etc/issue.net, /etc/redhat-release, /etc/motd

/proc를 통한 설정

가상 파일시스템으로 하드디스크의 저장된 /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파일에서 변경해주는 것이 시스템을 안정되게 해야됨

  • 시스템 설정값 변경 시
  1. sysctl.conf 파일에서 파라미터_변수의 값을 변경
  2. echo "값" >> /proc/파라미터 변수: /proc의 파라미터의 변수 값을 변경
  3. sysctl -w 파라미터_변수 = 값
    원하는 값으로 변경해서 물리적으로 변경해도 일시적으로 /proc에만 적용되는 값
    sysctl -p or cat /etc/proc/sys/net방식으로 확인 해주면
  4. Telent FTP, SSH, HTTP 서비스와 열린 포트 등 조절
    : 연결시간 조절, 연결 유지 시간 조절 /proc/sys/net/ip4/tcp_keepalive_time,
    아는 포트 (proc/sys/net/ipv4/ip_local_port_range)로만 접속
profile
공부일지,
post-custom-banner

0개의 댓글