리눅스 시스템 보안 관리 방법
- 불필요한 서비스 제거
: 응용 프로그램의 버그를 통한 해킹 시도 차단
- /etc/issue, /etc/issue.net에 설정된 메시지 변경
: 시스템 접속 시 출력되는 메시지
: 기본값으로 리눅스 버전과 커널 버전이 명시되어 있어 보안에 위협
- root 계정 비밀번호 변경 제한
: root 계정의 비밀번호를 재설정 할 수 있는 grub에 대한 비밀번호 설정
1) grub
> grub 프롬프트 실행
2) md5script
> 암호화된 비밀번호 생성
3) vim /etc/grub/grub.conf
> password --md5 <crypted password> 추가
- 보안이 강화된 서비스 이용
: telnet 대신 ssh. ftp 대신 sftp 사용
- 파일 시스템 관리
: set-UID, set-GID, sticky-Bit 등의 권한 남용 예방
: 파티션에 대해 /etc/fstab 파일 설정에 nosuid 옵션 추가
리눅스 시스템 보안 관련 명령어
- sysctl
- sudo
- visudo
- lsattr
- chattr
- nmap
sysctl
: 커널 변수의 값을 제어하여 시스템을 최적화
: /proc/sys 디렉터리의 변수를 제어
: /proc/sys를 최상위 디렉터리로 인식하여 명령 수행
:디렉터리 구분은 / 대신 . 으로 구분
- 형식
: sysctl [option] <variable>[=<value>]
- 주요 옵션
: -a, -A
> 커널 매개변수와 값 모두 출력
: -p [<file>]
> 환경 변수 파일에 설정된 값 출력. 파일명 미 지정 시 /etc/sysctl.conf 파일의 내용 출력
: -n
> 특정 매개 변수에 대한 값 출력
: -w <variable>=<value>
> 매개변수에 값 설정
- 주요 변수
: net.ipv4.icmp_echo_ignore_all
> ping과 같은 ICMP 패킷에 대한 응답 여부. 0 (응답) / 1 (거절)
: net.ipv4.tcp_syncookies
> SYN 패킷의 도착 빈도가 일정 횟수 보다 많을 때 거절 여부. 0 (거절) / 1 (응답)
: net.ipv4.tcp_max_syn_backlog
> SYN 요청 처리의 한계값인 backlog의 크기 설정. 기본값 2048
: net.ipv4.icmp_echo_ignore_broadcasts
> 브로드캐스트에 대한 응답 여부. 0 (응답) / 1 (거절)
: net.ipv4.conf.all.accept_source_route
> 라우팅 세부 내용이 노출될 수 있는 IP 소스 라우팅 설정. 0 (설정안함) / 1 (설정)
: net.ipv4.conf.all.rp_filter
> 패킷이 들어오는 인터페이스와 나가는 인터페이스가 같은지 검사. 0 (설정안함) / 1 (설정)
: net.ipv4.conf.all.logmaritans
> 스푸핑 패킷과 redirect 된 패킷의 기록 저장 여부. 0 (저장안함) / 1 (저장)
: net.ipv4.tcp_fin_timeout
> TCP 세션 종료 후 세션 연결 유지 시간. 기본 60 (초)
: net.ipv4.tcp_keepalive_time
> TCP 연결 유지 시간. 기본 7200 (초)
: net.ipv4.ip_forward
> 인터넷 공유나 IP 매스커레이드 등 하나의 서버에서 IP를 공유하여 포워딩 가능 여부. 0 (불가) / 1 (가능)
: net.ipv4.ip_local_port_range
> TCP 및 UDP를 이용한 클라이언트 포트 범위.
: net.ipv4.tcp_timestamps
> 외부에서 서버의 날짜정보 확인 가능 여부. 0 (불가) / 1 (가능)
: net.ipv4.conf.all.accept_redirects
> redirect 관련 패킷 허가 여부. 0 (불가) / 1 (가능)
: net.ipv4.conf.all_send_redirects
> 서버에서 나가는 ICMP redirect 패킷 허가 여부. 0 (불가) / 1 (가능)
: fs.file-max
> 커널에서 최대로 사용 가능한 파일 수 설정
sudo
: root가 아닌 사용자나 그룹이 root 권한으로 명령어를 실행
: /etc/sudoers 파일을 수정하여 사용자 별로 root 권한 명령 지정 가능
- 형식
: sudo <command>
/etc/sudoers
: sudo의 환경 설정 파일
- 형식
user access_point=command,command,...
- 예시
```
2mukee ALL=ALL
: 2mukee 사용자에 대해 접속 장소와 상관없이 모든 명령 사용 가능하도록 설정
hackerman1 localhost=/usr/bin/useradd, /usr/bin/passwd
: hackerman1 사용자는 localhost에서 접속한 경우에만 useradd와 passwd 명령 사용 가능
```
visudo
: sudo의 환경설정 파일인 /etc/sudores 파일을 편집 할 때 사용
lsattr
: 파일에 설정된 속성 확인
- 형식
: lsatter [option] [file]
- 주요 옵션
: -R
> 하위 디렉터리까지 확인
: -a
> .으로 시작하는 숨김 파일과 디렉터리까지 확인
chattr
: 파일의 속성 변경
- 형식
: chatter [option] mode <file>
- 주요 옵션
: -R
> 하위 디렉터리까지 변경
- mode (+, -, =으로 속성 부여 및 해제)
: A
> 파일 수정 시 atime은 수정하지 않음
: a
> 해당 파일에 추가만 가능. 삭제 불가
: d
> dump로 백업 되지 않음
: i
> 해당 파일에 대한 변경, 삭제, 파일 추가, 링크 파일 생성 등 불가
: S
> 파일 변경 시 디스크 동기화 실행
: e
> 디스크 블록에 매핑하기 위해 확장된 파일임을 표시하는 속성. 제거 불가
- 예시
```
chattr -i +a /etc/log/messages
```
nmap
: 네트워크 탐지 및 보안 스캐너 도구
: 시스템에서 서비스 중인 포트를 스캔하여 관련 정보를 출력
: 서버에 불필요하게 작동하고 있는 포트 확인
- 포함되는 패키지
: ncat
> 소켓 리다이렉트 도구
: ndiff
> 스캔 결과 비교 도구
: nping
> 패킷 생성 도구
- 형식
: nmap [option] [<port number>]
- 예시
```
nmap -O -p 1-65535 localhost
: localhost의 운영체제와 열린 포트 출력
```
Refference
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 PAM (Pluggable Authentication Module) 관리 (0) | 2022.10.12 |
---|---|
리눅스 SSH 서버 관리 (0) | 2022.10.12 |
리눅스 로그 확인 및 기록 (0) | 2022.10.12 |
리눅스 로그 로테이트 (logrotate) (0) | 2022.10.11 |
리눅스 시스템 로그 관리 (0) | 2022.10.11 |