5 분 소요

시스템 보안 체크리스트

root 계정 원격 접속 제한


telnet-server 설치, 설정, 서비스 시작

# yum -y install telnet-server

# vim /etc/xinetd.d/telnet

# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

service xinetd restart 
[root@localhost ~]# netstat -antup | grep 23
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2354/master         
tcp        0      0 :::23                       :::*                        LISTEN      3527/xinetd         
tcp        0      0 ::1:25                      :::*                        LISTEN      2354/master


telnet 접속 테스트 (ktest , root)

2022-10-25-01root

2022-10-25-02ktest

root는 로그인 불가, ktest는 로그인 성공


root 관련 설정 파일 확인

[root@localhost ~]# tty
사용자가 접속한 터미널의 종류 
tty1	실제 터미널
pts/x	가상 터미널,x-window ,원격접속(telnet,ssh)

접근관련 파일 
[root@localhost 바탕화면]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11


관련 설정 파일 수정 후 다시 telnet 접속 테스트

-- 관련 파일 수정 
# vim /etc/securetty
~~
pts/0
pts/1
pts/2
pts/3
pts/4

telnet 접속 시도

2022-10-25-03root

root 로그인 성공




root 로컬 접속 제한

/etc/pam.d/login

/etc/pam.d/login 두번째 행 주석처리 
1 #%PAM-1.0
2 #auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
~~


결과 확인
centos 6]
# init 3 > root , ktest 로 로그인 > 잘됨 


Mobaxterm]
/etc/pam.d/login 두번째 행 주석처리 해제
1 #%PAM-1.0
2 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

파일편집 
/etc/securetty 에서 tty1 , tty2 만 제외후 모두 주석처리
~
tty1
tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
#tty9
#tty10
#tty11

init 3 > 로그인후 tty 명령어 이용 몇개의 터미널 사용 가능한지 확인
터미널 이동 > ctrl + alt + F1 ~
tty1 tty2 를 제외하고는 더이상 터미널 접근 불가능 


auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
해당 옵션은 /etc/securetty 
 
이 옵션은 고급문법이 사용된 경우 입니다. 
단순히 required 플래그를 사용하였을 경우와 다른 점
: user_unknown 리턴 값 입니다. 즉 등록되지 않은 유저일 경우 무시되게 됩니다.
user_unknown: 유저가 인증모듈에 등록되지 않은 경우
success: 성공
ignore: 해당 리턴값은 무시
default: 정확한 리턴값들이 없을 경우
required 를 사용시 
[success=ok new_authtok_reqd=ok ignore=ignore default=bad] 와 결과 같음 
* new_authtok_reqd: 인증 토큰이 유효하지 않은 경우




소유자가 불분명한 파일/디렉터리 찾기

사용자 생성

[root@localhost 바탕화면]# useradd test02
[root@localhost 바탕화면]# passwd test02
test02 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 사전에 있는 단어를 기반으로 합니다  
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.


사용자 전환후 파일/디렉터리 생성 후 소유권 확인

[root@localhost 바탕화면]# su - test02
[test02@localhost ~]$ mkdir /var/tmp/test02_dir
[test02@localhost ~]$ touch /var/tmp/test02_file
ㅣㄴ -[test02@localhost ~]# find /var/tmp -name test02*
/var/tmp/test02_dir
/var/tmp/test02.txt

[test02@localhost ~]$ ls -al /var/tmp/test02_file 
-rw-rw-r-- 1 test02 test02 0 2022-10-26 01:32 /var/tmp/test02_file
[test02@localhost ~]$ ls -ld /var/tmp/test02_dir/
drwxrwxr-x 2 test02 test02 4096 2022-10-26 01:32 /var/tmp/test02_dir/


사용자 삭제

[test02@localhost ~]$ exit
logout
[root@localhost 바탕화면]# userdel -r test02


소유자 / 소유그룹이 없는 파일 찾기

[root@localhost 바탕화면]# find /var/tmp/ -nouser -print
/var/tmp/test02_dir
/var/tmp/test02.txt

[root@localhost 바탕화면]# find /var/tmp/ -nogroup -print
/var/tmp/test02_dir
/var/tmp/test02.txt


[root@localhost 바탕화면]# ls -al /var/tmp/test02_dir/
합계 8
drwxrwxr-x  2  502  502 4096 2022-10-26 01:32 .
drwxrwxrwt. 3 root root 4096 2022-10-26 01:32 ..
[root@localhost 바탕화면]# ls -al /var/tmp/test02_file 
-rw-rw-r-- 1 502 502 0 2022-10-26 01:32 /var/tmp/test02_file

복합 하여 사용 
#  find /var/tmp/ -nogroup -print -exec ls -l {} \;


조치 사항

[root@localhost 바탕화면]# chown test01:test01 /var/tmp/test02_file 
[root@localhost 바탕화면]# chown test01:test01 /var/tmp/test02_dir/ 
[root@localhost 바탕화면]# ls -al /var/tmp/test02_file 
-rw-rw-r-- 1 test01 test01 0 2022-10-26 01:32 /var/tmp/test02_file
[root@localhost 바탕화면]# ls -al /var/tmp/test02_dir
합계 8
drwxrwxr-x  2 test01 test01 4096 2022-10-26 01:32 .
drwxrwxrwt. 3 root   root   4096 2022-10-26 01:32 ..




DNS zonetransfer 확인

DNS 기본 설정

# yum -y install bind*

# vim /etc/named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion no;

        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        
        
# vim /etc/named.rfc1912.zones
~
zone "b12.kh" IN {
        type master;
        file "b12.kh.zone";
        allow-update { none; };
        allow-transfer { 172.16.0.111; };
};
~


영역 설정 체크

[root@localhost ~]# grep allow-transfer  /etc/named.rfc1912.zones 
	allow-transfer { 172.16.0.111; };




httpd(apache 관련)

환경 설정

yum -y install httpd                << 설치
service httpd restart               << 서비스 시작


프로세스 확인

root@localhost 바탕화면]# ps -ef | grep apache
apache     3577   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3578   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3579   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3580   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3581   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3582   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3583   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3584   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
root       3587   3090  0 02:06 pts/0    00:00:00 grep apache

[root@localhost 바탕화면]# ps -ef | grep httpd
root       3574      1  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3577   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3578   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3579   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3580   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3581   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3582   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3583   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
apache     3584   3574  0 02:06 ?        00:00:00 /usr/sbin/httpd
root       3589   3090  0 02:06 pts/0    00:00:00 grep httpd

[root@localhost ~]# ls -al /usr/sbin/httpd
-rwxr-xr-x 1 root root 367136 2018-06-20 00:45 /usr/sbin/httpd

# vim /etc/httpd/conf/httpd.conf
~
231 # If you wish httpd to run as a different user or group, you must run
232 # httpd as root initially and it will switch.  
233 #
234 # User/Group: The name (or #number) of the user/group to run httpd as.
235 #  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
236 #  . On HPUX you may not be able to use shared memory as nobody, and the
237 #    suggested workaround is to create a user www and use that user.
238 #  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
239 #  when the value of (unsigned)Group is above 60000; 
240 #  don't use Group #-1 on these systems!
241 #
242 User apache
243 Group apache
이 부분이 httpd를 실행할 때 apache로 실행 되도록 표기되어 있는 부분 입니다.


업데이트:

댓글남기기