상세 컨텐츠

본문 제목

- CentOS SSH 포트 변경 및 root 로그인 방지 -

System

by 귤똥 2017. 7. 24. 00:53

본문


CentOS에서 SSH로 접속하는데


Default값으로 설정하면 보안에 취약할 수 있다.


보안을 강화하기 위해서 여러 방법이 있지만


가장 쉽고 간단한 방법을 적용해보았다.




우선 CentOS를 실행 시킨다.


CentOS가 없는 경우 아래의 주소에 설명이 있으니 참조한다.


http://byd0105.tistory.com/16



CentOS에 접속을 했으면 아래의 명령어로


현재 나의 IP주소를 확인한다.



ifconfig



그러면 화면상에서 아래의 그림과 같이 IP주소가 보일 것이다.





나의 IP주소는 Bridged 모드로 IP를 정적으로 할당했는데


192.168.1.250으로 설정을 해서 그 값과 같은 IP주소를 확인할 수 있다.


만약 IP주소가 나오지 않거나 할 경우에는


아래의 주소를 통해서 IP주소를 설정하는 방법을 참조한다.



http://byd0105.tistory.com/18



IP주소를 정상적으로 확인했으면 이제 SSH로 연결이 되는지 확인을 한다.


나는 Putty를 통해서 SSH로 접속을 시도 했다.


만약 Putty가 없다면 웹사이트에서 Putty를 검색하면 바로 설치할 수 있으니 설치를한다.


Putty가 설치가 되었으면 실행을 한다.


실행을 하면 다음과 같은 화면이 보인다.





여기서 Host Name에 아까 확인한 CentOS의 IP를 적고


Port부분에는 SSH의 Port를 적어준다.


CentOS를 설치하면 기본적으로 OPEN SSH가 설치가 되어있다.


설치가 되어있는지 확인을 할려면 아래의 명령어를 입력한다.




rpm -qa | grep ssh 또는 ssh -V



설치가 되어있다면 rqm -qa | grep ssh에서 openssh라고 적힌 정보를 확인할 수 있고


ssh -V를 적어서 확인하면 현재 설치된 openssh의 버전 정보를 확인할 수 있다.


Host name에는 확인한 IP의 주소를 적으면 된다고 하는데


Port에는 왜 22번을 사용해야 하는지 설명을 하면


기본적으로 SSH는 well-known port로 22번을 사용한다.


그래서 설치된 open SSH의 설정에 들어가면 Default값으로 port가 22번으로 설정되어 있다.


나중에 Port번호를 변경할때 상세하게 설명을 적겠다.


그리고 Connection type에는 SSH로 연결하기 때문에 SSH로 체크를 한다.


모든 값을 정상적으로 작성했다면 OPEN버튼을 눌러서 SSH 접속을 시도한다.





처음 접속을 하면 key에 대한 내용이 나오면서 알림창이 하나 나타는데


예 버튼을 눌러서 넘어가면 된다.


Putty에서 값을 정상적으로 작성했다면


ID와 Password를 물어보는 화면이 나타날 것이다.


사용자계정이 있다면 사용자 계정이나 root 계정으로 접속하면 되고


사용자 계정을 아직 생성하지 않았으면 root 계정으로 접속을 한다.





정상적으로 SSH를 통해 접속이 되었다.


접속을 성공적으로 했으면  사용자 계정을 생성한다.


만약 사용자 계정을 생성했다면 따로 생성하지 않아도 된다.


사용자 계정을 생성하는 이유는 만약 타인의 SSH를 통해서 root로 접속을 할 경우


보안에 매우 큰 문제가 발생할 수 있기 때문이다.


그래서 SSH로 접속을 할때 root로 로그인이 되는걸 막아야 한다.


 root로 로그인을 막았는데 사용자 계정이 없으면 SSH로 접속을 할 수 없기 때문에


사용자 계정을 생성하는 것이다.


사용자 계정을 생성하는 방법은 매우 간단하다.


아래에 보이는 구문을 참조하여 사용자 계정을 생성한다.



useradd (사용할 ID명)



화면에 아무런 글씨가 보이지 않으면 정상적으로 생성이 된 것이다.


이제 생성한 ID에 비밀번호를 부여하여야 하는데


아래에 보이는 구문을 참조하여 사용자 계정의 비밀번호를 생성한다.



passwd (생성한 ID명)  [엔터]  (사용할 비밀번호 입력)  [엔터]  (비밀번호 재입력)



이렇게 하면 정상적으로 사용자 계정을 생성하고 비밀번호 까지 부여할 수 있다.


아래의 사진을 보고 참조한다.





사용자 계정을 생성했으면 정상적으로 생성이 되었는지 확인을 한다.


확인을 하기 위해서 아래의 구문을 입력하여 확인한다.



su (생성한 ID)



su란 계정을 스위칭하기 위해서 사용되는 명령어로


위와 같이 입력하면 입력한 ID로 스위칭되는걸 확인할 수 있다.





위의 사진을 보면 root에서 byd0105로 계정이 바뀐걸 확인할 수 있다.


생성한 계정에 대한 정보를 좀 더 확인 하고싶으면 아래의 구문을 입력한다.



vi /etc/passwd



입력을 하면 vi에디터로 passwd 정보를 열어서 확인할 수 있는데


하단부분에 보면 자신이 생성한 ID를 확인할 수 있다.





간단하게 보면 나의 계정 ID는 byd0105이며


uid와 gid는 500이고 계정의 root 디렉토리는 /home/byd0105인걸 확인 할 수 있다.


이제 계정을 생성했고 다음으로 SSH 포트를 변경한다.


SSH포트를 변경하기 전에 현재 CentOS의 방화벽에 22번 포트가 허용되어 있는지 확인한다.


방화벽 정책에 관해서 정보를 확인할려면 아래의 구문을 입력한다.



iptables -nL



정상적으로 실행이 된다면 방화벽 정책에 관한 정보가 확인이 된다.





하지만 나는  Permission denied가 나온다.


옆에보면 root가 아니면 권한이 없다고 나온다.


현재 사용자 계정에서 root로 계정을 변환한다.


아까 root에서 사용자 계정으로 변환한거 처럼 변환을 하면된다.



su root



root로 계정을 변환하고 다시 iptables -nL을 입력해 본다.






정상적으로 CentOS의 방화벽 정책을 확인할 수 있다.


확인해보면 22port가 허용되어 있는걸 확인할 수 있다.


그래서 SSH로 접속할 수 가 있는것이다.



이제는 Default값으로 지정된 22번 port를 임의의 포트로 변경을 한다.


먼저 port정보가 정의된 설정파일을 열어야 한다.


수정할 설정파일은 2개가 있다.


우선 첫번째로 sshd_config 파일에 있는 port 정보를 수정해야 하는데


아래의 구문을 입력하여 파일을 연다.



vi /etc/ssh/sshd_config



파일을 열면 아래의 사진과 같이 보인다.





Default로 Port가 22번으로 되어있는걸 확인할 수 있다.


#Port 22라고 적힌곳에서 주석(#)을 삭제하고 22번 대신 사용하고자 하는 Port를 적는다.


단 사용하고 있는 Port는 적지 않도록 한다.


나는 22022로 Port번호를 지정했다.





수정을 했으면 :wq로 저장을 한다.


저장을 했으면 다음은 ssh_config 파일을 수정을 한다.


ssh_config파일을 열기위해서 아래의 구문을 입력한다.



vi /etc/ssh/ssh_config



파일이 정상적으로 열렸다면 다음과 같이 화면에 나타난다.





sshd_config에서 수정한것 처럼 ssh_config에서도 port를 22022로 수정한다.


수정을 했으면 저장을 한다.


정상적으로 sshd_config와 ssh_config를 수정했으면


수정값을 적용시키기 위해서 SSH를 재시작 해준다.


SSH를 재시작 하기 위해서 아래의 구문을 입력한다.



/etc/init.d/sshd restart



구문을 입력하면 아래의 사진과 같이 정상적으로 재시작이 된다.





정상적으로 재시작이 되었으면


CentOS 방화벽에서 내가 설정한 Port를 허용할수 있게 해야한다.


아까전에 iptables 를 통해서 방화벽 정책을 확인했는데


방화벽 정책을 수정하기 위해서는 아래의 구문을 입력한다.



vi /etc/sysconfig/iptables



파일이 정상적으로 열리면 아까 SSH Port 22번을 허용하는 정책이 있었는데


그 정책에 Port번호만 자신이 정한 포트로 수정을 한다.


나는 22022로 수정을 했으니 이 번호로 수정을 했다.





위의 사진을 보면 22022로 수정을 한것을 확인할 수 있다.


수정을 했으면 저장을 하고 iptables 정책이 업데이트 되도록 재시작을 해줘야한다.


재시작을 하기 위해서는 아래의 구문을 입력한다.



/etc/init.d/iptables restart



위의 구문을 입력하면 iptables가 정상적으로 재시작 되는걸 확인할 수 있다.





이제 정상적으로 SSH 포트번호가 변경되었는지 확인을 해보자.


Putty를 열어서 기존에 입력한 SSH 포트 22번을 적어서 OPEN을 한다.





아까전에는 정상적으로 연결되었는데 포트를 변경해서 연결이 되지 않는다.


Port 스캐닝을 하지않으면 Default로 사용하는 22번 Port가 아니기 때문에


SSH Port정보를 확인하기 힘들다.



이번에는 변경한 Port정보를 입력하여 접속을 시도해보자.





Port에 변경한 Port정보인 22022를 입력했다.





변경된 포트로 정상적으로 연결되는걸 확인할 수 있다.



이제는 SSH로 접속을 할때 root로 로그인이 되는걸 막아야한다.


root로 로그인을 못하게 하는방법은 간단하다.


sshd_config의 파일을 수정하면 되는데


수정을 하기위해서 다음과 같은 구문을 입력한다.



vi /etc/ssh/sshd_config



파일을 열고 설정값 중에서 아래의 설정값을 찾는다.



#permitRootLogin yes



Default로 설정된 값을 보면 root로 로그인이 허용이 되어있는걸 확인할 수 있다.


주석(#)을 해제하고 허용하는 yes를 no로 변경을 하고 저장을 한다.






42번 Line에 설정값이 있는걸 확인할 수 있다.




PermitRootLogin no로 설정값을 수정한다.



설정값을 정상적으로 수정하고 저장을 했으면


SSH를 재시작 해야한다.


재시작을 하기위해서 아래의 구문을 입력한다.



/etc/init.d/ssh/sshd restart



구문을 입력하면 정상적으로 재시작이 된다.





이제 모든 설정을 완료했다.


SSH로 root 로그인이 되는지 확인을 해보자.


Putty로 SSH접속을 시도하고 ID에 root를 적고 비밀번호를 입력한다.





Access denied가 나타난다.


정상적으로 적용이 된걸 확인할 수 있다.




그러면 아까 생성한 사용자 계정으로 접속을 시도해본다.





정상적으로 접속이 되는걸 확인할 수 있다.




이렇게 설정하여 SSH포트를 변경하고


SSH로 접속할때 root로 로그인을 하는걸 막았다.


이렇게 하면 조금이라도 보안성을 높일 수 있을것 이다.






관련글 더보기