1. 계정관리
1 - 1. Root 계정 원격접속 제한 * KISA 다운로드 링크 포함
2. 파일 및 디렉토리 관리
2 - 1. root 홈, 패스 디렉터리 권한 및 패스 설정
2 - 3 ~ 8. /etc 하위 디렉토리 파일 소유자 및 권한 설정
3. 서비스관리
3 - 1 ~ 23. 각종 서비스 관리 (현재글)
가. Finger 서비스 비활성화
1) Finger 서비스 : 사용자 정보 확인 서비스로 'who'와 다르게 시스템에 등록된 사용자를 포함하여
네트워크를 통해 연결되어 있는 다른 시스템에 등록된 사용자들에 대한 자세한 정보를 출력한다.
Finger 파일 위치 및 점검 방법은 다음과 같다.
Y# ls -alL /etc/xinetd.d/* | egrep "echo finger" 이전 챕터에서 xinetd를 점검했었으나, xinetd 자체를 사용하지 않는 최신의 리눅스에서는 당연하지만 finger 자체가 존재하지 않는다. 설치해서 조치 방법을 보여주고 싶었으나... 이제는 안되나보다. 만약 존재한다면 xinetd.d에서 finger파일을 찾아 disable을 yes로 변경한 후, xinetd를 재시작하자. # vi /etc/xinetd.d/finger disable = no → yes로 변경 # service xinetd restart |
나. FTP 서비스 비활성화
1) 서비스 확인 및 조치
Rocky8 버전의 리눅스에서는 proftpd와 vsftpd 서비스가 설치가 되어있지않다. 그러나 ftp 계정은 존재하는 것을 확인할 수 있었다. # cat /etc/passwd | grep "ftp" # userdel ftp |
2) FTP 및 전송에 대해..
위에서 ftp 계정을 조회하자 /sbin/nologin으로 설정되어있는 것을 볼 수 있는데, 쉘 접속을 막기 위해서는
/sbin/nologin 혹은 /bin/false 중 하나를 설정해야한다.
/sbin/nologin은 사용자가 해당 계정으로 로그인을 하지 못하게 하지만, 계정의 서비스나 기타 작업 등
다른 시스템 자원을 사용할 수 있도록 허용하는 것으로, 보통 시스템 계정과 데몬계정에서 사용한다.
/bin/false는 해당 계정의 로그인과, 다른 시스템자원도 사용할 수 없도록 막기 때문에, 일반사용자계정에서 사용한다.
위 링크를 참조하려고 FTP를 다운로드 받아 조치방법까지 작성하려고했었으나..
이제는 지원하지 않는 것 같다.
보안에 취약한 FTP를 대체할 전송방식은 너무나도 많다.
SSH를 사용하는 FTP 방식의 SFTP가 그 예로, 파일자체를 전송할 목적이면, Git, SMB, NFS 등등
여러가지 서비스가 존재한다. 자세한 내용은 추후 다룰 기회가 있다면 다룰 생각은 있으나,
우선 보안취약점 점검이기 때문에 FTP 서비스가 존재하는지, 그리고 존재한다면 차단하는 방법과
anonymous, ftp 계정을 점검 및 삭제하는 것으로 마무리하겠다.
다. r 계열 서비스 비활성화
xinetd 는 Rocky 8에서 비활성화 되어있다. 이에 따라 r 서비스관련 파일들은 Rocky8에서 볼 수 없다.
아래 링크를 참조.
존재할 경우 조치방법은 다음과 같다.
해당 서비스 활성화 여부 확인 # ls -alL /etc/xinetd.d/* | egrep "rsh|rlogin|rexec" | egrep -v "grep|klogin|kshell|kexec" 존재할 경우 /etc/xinetd.d 디렉터리 내의 rsh, rlogin, rexec 파일을 연 후 Disable = yes로 변경 변경 후 서비스 재시작 # service xinetd restart |
라. crond 파일 소유자 및 권한 설정
1) 관련 파일 및 디렉터리 권한 수정(640)
위치는 OS 버전별로 다름 # ls -al /usr/bin/crontab # chmod 640 /usr/bin/crontab ls -alL /etc/cron* chmod 640 /etc/cron* 위 그림에서는 하나하나 설정했으나 와일드카드도 잘먹는다. |
마. 기타 비활성화 서비스 : xinetd.d 미사용, NFS, automountd, RPC, sendmail 등 미사용
* 버전업되며 보안에 취약한 과거 서비스들은 기본적으로 비활성화 및 관련 파일들이 존재하지 않는다.
바. 웹 서비스 디렉터리 리스팅 제거
1. Options 지시자에서 Indexes 옵션 제거 # vi /etc/httpd/conf/httpd.conf 2. 제거 완료 3. 설정 적용을 위한 서비스 재기동 # systemctl restart httpd |
사. 웹 서비스, 프로세스 권한 제한
1) root가 아닌 별도 계정으로 적용됨을 확인
# vi /etc/httpd/conf/httpd.conf |
아. 웹 서비스 상위 디렉터리 접근 금지
apache는 리눅스의 대부분의 서버에서 설치되어있는 웹서비스를 제공해주는 데몬 프로그램이다. httpd.conf 파일에서 아피치에 대한 설정을 할 수 있으며, 웹 서비스가 상위 디렉터리에 접근 금지하는 설정을 하기위해서 해당 conf 파일로의 접근이 필요하다. 정리하면 특정 디렉터리를 허가된 사용자에게만 공개를 해야 할 경우, 특정 디렉터리에 접근을 시도할 때 계정 정보를 물어보며, 인증에 성공할 경우 접근에 허용되는 기능을 주는것이 htpasswd 기능이다. htpasswd 기능을 사용하기 위해서는 접근을 제한하고 싶은 디렉터리에 .htaccess 파일을 만들어야하며 apache에서 .htaccess파일이 디렉터리에 있는지 확인하고, 존재한다면 그에 따라 계정을 물어보게 해야하는데 이를 위해서는 httpd.conf 파일에서 AllowOverride를 AuthConfig로 활성화해주어야한다. 위치는 버전 및 설치 위치에 따라 다르며, 기본적으로 /etc/httpd/conf에 위치해 있다. 1. 모든 디렉터리의 AllowOverride 지사자 옵션 변경(None → All) AllowOverride는 .htaccess 파일을 사용할수 있도록 설정하는 부분에 대한 옵션이다. AllowOverride가 none일 경우 apach가 .htaccess파일을검색하지 않아서 만들어도 적용이안된다. 가이드에는 AuthConfig로 변경하라고 되어있으나 버전업 되며 All로 바뀌었다. 2. 사용자 인증을 설정할 디렉터리에 .htaccesss 파일 생성 - .htaccesss 파일이란 .htaccess 파일은 Apache 웹 서버에서 사용되는 설정 파일로, “하이퍼텍스트 액세스”의 줄임말을 뜻한다. 웹 서버의 동작을 변경하고 제어하기 위해 사용된다. 필자는 /var/www/html 안에 생성하겠다. .htaccess 파일은 다음과 같이 입력한다. AuthName 'auth' AuthType Basic AuthUserFile /home/user/auth Require valid-user 옵션은 다음과같다. AuthName : 인증영역(웹 브라우저 인증 창에 표시할 문구) AuthType : 인증형태(Basic, Digest) AuthUserFile : 사용자 정보(ID, PW) 저장 파일 위치 AuthGroupeFile : 그룹 파일의 위치(옵션, 필수아님) Require : 접근을 허용할 사용자 또는, 그룹 정의 3. 사용자 인증에 사용할 ID, PW 생성 이때, .htaccesss 파일에서 생성한 저장 파일의 위치와 동일한 곳이여야한다. # htpasswd -c '저장할 위치 및 파일 이름' ID 위와 같이 설정한다면 /home/user/auth에 .htpasswd를 사용하여 앞으로 /var/www/html 디렉터리에 접속할 때 myauth라는 인증창에 ID : test PW : 를 올바르게 입력해야 접근이 가능해진다. 설정을 완료하고 나서는 Apache 데몬을 재시작해야한다. # systemctl restart httpd 4. 확인 잘 동작되는것을 확인할 수 있다. |
자. 웹 서비스 링크 사용금지
FollowSymlinks 옵션이 켜져있다면 해당 폴더의 파일 목록이 보이게 된다. 웹 루트 폴더(DocumentRoot)에 root 디렉터리(/)를 링크하는 파일이 있으며 디렉터리 인덱싱 기능이 차단되어 있어도 root 디렉터리 열람이 가능하게 되기 때문에 시스템 권한이 탈취 될 수 있다. 따라서 httpd.conf 파일에서 아래와 같이 설정되 있는 경우 조치가 필요하다. - 조치방법 Index를 삭제한다.(혹은 디렉터리마다 Index 파일을 만든다.) 버전마다 options 자체를 삭제하거나 index를 제거해야 할 수 있다. 자세한 내용은 apche의 버전별 문서를 참조하는 것이 좋다. |
차. 웹 서비스 파일 업로드 및 다운로드 제한
대용량의 파일 반복 업로드로 서버자원을 고갈시키거나, 웹 쉘 공격으로 시스템 권한을 탈취 할 수 있기 때문에, 파일의 업로드 및 다운로드의 권한을 조정하여야한다. KISA에서는 5MB 이상의 대용량 파일이나 확장자를 업로드 혹은 다운로드시 white list 방식으로 제한하는 것을 권장한다. -점검방법 # vi /etc/httpd/conf/httpd.conf 업로드 파일 사이즈를 제한 할 디렉토리에 아래의 옵션을 추가(모든 파일 사이즈를 최대 5M로 제한) LimitRequestBody 5000000 |
카. 웹서비스 영역의 분리
Apache는 www서버이기 떄문에 클라이언트 요청에 대해 대응하는 응답을 반환하는데, 이러한 내용을 저장해 두는 위치를 DocumentRoot로 지정한다. 이러한 DocumentRoot를 기본 디렉터리로 지정한 경우 비인가자가 웹 서비스를 통해 해킹이 성공할 경우 시스템 영역으로 접근이 가능하여 피해 확장이 가능하다. 기본적인 잘 알려진 기본 경로는 다음과 같다. /usr/local/apache/htdocs /usr/local/apache2/htdocs /var/www/html 위와 같은 기본경로인 경우 etc, bin, sbin, usr 등 시스템의 중요 디렉터리 외에 별도의 디렉터리를 생성하여 설치 운영하는 것이 바람직하다. 1. 점검 방법 httpd.conf 파일에서 DocumentRoot를 확인 2. 조치 방법 별도의 디렉터리를 생성하여 설치, 운영한다. |
'공부 > 리눅스' 카테고리의 다른 글
4. 패치관리 - 최신 보안패치 및 벤더 권고사항 적용 (2) | 2024.05.05 |
---|---|
CUDA, Docker 설치 (0) | 2024.05.03 |
2-14. 리눅스 취약점 조치(파일 및 디렉토리 관리) - 접속 IP 및 포트 제한 (0) | 2024.01.31 |
2-10~13. 리눅스 취약점 조치(파일 및 디렉토리 관리) - 시작 및 환경 파일 등 점검 (0) | 2024.01.31 |
2-9. 리눅스 취약점 조치(파일 및 디렉토리 관리) - SUID, SGID, 설정 파일점검 (0) | 2024.01.30 |