未分類

さくらのVPS-Firewallの基本

今回はCentOSのFirewall機能について、確認する。
参考)ネコでもわかる!さくらのVPS講座 ~第七回「ファイアウォール”firewalld”について理解しよう」
https://knowledge.sakura.ad.jp/10583/

ファイアウォールの基本
ファイアウォールの基本:「使いたいサービスの通信プロトコルは許可して、使わないサービスはブロックする」
なので、まずは、使うサービス、使わないサービスを明確化する。
目標はRailsでのWEBアプリケーションの公開なので、以下とする。
使うサービス: SSH(指定のポート)、http(ポート80番)、https(ポート443番)
使わないサービス:上記以外

ファイアウォールの使い方
前提として、さくらのVPSは、はじめからFirewall機能が有効になっている。
設定自体は、第3回で終わっている。
参考)第三回「Apacheをインストールしよう」
https://knowledge.sakura.ad.jp/8541/

ファイアウォールの状態確認
running と出れば稼働している。
稼働していなければ、not running と出る。

# firewall-cmd --state
running

現在のファイアウォール設定を確認する

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

sshのポート****、http、httpsが許可されている。
dhcpv6-client は無視していいみたい。

firewalldの起動・終了・再起動
firewalldの起動

# systemctl start firewalld

何もかえってこなければOK

ファイアウォールの停止

# systemctl stop firewalld

何もかえってこなければOK

ファイアウォールの再起動

# systemctl restart firewalld

何もかえってこなければOK

firewalldに、許可するサービスを追加
pop3を追加

# firewall-cmd --permanent --zone=public --add-service=pop3
success

successと出れば成功

設定反映のため、リロード(再起動ではない)

# firewall-cmd --reload
success

successと出れば成功

設定を確認してみる

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https pop3
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

pop3が増えている

pop3のように名前で指定できるサービス一覧の表示

# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh ssh-10022 synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

サービスの詳細確認
pop3を確認する

# firewall-cmd --info-service=pop3
pop3
  ports: 110/tcp
  protocols:
  source-ports:
  modules:
  destination:

ftpを確認

# firewall-cmd --info-service=ftp
ftp
  ports: 21/tcp
  protocols:
  source-ports:
  modules: ftp
  destination:

先ほど追加したpop3を削除する

# firewall-cmd --zone=public --remove-service=pop3
success

successと出れば成功

設定反映のため、リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-10022 http https pop3
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

なぜかpop3が消えない。。。

もう一度削除、リロードしてみる。

# firewall-cmd --zone=public --remove-service=pop3
success
#
# firewall-cmd --reload
success
#
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https pop3
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ダメ。。。消えない。

ファイアウォールをリロードじゃなくて、再起動してみる

# systemctl restart firewalld

何もでないので成功

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https pop3
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

消えていない。

別サービスでも確認してみる。
適当にdhcpの追加

# firewall-cmd --permanent --zone=public --add-service=dhcp
success

リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https pop3 dhcp
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

DHCPが追加された。

dhcpの削除

# firewall-cmd --zone=public --remove-service=dhcp
success

成功

リロード

# firewall-cmd --reload
success

成功

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-10022 http https pop3 dhcp
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

dhcpも消えない。。。

--permanentオプションを付けての削除

# firewall-cmd --permanent --zone=public --remove-service=dhcp
success

リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https pop3
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

dhcpが消えたーー!
--permanentオプションを付けて追加したものは、 --permanentオプションを付けて削除しないといけない模様
公式サイトのなのに、やられたーー。
Firewallのバージョンで違ってしまったのかなあ。

pop3も削除しておく

# firewall-cmd --permanent --zone=public --remove-service=pop3
success

リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

pop3が無事消えました!

プロトコルとポート番号を指定して許可するサービスを追加
先ほどはpop3やdhcpもともと登録されているからコマンド指定できるのですが、
登録されていないサービスに対して許可する場合はポート番号、TCPorUDPを指定してあげないといけない。
TCPの10000ポートを追加してみる

# firewall-cmd --add-port=10000/tcp --zone=public --permanent
success

リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports: 10000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

services:  のところではなく、ports: のところに10000/tcpが追加されました。

確認できたのでTCPの10000ポートを削除

# firewall-cmd --remove-port=10000/tcp --zone=public --permanent
success

リロード

# firewall-cmd --reload
success

設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ports: の項目に何もなくなりました。

これで一通りファイアウォールの設定・動作を確認できました!

-未分類