CentOS 7 で公開鍵認証で ssh を使う設定を行ったのですが、一応破られる心配はないとはいえ、ログを見るといろいろなアドレスから接続が試みられています。そこで、安心のため、ポート番号も変えてしまいました。以下では、2222としていますが、実際は内緒!
SELinux
SELinux の確認をすると、
# getenforce
Enforcing
#
有効になっていますので、
# semanage port -a -t ssh_port_t -p tcp 2222
bash: semanage: コマンドが見つかりません
#
最小インストールにしたので、semanage が入っていません。
# yum -y install policycoreutils-python
:
# semanage port -a -t ssh_port_t -p tcp 2222
# semanage port -l | grep ssh
ssh_port_t tcp 2222, 22
#
これでポートを登録できました。
sshd のポート変更
まずは、22 に加え、2222 を登録し、sshd を再起動。
# vi /etc/ssh/sshd_config
:
Port 22
Port 2222
:
# systemctl restart sshd.service
# systemctl status sshd.service
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since 火 2015-03-31 21:54:43 JST; 8s ago
Process: 6634 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCESS)
Main PID: 6636 (sshd)
CGroup: /system.slice/sshd.service
└─6636 /usr/sbin/sshd -D
:
# ss -l -n | grep 'LISTEN.*22'
tcp LISTEN 0 128 *:2222 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 :::2222 :::*
tcp LISTEN 0 128 :::22 :::*
#
ファイヤウォールの設定
# firewall-cmd --permanent --add-port 2222/tcp
success
# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 2222/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
#
新しいポートでの確認
間違えていると再接続できなくなるので、設定したセッションは残したまま、新しいポートで接続できることを確認。
$ ssh user@host.domain -p 2222
Last login: ... from ...
$ exit
ログアウト
Connection to host.domain closed.
$
標準ポート 22 を外す
まずは、22 登録から削除し、sshd を再起動。
# vi /etc/ssh/sshd_config
:
#Port 22
Port 2222
:
# systemctl restart sshd.service
# systemctl status sshd.service
:
# ss -l -n | grep 'LISTEN.*22'
tcp LISTEN 0 128 *:2222 *:*
tcp LISTEN 0 128 :::2222 :::*
#
標準ポートでの確認
標準ポートで接続できないことを確認。
$ ssh user@host.domain -p 22
ssh: connect to host host.domain port 22: Connection refused
$
確認バージョン
# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
# uname -srvo
Linux 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 GNU/Linux