리눅스 계정 접속불가 - linugseu gyejeong jeobsogbulga

최근들어서 CentOS 기반의 서버 하나를 작업하게 되었다.

임대형 서버인데, 그럭저럭...

일단, 서비스 업체에서 세팅해준 상태로, ssh 를 이용 로그인 성공.

공부한대로 내 계정을 추가 했다. ^^v

자, 이젠 내 계정으로 접속해서 작업을....

어 근데, 안되네.. -.-;;

>> 요녀석을 반대로 이용해 본다. <<

원본 링크 : http://cafe.naver.com/ssyangcal.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2262

openssh가 설치되어 있는 환경에서 일반 사용자의 SSH접속 막기

일반적으로 사용자들은 CUI기반의 인터페이스 사용을 기피한다.
따라서 이러한 불필요로 인해서 사용하지 않는 SSH접속을 막기위해서
openssh는 우수한 키워드를 제공하고 있다.

# man sshd

  참고키워드 : AllowGroups, AllowUsers, DenyGroups, DenyUsers

  ! 기본적으로 openssh는 모든 사용자의 ssh접속을 허용한다.

  키워드
      AllowGroups : 해당 그룹에 속한 사용자만 접속할 수 있다.
      AllowUsers   : 열거한 사용자만 접속할 수 있다.
      DenyGroups : 전체 사용자의 접속을 허용하고 명시된 그룹은 접속에서 제외된다.
      DenyUsers   : 전체 사용자의 접속을 허용하고 명시된 유저의 접속은 제외된다.
      해당 그룹, 유저는 space로 구분한다.

  적용
      /etc/ssh/sshd_config 파일에 키워드를 명시하고 그룹 또는 유저명을 기입한다.

     예) 시스템관리용으로 생성한 maintain, master 이라는 유저만 접속을 허용
             --->  /etc/ssh/sshd_config 파일에
                     AllowUsers      maintain master    (space bar로 구분)

     예) 모든 유저의 접속을 허락하고 windog 라는 유저의 접속을 막는다.
             --->  /etc/ssh/sshd_config 파일에
                     DenyUsers      windog

    이상을 적용하기 위해서는 sshd를 재실행해야 한다.

# /etc/init.d/sshd restart

>> <<

역시, 설정을 확인해보니, root 권한에 가까운 사람 하나에게만 허용이 되어있었다.

즉시 내 계정-.-을 추가. ssh 재시작. 오오 된다!

근데 이번엔 su - 가 안먹히네.. 루트가 필요하건만.. ToT

역시 인터넷의 힘을 빌려!...

>>  [Gentoo] SU 명령이 안될 때(permission denied)  리눅스 관련(일반) <<

원본링크 : http://blog.naver.com/keep2smile/80042291026

★ 원인

    1. /etc/group에 wheel 부분에 현재 su 명령어를 수행하려고 하는 계정이 등록되어있지 않아서 이런 현상이 나타난다.

★ 해결

    1. vi 편집기로 /etc/group을 연다.

            root::0:root
            bin::1:root,bin,daemon
            daemon::2:root,bin,daemon           
            sys::3:root,bin,adm 
                     ....

            wheel::10:root,gentoo

                     ....
            keep2smile:x:1000:

    2. 위 wheel 부분에 wheel::10:root,gentoo,”추가 할 사용자계정” 작성 하면 된다.

            root::0:root
            bin::1:root,bin,daemon
            daemon::2:root,bin,daemon
            sys::3:root,bin,adm
                     ....

            wheel::10:root,gentoo,keep2smile

                     ....
            keep2smile:x:1000:

    3. 다 수정 하였으면 저장하고 닫자.(:wq)

※ group 수정은 root 계정으로 수정하여야 한다. 혹시나 하는 노파심에서.;;;

 >> 라고 한다.. <<

아, 수정 이후 추가된 계정은 재로그인 해야 한다. 그러면 된다. ^^

이젠 계정별로 아파치를 사용할 수 있게 해줘야 한다.. =3=3=3

To be continued..

-코나-

오늘은 리눅스 서버 보안을 위해서 서버 접속 ip 허용 또는 특정 사용자 접속 허용하는 방법에 대해서 살펴봅니다. 서버 관리를 위해서 글로벌 각지에서 서버에 접속할 필요가 없다면 접속 ip 범위를 최소화하는 것이 필요합니다.

여러번 설명하지만 우분투를 비롯한 리눅스 서버 보안을 위해서 아래와 같은 사항들이 고려됩니다.

  1. ssh 접속 포트를 22번 포트가 아닌 다른 포트 사용
  2. ssh 접속 ip를 특정 ip대로 제한
    . 한국에서만 접속 가능토록 한국 ip로만 한정
    . 집과 이동중인 태블릿 접속 ip대로만 한정
  3. root 사용 중지 및 특정 사용자_ID만 사용
    보안을 위해 사용자_ID를 굉장히 길고 복잡하게 만들어 해커가 사용자_ID 파악을 어렵게 만듬
    그리고 root 사용 중지
  4. 사용자 비밀번호를 보안이 높도록 만들고, 가능하면 정기적 변경
  5. ssh key를 통한 접속으로 사용자_ID와 비밀번호를 통한 ssh 접속 방법이 한계 극복

서버 보안을 위해서 특정 ip를 허용한다면 어떤 ip를 허용해야할까요? 이를 확인하는 좋은 방법 중의 하나는 그동안 접속했던 ip를 확인해보는 것입니다.

그동안 접속했던 ip는 아래와 같은 명령어를 사용해 확인할 수 있습니다.

~# cat /var/log/auth* | grep Accepted | awk '{print $9"\t"$11"\t"$14}' | sort | uniq

Code language: PHP (php)

저의 경우 지난 2개월동안 접속했던 ip를 확인해보니 아래처럼 5개가 확인됩니다.

root 124.50.187.*** ssh2 root 211.36.134.*** ssh2 root 211.36.135.*** ssh2 root 211.36.142.*** ssh2 root 211.36.151.*** ssh2 root 211.36.158.*** ssh2

Code language: PHP (php)

이 ip들을 확인해보니 집과 태블릿에서 사용하던 ip들입니다. 맨 위 ip는 집에서 사용하는 공인 ip이고, 나머지 4개는 태블릿에서 사용하는 유동ip로 보입니다.

그래서 집의 공인 ip와 태블릿의 유동 ip대인 211.36.대를 적용하기로 했습니다.

ip 허용 및 금지 설정

ip 허용 및 금지하는 방법을 살펴보도록 하죠. ip를 허용하는 방법은 /etc/hosts.allow 파일을 수정합니다.

nano /etc/hosts.allow

Code language: PHP (php)

위에서 설명한대로 집의 공인 ip와 태블릿의 유통 ip 대역대를 적용하도록 하겠습니다.

ip 대역대 표시는 ip 4 자리 중 해당 부분만 표시할 수 있습니다. 우리가 흔히 아는 것처럼 *같은 것은 사용하지는 못합니다.

  • ip 세자리대까지 표현한다면 ‘124.50.187.’ 로 표시
  • ip 두자리대까지 표시한다면 ‘124.50.’로 표시
  • ip 한자리대까지 표시한다면 ‘124.’으로 표시

특정 ip만 적용하기 윌한 /etc/hosts.allow 파일은 아래와 같이 변경되었습니다.

# /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "rpcbind" for the # daemon name. See rpcbind(8) and rpc.mountd(8) for further information. # sshd: 124.50.187.177 sshd: 211.36.

Code language: PHP (php)

그리고 나머지 ip는 모두 사용 중지시킵니다. 이는 /etc/hosts.deny 파일을 수정합니다.

nano /etc/hosts.deny

Code language: PHP (php)

아래 내용으로 변경합니다.

# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you're going to protect the portmapper use the name "rpcbind" for the # daemon name. See rpcbind(8) and rpc.mountd(8) for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # # You may wish to enable this to ensure any programs that don't # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID sshd: ALL

Code language: PHP (php)

특정 사용자만 허용하는 방법

특정 사용만 ssh 접속을 허용하는 방법입니다. 이는 sshd_config 파일에서 특정 사용자를 허용하든지 금지시킬 수 있습니다.

nano /etc/ssh/sshd_config

Code language: PHP (php)

이 파일에서 아래처럼 AllowUsers 다음에 허용할 사용자를 추가합니다. 예를들면 daisy 사용자만 추가한다면 다음과 같은 명령을 사용합니다.

AllowUsers daisy

Code language: PHP (php)

이 파일에는 PermitRootLogin 명령어는 root 사용자 로그인을 허용할지 설정하는 명령인데요. 일부 글들을 보면 root 사용을 중지할 때 no 옵션을 준다고 설명하고 있는데요.

우분투에서 root 사용을 중지시킬 때 아래처럼 이를 no 옵션을 사용한다고 설명하는데 우분투 20.04에서는 작동하지 않더군요.

PermitRootLogin no

Code language: PHP (php)

우분투에서 root 사용 중지는 아래 글을 참고하시면 좋을 것 같습니다.