CentOS 7.1을 최소 설치 후, SSH 포트를 변경하는 방법을 설명한다. CentOS 7.1에서 바뀐 명령도 있는 것 같고, 최소로 설치하면 설치가 안된 툴들이 있어서 그런지 우분투에서 쓰던 여러 명령들이 작동하지 않는다. 애초에 우분투와 다른 명령들도 많고…
IP 주소 고정
CentOS 설치 과정에서 네트워크 설정으로 들어가서 IP 주소를 고정으로 할당 받도록 하면 일이 많이 편해진다. 설치 과정에서 설정하지 않았으면, 아래 파일을 편집 후 네트워크를 재시작해야 한다.
1 2 |
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 sudo service network restart |
ifconfig 로 현재 IP 주소를 알아보려고 하면 command not found. 이럴때는 ifconfig 대신 ip 명령을 사용하면 된다.
1 |
ip addr |
ifconfig 커맨드를 쓰려면 net-tools 팩키지를 설치하면 된다.
1 |
sudo yum install net-tools |
SSH 포트 번호 변경
우분투와 다름없이 아래 명령으로 sshd_config 파일을 열어서 Port 부분의 주석을 해제하고 원하는 포트 번호를 써주고 파일을 저장한다.
1 |
sudo vi /etc/ssh/sshd_config |
1 |
#Port 22 |
로 되어 있는 걸
1 |
Port 1022 |
으로 고치고 저장한다.
그리고, SSH데몬 재기동
1 |
sudo service sshd restart |
테라텀으로 서버 IP 주소에 바꾼 포트 번호로 접속을 해 봐도 접속이 안될 것이다. SSH 포트가 제대로 바뀌어 있나 확인 해 보자.
1 |
ss -nalt |
열려 있는 포트 중에 위에서 바꾼 새로운 SSH 포트 번호인 1022가 나오지 않는다.
이유는 CentOS 에 있는 SELinux가 SSH 포트를 기본 SSH 포트인 22번으로 고정하고 있기 때문이다. SELinux 의 SSH 포트 정의에 1022 번을 추가하기 위해서는 semanage 명령이 필요하다. 하지만, semanage 명령을 쳐보면 command not found. semanage 툴을 설치하자.
1 |
sudo yum install policycoreutils-python |
먼저 SSH 포트 정의 내용을 확인한다.
1 2 |
$ sudo semanage port -l | grep ssh ssh_port_t TCP 22 |
ssh_port_t 라는 이름으로 TCP 22번이 쓰여져 있다.
아래 명령으로 ssh_port_t 정의에 TCP 포트 1022번을 추가한다. 시간이 좀 걸린다. 기다리자.
1 |
sudo semanage port -a -t ssh_port_t -p tcp 1022 |
다시 SSH데몬 재기동 후, 포트가 열려 있는지 다시 확인한다.
1 2 |
sudo service sshd restart ss -nalt |
이번에는 1022번이 열려 있는걸 확인 할 수 있다.
다시 테라텀으로 접속해 보면 여전히 접속이 안될 것이다. 이번엔 방화벽이 문제다.
방화벽 포트 열기
CentOS 에서는 방화벽이 돌아가고 있고, 기본 SSH 포트인 22번 포트는 열려 있지만, SSH 포트를 임의의 포트 번호로 변경을 했을 때는 당연히 그 포트 번호는 방화벽으로 막혀 있는 상태이다.
방화벽에 새로 지정한 SSH 포트 번호를 추가해야 한다.
CentOS 7 에서는 기본 방화벽인 iptables 대신 firewall 을 사용한다.
현재 방화벽 상태는 아래 명령으로 확인한다.
1 |
firewall-cmd --list-all |
명령 실행 결과
1 2 3 4 5 6 7 8 9 |
public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: |
services 에 ssh 는 포트 22번이기 때문에, ports 에 TCP 1022번 포트를 추가해 줘야한다.
아래 명령을 실행해서 1022번 포트를 추가해 주고, 방화벽을 리로드 한다. 그리고, 확인.
1 2 3 |
sudo firewall-cmd --permanent --zone=public --add-port=1022/tcp sudo firewall-cmd --reload firewall-cmd --list-all |
ports 에 1022/tcp 라고 되어 있으면 포트 번호가 제대로 추가된 것이다.
이제 테라텀으로 접속하면 잘 접속 될 것이다.