리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

리눅스에서는 서버에 접속실패 정보와 접속정보를 기록하고 있다. 해커의 공격이나 침입 흔적을 찾기 위해서 로그 파일을 점검해 보자.

접속 실패 로그 확인

ssh 접속 시도 실패 로그는 “/var/log/btmp” 파일에 특수하게 저장된다. 이 파일을 보기 위해서는 “last -f” 명령을 이용하여 확인할 수 있다.

root:~$last -f /var/log/btmp
root     ssh:notty    116.31.116.15    Tue Nov  1 06:26 - 06:26  (00:00)
root     ssh:notty    116.31.116.15    Tue Nov  1 06:26 - 06:26  (00:00)
root     ssh:notty    116.31.116.15    Tue Nov  1 06:26 - 06:26  (00:00)
root     ssh:notty    116.31.116.15    Tue Nov  1 06:26 - 06:26  (00:00)
root     ssh:notty    116.31.116.15    Tue Nov  1 06:26 - 06:26  (00:00)

접속정보 기록 확인

접속정보 기록은 로그인 했던 정보를 파일로 저장하며 “/var/log/wtmp” 파일에 저장된다.

root:~$last -f /var/log/wtmp
guest   pts/0        175.209.89.250   Tue Nov  1 14:41   still logged in
guest   pts/0        175.209.89.250   Tue Nov  1 11:51 - 11:51  (00:00)
guest   pts/0        175.209.89.250   Tue Nov  1 11:41 - 11:42  (00:00)
guest   pts/0        175.209.89.250   Tue Nov  1 11:29 - 11:40  (00:11)

last 명령어

서버용으로 사용되는 시스템의 관리자는 어떤 사용자가 언제 로그인했는지 확인할 필요가 있다. last, lastlog 라는 명령어로 확인할 수 있다. 먼저 last 명령어에 대해 알아보자.

last 명령어로 알 수 있는 정보

  • 접속계정명
  • 접속장치명
  • 접속한 IP주소
  • 접속시간
  • 시스템 재부팅 정보
root:~$last //최근 접속정보
root:~$last userid //사용자 접속 정보
root:~$last -t YYYYMMDDHHMMSS //지정일자 이전에 접속한 정보
root:~$last -n //원하는 행의 수만큼 출력
root:~$last -R //IP주소를 제외한 정보
root:~$last -a //IP주소를 열의 마지막에 출력
root:~$last -d //외부 접속 정보만을 출력

lastlog 명령어

각 사용자들이 언제 마지막으로 접속하였는가에 대한 각 사용자들의 최근 접속정보를 확인할 수 있다. 그리고 “/etc/passwd” 파일에 정의되어 있는 모든 사용자들의 마지막 접속정보를 확인하는 명령어이다. 또한 last는 “/var/log/wtmp” 파일의 내용을 출력해주지만 lastlog는 “/var/log/lastlog” 파일의 정보를 출력해준다.

root:~$lastlog -u userid //사용자의 마지막 접속 정보
root:~$lastlog -b N //N일 이전에 접속한 정보
root:~$lastlog -t D //D일 부터 현재까지 접속한 정보

롯사 by IT feedback

안녕하세요 롯사입니다.

이번 포스팅은 리눅스 서버에 원격 접속할 때 사용하는 명령어에 대해서 알아보겠습니다.

기본적으로 네트워크 통신에 제약이 없는 로컬 pc에서 접속 툴을 이용해서도 접속이

가능하고 리눅스 터미널 환경에서 다른 리눅스 서버로도 접속이 가능합니다.

이 시간에 다룰 내용은 리눅스 터미널 환경에서 다른 리눅스 서버로 접속하는 부분에

대해서 먼저 다루어보겠습니다.

what is ssh?


보안적으로 취약했던 기존 rsh, rlogin, telnet 등을 대체하기 위해 설계되었고 ( Secure shell )의 

약자입니다. 기본 22번 port를 사용해서 네트워크로 연결돼 다른 리눅스 서버로 접속할 때 사용하는

프로토콜로써 기본 암호화 방식을 지원하고 중간에 암호를 해킹을 당해도 원본을 알 수 없고 강력한

인증 방식을 지원하기 때문에 보안적으로 우수한 프로토콜이라고 할 수 있겠습니다.

ssh 서버 실행 파일 : /etc/sbin/sshd

ssh 클라이언트 실행 파일 : /etc/bin/ssh

그럼 본론으로 들어가서 사용방법에 대해서 알아보겠습니다.

1. openssh-server 설치


* rpm -qa | grep sshd* ( ssh 설치 확인 )

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

전 이미 설치가 되어있습니다.

* yum install openssh-server ( ssh 설치 )

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

이미 설치가 되어있지만 편의를 위해서 진행했습니다.

* systemctl enable sshd ( 재부팅 후 자동등록 )

* systemctl start sshd ( 서비스 시작 )

* systemctl status sshd  ( 서비스 상태 확인 )

* ps -ef | grep sshd ( 프로세스 상태 확인 )

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in
리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

다음과 같이 서비스 시작과 상태를 확인합니다.

정상적으로 잘 동작하고 있네요.

2. /etc/ssh/sshd_config 설정 및 확인 ( ssh 접속 시 규칙을 정의합니다 )


* vi /etc/ssh/sshd_config

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

vi/vim /etc/ssh/sshd_config 파일을 편집기로 열어서 필요한 부분만 정책에 맞게 수정해줍니다.

#Port 22 : ssh 기본 접속 port는 22번입니다. 임의의 port 번호를 지정해서 사용하고 계신 환경이라면

             번호 지정 후에 주석을 해제합니다.

#ListenAddress 0.0.0.0 : 기본 default 값은 주석이 처리되어 있어서 정책이 동작하지 않지만 

                               주석을 해제하고 특정 ip를 지정하면 해당하는 ip에서만 접속이 허용됩니다.

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
                              :  ssh 접속을 할 때 필요한 암호화 키가 저장되는 위치로 기본으로 default

                                ECDSA_KEY 암호화 방식을 사용합니다.

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

#PermitRootLogin no : root 계정으로 원격 접속 시 허용 여부를 정의합니다.

                              허용하려면 주석을 해제하고 no --> yes로 바꿔 주시면 root로 접속이 허용됩니다.

                              보안상 리스크가 있기 때문에 권장드리지는 않습니다.

* systemctl restart sshd ( ssh 서비스 재시작 )

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

위의 설정 파일의 내용을 변경하였다면 ssh 서비스 재시작을 해줍니다.

3. 방화벽 설정


* firewall-cmd --zone=public --add-port=22/tcp --permanent ( centos 7 이상 )

  firewall-cmd --permanent --zone=public --add-port=22/tcp  ( 위와 동일 )

  firewall-cmd --reload

* iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT ( iptables )

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

centos 7 이상 환경에서 방화벽 (firewalld)와 iptables를 운영하고 계신다면 필수적으로 22번 port를

허용해줍니다.

4. ssh 접속 ( 원격지 접속 )


* ssh [사용자 계정]@[원격지 ip]

  ssh

  exit

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

다음과 같은 형식으로 192.168.159.129 원격지 서버에 접속을 할 수 있습니다.

해당 서버의 password를 입력하고 접속이 성공하게 되면 원격 호스트의 쉘을 사용하게 됩니다.

exit를 누르고 logout 하면 원래의 쉘로 돌아오게 됩니다.

*~. ssh/know_hosts (홈 디렉터리의. sss/known_hosts)

리눅스 ssh 정보 확인 - linugseu ssh jeongbo hwag-in

위와 같이 한번 원격 접속이 이루어지고 나면 사용자 홈 디렉터리의. ssh/know_hosts 파일에 

원격지(192.168.159.129) 접속에 필요한 키 값이 생성되게 됩니다.

특정 옵션을 제외하고 많이 사용하지는 않지만 ssh 접속 시 사용하는 옵션도 한번 체크해 보시고 

넘어가시기 바랍니다.

옵션 내요
-a 인증 에이전트 전송을 불허
-e 세션에 대한 이스케이프 문자를 설정
-f 인증과 전송이 설정된 후에 백그라운드에서 ssh를 설정
-l 원격 시스템에 사용할 로그인 이름을 설정
-p 원격 호스트에 연결할 포트를 지정
-v 디버깅모드 자세한 정보 표시 모드를 활성
-x X11 전송을 불가능하게 설정
-L 지정된 원격 호스트와 포트에 전송할 로컬 포트 설정
-R 로컬 호스트와 지정된 포트로 전송될 원격 포트 설정

ex ) ssh [원격 계정]@[원격지_ip] -p [변경할 포트]    ( 포트 변경 시 지정해서 접속 )

      ssh [원격 계정]@[원격지_ip] netstat -ntl          ( 원격 접속 후 바로 수행할 명령문 입력도 가능합니다.)


이만 포스팅을 마치겠습니다.

모두 열공하세요 ^^