본문 바로가기
구 블로그 보관처

CentOS 설치 2 - Minimal 기본 설치 후 해야 할 일들 (2/2)

by 만수킴 2020. 8. 1.

* ​Minimal 기본 설치 후 해야 할 일들 정리 (2/2)

 

 

 



  • 보안 관련 설정 중단 (https://www.3rabbitz.com/f01c33e7d8367da2#a703fc6e18f2acf4)
    • 설치 과정에서 보안 셋팅이 문제가 되는 경우가 많다. 이에 잠시 중단하고 셋팅이 완료된 후 재셋팅하는것이 편하다.
      (물론 전문가라면, 하나씩 하면서 설정을 할수도 있겠지만... 내 입장에서는 그렇다는 것이다...)

    • SELinux 중단
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      [root@centos ~]# sestatus                           <== 현재 상태 확인
      SELinux status:                    enabled
      SELinuxfs mount:                /selinux
      Current mode:                    enforcing
      Mode from config file:       enforcing
      Policy version:                     24
      Policy from config file:        targeted
       
       
      [root@centos ~]# vi /etc/sysconfig/selinux         <== 설정 변경
       
      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      #     enforcing - SELinux security policy is enforced.
      #     permissive - SELinux prints warnings instead of enforcing.
      #     disabled - No SELinux policy is loaded.
      #SELINUX=enforcing                  # <== 주석 처리
      SELINUX=disabled                      # <== disabled로 적용
      # SELINUXTYPE= can take one of these two values:
      #     targeted - Targeted processes are protected,
      #     mls - Multi Level Security protection.
      SELINUXTYPE=targeted 
       
       
      [root@centos ~]# reboot                        <== 재부팅
       
      Broadcast message from root@centos.tanker
              (/dev/pts/0) at 13:23 ...
       
      The system is going down for reboot NOW!
       
       
      [root@centos ~]# sestatus                   <== 재부팅 후 중단 확인
      SELinux status:                 disabled


    • iptables(방화벽) 중단
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      [root@centos ~]# chkconfig iptables off
       
      [root@centos ~]# chkconfig ip6tables off
       
      [root@centos ~]# iptables -L
      Chain INPUT (policy ACCEPT)
      target     prot opt source               destination         
      ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
      ACCEPT     icmp --  anywhere             anywhere            
      ACCEPT     all  --  anywhere             anywhere            
      ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
      REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
       
      Chain FORWARD (policy ACCEPT)
      target     prot opt source               destination         
      REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
       
      Chain OUTPUT (policy ACCEPT)
      target     prot opt source               destination   


  • SSH 보안 설정 (https://www.3rabbitz.com/f01c33e7d8367da2#0e83f1c90aaa80e0)
    • SSH의 기본 포트 변경
    • SSH  서버 설정에서 원격(Reomote)에서 root계정으로 바로 접속하지 못하게 설정한다.
    • 인증없이 서버에 접속할 수 있도록 하는 설정을 무시하게 바꾼다. (예전 해킹 방식?)
    • 향후 서버에 접근하기 위해선 일반 계정으로 접속하여 "su -" 명령어를 통해 root로 전환하는 식으로 사용할 것.
    • sshd_config 수정 후 서비스 재시작
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      ===> 편집기로 /etc/ssh/sshd_config 를 열어서 다음과 각 항목들을 변경한다.
      [root@gserver1 ~]# cat /etc/ssh/sshd_config 
      ... 중략 ...
      Port 220                        <-- 22에서 원하는 포트로 변경
      ... 중략 ...
      IgnoreRhosts yes           <-- 주석처리 되어 있는 것을 주석 해제
      ... 중략 ...
      PermitRootLogin no     <-- 주석으로 yes로 되어 있는 것을 주석 해제 후 no로 바꿈
      ... 중략 ...
      AllowUsers tank            <-- 접속이 가능한 유저를 입력함. 라인 추가해야 함.  --> 입력하지 않아도 됨.
      ... 생략 ...
       
       
      ===> 설정을 변경하였으면 sshd를 재시작하여 시스템에 적용한다.
      [root@gserver1 ~]# service sshd restart        <-- 가능한 이것으로 하라. 아래것으로 하면 접속 불가.
      Stopping sshd:                                             [  OK  ]
      Starting sshd:                                             [  OK  ]
       
      또는
       
      [root@gserver1 ~]# /etc/init.d/sshd restart
      Stopping sshd:                                             [  OK  ]
      Starting sshd:                                             [  OK  ]

       

       

    • root가 아닌 SSH에 접속할 유저를 새로 생성함
      (https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=217)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      [root@centos ~]# useradd -c 김탱크 -e 2099-12-31 -d /home/tank -u 601 -s /bin/ksh -p 12345 tank 
               . -c 김탱크              : 계정사용자의 간단한 설명
               . -e 2099-12-31    : 계정사용 종료일자
               . -d /home/tank    : 홈디렉토리 위치
               . -u 601                  : UID 601로 지정
               . -s /bin/ksh           : 사용할 기본쉘을 Korn Shell로 지정
               . -p 12345             : 패스워드를 12345로 지정
               . tank                     : 생성할 계정명
       
      [root@centos ~]# grep tank /etc/passwd
      tank:x:601:601:김탱크:/home/tank:/bin/ksh
       
      [root@centos ~]# grep tank /etc/shadow
      tank:xodzmWkd:16168:0:99999:7::47481:
       
      [root@centos ~]# grep tank /etc/group
      tank:x:601: 

  • sFTP 설정 확인 (참조 URL)
    • /etc/ssh/sshd_config 파일에서 아래 라인이 주석 처리가 안되어 있어야 함.
      1
      2
      3
      4
      [root@centos ~]# vi /etc/ssh/sshd_config
       
      # override default of no subsystems
      Subsystem       sftp    /usr/libexec/openssh/sftp-server

  • DenyHosts 설치 (https://www.3rabbitz.com/f01c33e7d8367da2#9d58ea185e6a4623)
    • 서버에 존재하는 외부 서비스에 대해 무수한 해킹 및 스캔 시도가 행해진다. 이를 감시하고 차단하는 설정을 한다.

    • 현재 실행중인 외부 서비스를 확인
      1
      2
      3
      4
      5
      [root@centos ~]# netstat -antlp | grep LISTEN
      tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1100/master         
      tcp        0      0 0.0.0.0:9022                0.0.0.0:*                   LISTEN      1023/sshd           
      tcp        0      0 ::1:25                      :::*                                 LISTEN      1100/master         
      tcp        0      0 :::9022                     :::*                                LISTEN      1023/sshd 


    • DenyHosts 설치 (https://www.3rabbitz.com/f01c33e7d8367da2#9d58ea185e6a4623)
      1
      2
      3
      4
      5
      패키지 저장소를 추가하면 찾을 수 있다. 그냥 하면 찾을 수 없음.
      yum --enablerepo=epel,rpmforge,remi list denyhosts
       
      아래 명령 형식으로 설치 가능함
      yum --enablerepo=epel,rpmforge,remi install denyhosts

       

       



    • DenyHosts의 기본 환경 설정 내용(최초 설치시 아래와 같이 셋팅되어 있다)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      [root@centos ~]# cat /etc/denyhosts.conf | egrep -v "^#|^$"
             ############ THESE SETTINGS ARE REQUIRED ############
      SECURE_LOG = /var/log/secure
      HOSTS_DENY = /etc/hosts.deny
      PURGE_DENY = 4w
      BLOCK_SERVICE  = sshd
      DENY_THRESHOLD_INVALID = 5
      DENY_THRESHOLD_VALID = 10
      DENY_THRESHOLD_ROOT = 1
      DENY_THRESHOLD_RESTRICTED = 1
      WORK_DIR = /var/lib/denyhosts
      SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
      HOSTNAME_LOOKUP=YES
      LOCK_FILE = /var/lock/subsys/denyhosts
             ############ THESE SETTINGS ARE OPTIONAL ############
      ADMIN_EMAIL = root
      SMTP_HOST = localhost
      SMTP_PORT = 25
      SMTP_FROM = DenyHosts <nobody@localhost>
      SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
      AGE_RESET_VALID=5d
      AGE_RESET_ROOT=25d
      AGE_RESET_RESTRICTED=25d
      AGE_RESET_INVALID=10d
         ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
      DAEMON_LOG = /var/log/denyhosts
       
      DAEMON_SLEEP = 30s
      DAEMON_PURGE = 1h
         #########   THESE SETTINGS ARE SPECIFIC TO     ##########
         #########       DAEMON SYNCHRONIZATION         ##########


       

    • 허용 프로세스와 IP를 등록하는 방법
      /etc/hosts.allow 파일이 /etc/hosts.deny 보다 우선한다. 즉, /etc/hosts.deny에 IP가 등록되어 있어도 /etc/hosts.allow에 IP가 있다면, 차단하지 않는다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      [root@centos ~]# vi /etc/hosts.allow
       
      #
      # hosts.allow   This file contains access rules which are used to
      #               allow or deny connections to network services that
      #               either use the tcp_wrappers library or that have been
      #               started through a tcp_wrappers-enabled xinetd.
      #
      #               See 'man 5 hosts_options' and 'man 5 hosts_access'
      #               for information on rule syntax.
      #               See 'man tcpd' for information on tcp_wrappers
      #
      sshd: 192.168.219.38     <-- 특정 IP를 허용한다.
      ~
      ~


       

    • 감시 및 차단하는 설정 작업
      조금 더 공부가 필요. 시간이 너무 없다. 나중에 정리하자.
       

    • 로그 확인 하는 방법

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      [root@centos ~]# cd /var/lib/denyhosts
       
      [root@centos denyhosts]# ll
      합계 4
      total 36
      -rw-r--r--. 1 root root  39 Dec 22 17:51 allowed-hosts
      -rw-r--r--. 1 root root  27 Dec 22 17:19 allowed-warned-hosts
      -rw-r--r--. 1 root root  81 Dec 22 17:56 hosts
      -rw-r--r--. 1 root root  81 Dec 22 17:56 hosts-restricted
      -rw-r--r--. 1 root root  81 Dec 22 17:56 hosts-root
      -rw-r--r--. 1 root root  81 Dec 22 17:56 hosts-valid
      -rw-r--r--. 1 root root  80 Dec 22 17:56 offset
      -rw-r--r--. 1 root root   0 Dec 22 17:56 suspicious-logins
      -rw-r--r--. 1 root root 190 Dec 22 17:56 users-hosts
      -rw-r--r--. 1 root root   0 Dec 22 17:56 users-invalid
      -rw-r--r--. 1 root root  64 Dec 22 17:56 users-valid
       
      [root@centos denyhosts]# grep 192.168.1.55 *
      allowed-warned-hosts:192.168.1.55
      hosts:192.168.1.55:0:Tue Apr 8 12:12:40 2014
      hosts-restricted:192.168.1.55:0:Tue Apr 8 12:12:40 2014
      hosts-root:192.168.1.55:2:Tue Apr 8 12:12:40 2014
      hosts-valid:192.168.1.5:1:Tue Apr 8 12:23:13 2014
      users-hosts:jjun - 192.168.1.55:1:Tue Apr 8 12:32:12 2014
      users-hosts:root - 192.168.1.55:2:Tue Apr 8 12:12:45 2014
       
      [root@centos denyhosts]# tail -f /var/log/secure
      Apr  8 14:40:14 centos su: pam_unix(su-l:session): session opened for user root by tank(uid=601)
      Apr  8 14:40:21 centos sshd[1145]: pam_unix(sshd:session): session closed for user tank
      Apr  8 14:40:21 centos su: pam_unix(su-l:session): session closed for user root
      Apr  8 14:40:21 centos su: pam_unix(su-l:session): session closed for user tank
      Apr  8 14:40:21 centos su: pam_unix(su-l:session): session closed for user root
      Apr  8 14:40:21 centos su: pam_unix(su:session): session closed for user root
      Apr  8 14:40:21 centos su: pam_unix(su-l:session): session closed for user root
      Apr  8 14:50:24 centos sshd[1470]: Accepted password for tank from 192.168.1.55 port 3540 ssh2
      Apr  8 14:50:24 centos sshd[1470]: pam_unix(sshd:session): session opened for user tank by (uid=0)
      Apr  8 14:50:36 centos sshd[1470]: pam_unix(sshd:session): session closed for user tank
       

       


 

댓글