CentOS7 firewall 設定 / ConoHa VPS

この記事は約6分で読めます。

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

解放されています。

タイトルとURLをコピーしました