ConohaVPS で、標準的に入る、CentOS 7.6
# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core)
ssh のポート変更とbind (named)のポート開放を行いたいと思います。
現状の firewallの状況
# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-XX-XX XX:XX:XX JST; XX day XXh ago
↑アクティブになっています。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
↑現状の解放ポート状況を見てみます。
servicesのところに「ssh」があります。
sshは、解放されています。
今回、sshのポートを「XXXXXX」(実際は数字)にしたいと思います。
sshポート、firewall設定
sshポートの22番は、よく知られたポートで、メンテナンスのため、オープンにしているところが多いかと思います。
オープンにするということは、脆弱性を突いたアタックがあるということです。
念のため、22番ポートを違うポートにするというのは、やってもいいことかと思います。
# firewall-cmd --add-port=XXXXXX/tcp --zone=public
↑とやりたいですが、これでは、解放されません。
firewallのポート設定などは、
/usr/lib/firewalld/services/
以下のファイルがキーになっています。
ここに、新しいポートでsshを解放するという定義を書かなければいけません。
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-XXXXXX.xml
↑と、ssh標準ポート用のファイルから、XXXXXXポート専用のファイルを作成します。
# vi /etc/firewalld/services/ssh-XXXXXX.xml <port protocol="tcp" port="22"/> ↓ <port protocol="tcp" port="XXXXXX"/>
↑ と、ポートを変更します。
# firewall-cmd --permanent --add-service=ssh-XXXXXX success
↑このファイルを読み込みます(サービスとして登録します)
# firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client ssh-XXXXXX ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
↑リロードして、一覧を見てみます。
ssh-XXXXXX
というのが加わりました。
ssh ポートの変更
# vi /etc/ssh/sshd_config
#Port 22
↓
Port XXXXXX
↑と、sshのポートを変更します。
↑突然、接続が切れることがあるかもしれません。
リスクを減らすためにも、コンソールモードのほうがいいでしょう。
# systemctl restart sshd
↑変更したsshポートのサービスを再起動します。
# firewall-cmd --permanent --remove-service=ssh
↑元々のsshポートに関して、firewallサービスから削除します。
# firewall-cmd --reload # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh-XXXXXX ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: リロードして、一覧を見てみます。
↑sshのサービスがなくなり、ssh-XXXXXXだけになりました。
conoha VPS
conoha VPSでは、管理画面から、「ポート」の解放を指定するところがあります。
この設定は、AWSのセキュリティグループのようなもので、VPS全体の設定となります。
OS上で、XXXXXXのポートを開けても、この画面で、「全部OK」としないと、
外部から接続ができません。
↑「ssh」のみから「全てを許可」にします。
bind (named) (DNS)のポートを開けます。
vi /usr/lib/firewalld/services/dns.xml
↑で中身を見てみます。53番のtcp/udpを解放しています。
これで、良さそうです。
# firewall-cmd --permanent --add-service=dns # firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh-XXXXXX dns ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
↑「dns」のサービスが加わりました。
違うサーバーから、nmapでチェックしてみます。
# nmap XXX.XXX.XXX.XXX Starting Nmap 5.51 ( http://nmap.org ) at 2019-XX-XX 22:04 JST PORT STATE SERVICE 53/tcp open domain
解放されています。