Linux のファイアウォールについての備忘録です。
Linux のファイアウォール(firewalld)設定について簡潔にまとめ。
Contents
ファイアウォールについて
Linux のファイアウォールは、「firewalld」になります。
firewall-cmd コマンドで操作します。
「ゾーン」という単位で規則が複数定義されていて、いずれかのゾーンをアクティブ・ゾーンに指定することで、
サーバーへのアクセスを制限します。
※起動時にアクティブになっているゾーンは「デフォルトのゾーン」として指定されているゾーンになります。
インストール時は「block、dmz、drop、external、home、internal、public、trusted、work」のゾーンが定義されています。
それぞれのゾーン毎にポートやサービスの通過規則が設定ができます。
※イメージ図
アクティブ・ゾーンを切り替えることで、アクセス制御の内容を変更することができます。
ゾーンは既存のものを使用することもできますし、新規でゾーンを作成することもできます。
ゾーンとかサービスとかいろいろありますが、とりあえず「ポートの追加(許可)」 の操作を覚えれば困らないと思います。
ファイアウォール・コマンドの使用
ファイアウォールのサービス名は「firewalld」です。
ファイアウォールを操作する為に「firewall-cmd」コマンドが用意されています。
firewall-cmd <オプション>でファイアウォールの各種設定の変更や、操作をします。
※設定変更後はファイアウォールの再起動が必要になります。
ファイアウォールの再起動
設定を変更した時に使用します。
–reload で再起動します。
firewall-cmd --reload
systemd を使っても再起動できます。
systemctl restart firewalld
デフォルトゾーンの確認と変更。
–get-default-zone で現在のデフォルト設定を確認できます。
firewall-cmd --get-default-zone
uniuni@zapsrv01:~ $ firewall-cmd --get-default-zone
public
uniuni@zapsrv01:~ $
–set-default-zone=*** で、デフォルトのゾーンを変更できます。
firewall-cmd --set-default-zone=test
root@zapsrv01:/home/uniuni# firewall-cmd --set-default-zone=test
success
root@zapsrv01:/home/uniuni#
現在の設定を確認。
–list-all で現在の設定が表示されます。
firewall-cmd --list-all
uniuni@zapsrv01:~ $ firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
uniuni@zapsrv01:~ $
サービスを追加
–add-service=<サービス名>
ファイヤーウォールを通過するサービスを指定します。
firewall-cmd --add-service=ssh --permanent
root@zapsrv01:/home/uniuni# firewall-cmd --add-service=ssh --permanent
success
root@zapsrv01:/home/uniuni#
※追加できるサービスの一覧は「firewall-cmd –get-services」で確認できます。
uniuni@zapsrv01:~ $ firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit collectd condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger foreman foreman-proxy freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-apiserver ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nbd nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rquotad rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server vpnserver wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
uniuni@zapsrv01:~ $
ポートを追加。
–add-port=[-<portid>]/<protocol>
firewall-cmd --add-port=443/tcp --permanent
–permanent は設定を永続化する場合のオプションです。
root@zapsrv01:/home/uniuni# firewall-cmd --add-port=443/tcp --permanent
success
root@zapsrv01:/home/uniuni#
追加先は現在アクティブなゾーン。
root@zapsrv01:/home/uniuni# firewall-cmd --list-all
test
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports: 443/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
root@zapsrv01:/home/uniuni#
新規ゾーンを作成。
任意の名前のゾーンを作成できます。
–new-zone=<新しいゾーンの名前>
※–permanent は永続化のオプションです。指定しないとエラーになるコマンドもあります。
firewall-cmd --new-zone=test --permanent
root@zapsrv01:/home/uniuni# firewall-cmd --new-zone=test --permanent
success
root@zapsrv01:/home/uniuni#
作成したゾーンの内容確認。
root@zapsrv01:/home/uniuni# firewall-cmd --info-zone=test
test
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
root@zapsrv01:/home/uniuni#
新規サービスの追加
新しくサービスを追加(作成)する。
–new-service=<サービス名>
firewall-cmd --new-service=vpnserver --permanent
root@zapsrv01:/home/uniuni# firewall-cmd --new-service=vpnserver --permanent
success
root@zapsrv01:/home/uniuni#
何にも入っていないけど。
追加したサービスを確認。
root@zapsrv01:/home/uniuni# firewall-cmd --info-service=vpnserver
vpnserver
ports:
protocols:
source-ports:
modules:
destination:
includes:
helpers:
root@zapsrv01:/home/uniuni#
サービスの単位でポートの追加など設定ができます。
例:サービスにポートを追加する。
–service= –add-port=<portid>[-<portid>]/<protocol>
firewall-cmd --service=vpnserver --add-port=992/tcp --permanent
root@zapsrv01:/home/uniuni# firewall-cmd --service=vpnserver --add-port=992/tcp --permanent
success
以上です。
ピンバック: SoftEther をRaspberry Pi にインストールしてVPN Server 化する。 - .zapping