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
Port1022
으로 고치고 저장한다.
그리고, 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 TCP22
ssh_port_t 라는 이름으로 TCP 22번이 쓰여져 있다.
아래 명령으로 ssh_port_t 정의에 TCP 포트 1022번을 추가한다. 시간이 좀 걸린다. 기다리자.
1
sudo semanage port-a-tssh_port_t-ptcp1022
다시 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번 포트를 추가해 주고, 방화벽을 리로드 한다. 그리고, 확인.