System/Linux

서비스별 보안 기능

Kaget 2020. 5. 22. 17:51

samba, ssh, ftp, apache, dns, nfs 의 보안기능에 대해 알아보겠습니다.

 

이 서비스들 중에 보안기능이 없는 서비스는 DNS 뿐입니다.

보안기능이 없는 이유는 필요없기 때문입니다.

 

그 외에 다른 서비스들은 모두 계정관리가 필요하며 보안기능이 있어 그에 대한 설정이 필요합니다.

 

 

Samba서버

사용자 관리 : 'smbpasswd [-a] 유저명'로 할수 있다.

설정 파일 : /etc/samb.conf

 

- follow symlinks = yes 로 심볼링 링크 디렉토리에 대한 접근제어를 할수 있다.

 

- tcp wrapper로 원하는 ip주소에 대한 접속 제어를 할수 있다.

 

- chroot는 기본으로 적용되어있다.

 

 

FTP서버

PAM 모듈 : /etc/pam.d/vsftpd
접근 제한 파일 : /etc/vsftpd/ftpusers
                      /etc/vsftpd/user_list

 

- Active/Passive mode 설정
pasv_enable=NO(default : YES)

액티브모드와 패시브모드 중 어떤걸 쓸지에 대한건 클라이언트에서 정하지만 이 설정으로 강제할 수 있다.

 

- anonymous_enable=NO 익명 사용자에 대한 접근 제어를 할수 있다.

 

- tcp_wrappers=YES로 원하는 ip주소에 대한 접속 제어를 할수 있다.

 

- chroot

chroot_local_user=YES (d:No)

(yes는 기본정책이 allow이고 NO는 deny이다.)
chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

allow_writeable_chroot=YES

 

- 사용자 접근 제어

userlist_enable=YES

userlist_deny=NO

위와 같이 설정하면 user_list 파일에 등록된 사용자만 접속이 가능하다.

pam_service_name = vsftpd 를 설정하면 /etc/pam.d/에 설정 파일이 만들어진다.

그 설정파일의 sense=deny 설정을 allow로 바꾸면 /etc/vaftpd/ftpusers에 등록된 사용자만 접속이 허용된다.

 

 

NFS서버

설정 파일 : /etc/exports

 

- 파일 권한

ro : 읽기 전용, rw : 읽기 쓰기 허용

 

- 사용자 접근 제어
root_squash : 클라이언트의 root를 nobody로 매핑
no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.
all_squash : 모든 사용자를 nobody로 매핑
no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.

 

SSH서버

설정 파일 : /etc/ssh/sshd_config

공개키 저장 경로 : $HOME/.ssh/

#ListenAddress                    여러 개의 IP중 SSH이용할 IP
#PermitRootLogin yes           Root 계정 로그인 허용
#PermitEmptyPasswords no   암호 없는 계정에 대한 접속 여부

subsystem sftp /usr/libexec/openssh/sftp-server         sftp 서버 지정

 

- 사용자 제한 (sshd_config 파일)

AllowUsers [유저] [유저] … 

Allowgroups [그룹] [그룹] …

DenyUsers [유저] [유저] … 

DenyGroups [그룹] [그룹] …

 

- tcp wrapper로 원하는 ip주소에 대한 접속 제어를 할수 있다.

 

Apache서버

설정 파일 : /app/apache/conf/httpd.conf

 

- 디렉토리 리스팅

Options Indexes 옵션 제거

 

- 심볼릭 링크

Options FollowSymLinks 옵션 제거

 

- 프로세스 권한 제한

User와 Group의 계정을 root가 아닌 web관리 계정으로 변경한다.

 

- 상위 디렉토리 접근 금지

AllowOverride None

AllowOverride AuthConfig 로 설정한다.

 

- 매뉴얼 제거

ls -ld /app/apache/htdocs/manual

ls -ld /app/apache/manual

명령을 이용해 불필요한 파일을 제거한다

 

- 서비스 영역 분리

DocumentRoot "디렉터리" 옵션을 이용해 기존 디렉터리가 아닌 다른곳으로 지정한다.

 

- 업/다운로드 용량 제한

LimitRequestBody 5000000 등으로 제한한다. (5MB)