본문으로 바로가기

리눅스 SSH 보안 및 sudo 설정

category 리눅스/Linux 일반 2013. 6. 6. 01:00

이미 잘알려진 포트를 사용하는 SSH와 root 계정의 보안을 향상시키는 법을 설명합니다.

보안 향상 목표

  • SSH의 기폰 포트인 22번에서 다른 포트로 변경한다.
  • SSH 서버설정에서 원격(Remote)에서 root계정으로 바로 접속하지 못하게 설정한다.
  • 인증없이 서버에 접속하는 rhosts 를 사용할 수 없도록 설정한다.
  • SSH 접속을 허용할 사용자 그룹(Group)를 지정한다.

SSH 보안

아래의 설정 내용을 찾아 변경한다.

vi /etc/ssh/sshd_config

  # 포트 변경 (포트번호1023 까지는 예약된 포트이므로 그 이후 값을 사용)
  Port 2222  

  # rhosts 를 무시 
  IgnoreRhosts yes

  # SSH 접속시 root 로 로그인 금지
  PermitRootLogin no  

  # wheel 그룹만 ssh 에 로그인 가능
  AllowGroups wheel

포트 변경시 iptables(방화벽)를 사용하고 있다면 해당 포트를 사용할 수 있도록 설정한다.

접속제한 방법

  • AllowGroups : 여기에 등록된 group만 접속 가능함.
  • AllowUsers : 이곳에 등록된 계정만 접속 가능함.
  • DenyGroups : 모두 접속이 허용, 여기에 등록된 group만 접속 거부됨.
  • DenyUsers : 모두 접속이 허용, 여기에 등록된 계정만 접속 거부됨.

예1) test1 와 test2 만 ssh 접속을 허용(space bar로 구분)

AllowUsers      test1 test2    

예2) 모든 유저의 접속을 허락하고 help 라는 유저의 접속을 막는다.

DenyUsers      help

설정을 완료한 후에는 SSH를 재시작해준다.

/etc/init.d/sshd restart

위와 같이 설정하면 일반계정으로 접속후 su - 를 하여 root로 권한을 변경해야하는 번거로움이 생기는데, 이에 대한 편의성을 높여주는 sudo를 설정하여 특정 계정 사용자가 root권한을 편하게 사용할 수 있게 한다.

vi /etc/sudoers

  # Same thing without a password
  %wheel        ALL=(ALL)       NOPASSWD: ALL

위의 wheel 부분은 주석처리되어 있을텐데 그것만 삭제해줘도 된다

이후 관리자 계정으로 사용할 계정을 추가하면서, 그룹을 wheel로 지정한다(예로 tiffiny 계정 추가).

useradd -G wheel tiffiny

tiffiny 로 로그인후 확인

sudo id

  uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
cat /etc/group | grep wheel

  wheel:x:10:root,tiffiny