SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
オープンクラウド・キャンパス

Linux女子部 firewalld徹底入門!

Linux女子部
firewalld徹底入門!

ver1.3 中井悦司
Twitter @enakai00
Linux女子部 firewalld徹底入門!

自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Senior Solution Architect and

「Linux独習書の新定番」
書きました!

Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。

 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
読者の声より ――
「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく 
 なっているのは不幸なことだと思う。そんな中、この本はすごくいい」
「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。
 脳みそに染みこんで来ます」
2

Open Cloud Campus
Linux女子部 firewalld徹底入門!

Contents





firewalldの考え方
コマンドによる設定方法
iptablesによる実装内容
参考資料

(*) 本資料の説明はRHEL7Betaを前提としています。
3

Open Cloud Campus
Linux女子部 firewalld徹底入門!

Red Hat Enterprise Linux 7 Betaの入手について
 下記のWebサイトを参照ください。
– 既存のRHELサブスクリプションで利用いただけます。
– サブスクリプションをお持ちでない方は、評価版サブスクリプションをリクエストしてください。

https://access.redhat.com/site/products/Red_Hat_Enterprise_Linux/Get-Beta

4

Open Cloud Campus
Linux女子部 firewalld徹底入門!

firewalldの考え方
Linux女子部 firewalld徹底入門!

firewalldが作られた背景
 LibvirtやOpenStack(Nova Compute)など、アプリケーションからiptablesの設定を変更
する場合、それぞれのアプリケーションが勝手にルールを追加・削除すると、設定が矛盾
して、想定外の動作が起きる可能性があります。
 firewalldは、Linux上のファイアウォール機能を抽象化して、設定全体の整合性を保ちなが
ら動的な設定変更ができるようします。
– firewalldは、D-BUSのAPIを提供しているので、アプリケーションはD-BUS経由でファイアウォー
ルの設定変更が可能になります。例えば、RHEL7Betaに同梱のLibvirtは、D-BUS経由でfirewalld
を利用するように機能拡張が行われています。
https://fedoraproject.org/wiki/Features/firewalld

6

Open Cloud Campus
Linux女子部 firewalld徹底入門!

firewalldとは?
 firewalldは、Linux内部において、NICポートごとに仮想的なファイアウォールを設置する
機能を提供します。
– ファイアウォール機能の実装として、内部的にiptablesを使用しています。これまでiptablesの設
定は「iptablesサービス」が管理していましたが、firewalldの環境では「firewalldサービス」が
iptablesの設定を管理します。
– ただし、iptablesは内部的に使用しているだけであって、iptablesサービスの代替と言うよりは、
まったく新しいファイアウォール機能が用意されたと考えるほうがすっきりします。
• とはいえ、iptablesの概念を用いて設定する部分もあるので、iptablesの知識も必要です。
– iptablesサービスと併用することはできませんが、firewalldサービスを停止して、代わりに
iptablesサービスを使用することはできます。

eth0

eth1

eth2

eth3

NICポートごとに
ファイアウォールを設置

Linux

7

Open Cloud Campus
Linux女子部 firewalld徹底入門!

firewalldの設定の考え方
 事前にいくつかの「ゾーン」を定義して、ゾーンごとに受信パケットに対するフィルタリ
ングのルールを決定します。具体的には、ゾーンごとに以下の内容を指定します(*)。
– 接続を許可する「サービス」(明示的に許可したサービスのみに接続できます。)
• 「サービス」は、実質的にはTCP/UDPポート番号の事ですが、設定上は「ssh」「http」など
のサービス名で指定します。
• サービス名とTCP/UDPポート番号の対応は、別途、定義ファイルが用意されています。
• デフォルトで用意された定義ファイル以外に、ユーザが独自の定義ファイルを追加することも
できます。
• サービスの定義ファイルでは、オプションで、コネクショントラッキングのヘルパーモジュー
ルを指定できます。
– 受信を禁止するICMPタイプ(明示的に禁止しないICMPはデフォルトで許可されます。)
– IPマスカレードの有無、DNA(P)Tの設定
• IPマスカレード以外のSNA(P)Tは設定できないようです。
– その他、ポート番号を明示した設定や送信元アドレス/送信先アドレスでのフィルタリングも可能で
す。

 その後、それぞれのNICポートに対して適用するゾーンを指定します。
– 明示的に指定しないNICポートは、事前に指定した「デフォルトゾーン」が適用されます。
– NICポートの代わりに、送信元IPのサブネットで適用するゾーンを指定することもできます。
8

(*) 送信パケットに対するフィルタリングの設定は無いようです。

Open Cloud Campus
Linux女子部 firewalld徹底入門!

デフォルトで用意されているゾーン
 デフォルトで下表のゾーンが用意されています。
– 「drop」「block」「trusted」以外のゾーンは、フィルタリング設定を自由に変更できます(*)。
– どのようなネットワークに接続したNICポートに適用してほしいかが、ゾーン名から想像できます
が、実際の使い方はユーザの自由です。
– 独自ゾーンも追加できますが、ほとんどの場合、これだけあれば足りる気がします。
ゾーン
drop (設定変更不可)

あらゆるパケットを黙って破棄します。内部から外部にパケットは出せますが、返信
パケットが破棄されるので、実質的には通信できません。

block (設定変更不可)

あらゆるパケットを受信拒否して、ICMP Pohibitedメッセージを返します。内部から
開始した通信の返信パケットは通るので、内部から外部への通信はできます。

public

デフォルトでは「ssh」「dhcpv6-client」のみが許可されます。

external

デフォルトでは「ssh」のみが許可されます。IPマスカレードが有効になっています。

dmz

デフォルトでは「ssh」のみが許可されます。

work

デフォルトでは「ssh」「ipp-client」「dhcpv6-client」のみが許可されます。

home

デフォルトでは「ssh」「ipp-client」「mdns」「samba-client」「dhcpv6-client」
のみが許可されます。

internal

デフォルトでは「ssh」「ipp-client」「mdns」「samba-client」「dhcpv6-client」
のみが許可されます。

trusted(設定変更不可)

9

説明

あらゆるパケットが受信許可されます。

(*) drop/block/trustedのゾーンも実際には設定変更できてしまう場合がありますが、動作保証はありませんので、
 設定変更はしないでください。

Open Cloud Campus
Linux女子部 firewalld徹底入門!

ゾーンの定義ファイル
 デフォルトで用意されたゾーンの定義ファイルは下記にあります。
# ls /usr/lib/firewalld/zones/
block.xml drop.xml
home.xml
dmz.xml
external.xml internal.xml

public.xml
trusted.xml

work.xml

– ファイル名がゾーン名に対応します。下記は定義ファイルの例です。
# cat /usr/lib/firewalld/zones/external.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>External</short>
<description>For use on external networks. You do not trust the other computers
on networks to not harm your computer. Only selected incoming connections are
accepted.</description>
<service name="ssh"/>
<masquerade enabled="True"/>
</zone>

– 独自のゾーンを追加する場合は、「/etc/firewalld/zones」以下に同じ書式で定義ファイルを追加
します。同じゾーン名の設定を追加すると、「/etc/firewalld/zones」が優先されます。

 一般に、定義ファイルを追加・変更した際は、次のコマンドで反映します。
# firewall-cmd --reload
success

– 定義ファイルの他、firewalldの各種設定はすべて「/etc/firewalld」以下に保存されます。
10

Open Cloud Campus
Linux女子部 firewalld徹底入門!

コマンドによる設定方法
Linux女子部 firewalld徹底入門!

firewalldサービスの導入と有効化
 iptablesサービスとは併用できないので、iptablesサービスを使っている時は停止しておき
ます。
#
#
#
#
#
#

systemctl
systemctl
systemctl
systemctl
systemctl
systemctl

stop
stop
stop
mask
mask
mask

iptables.service
ip6tables.service
ebtables.service
iptables.service
ip6tables.service
ebtables.service

 firewalldパッケージを導入して、firewalld.serviceを有効化します。
# yum install firewalld
# systemctl enable firewalld.service
# systemctl start firewalld.service

 稼動状態は、次のいずれかのコマンドで確認します。
# systemctl status firewalld.service
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since 火 2014-01-07 21:59:12 EST; 9h ago
Main PID: 9770 (firewalld)
CGroup: /system.slice/firewalld.service
└─9770 /usr/bin/python /usr/sbin/firewalld --nofork --nopid
1月 07 21:59:12 localhost.localdomain systemd[1]: Started firewalld - dynam...
1月 08 03:17:00 localhost.localdomain firewalld[9770]: 2014-01-08 03:17:00 ...
Hint: Some lines were ellipsized, use -l to show in full.
# firewall-cmd --state
running

12

Open Cloud Campus
Linux女子部 firewalld徹底入門!

現在の設定の確認 (1)
 ゾーンごとの設定一覧です。
# firewall-cmd --list-all-zones
block
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
...(中略)...
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
trusted (active)
interfaces: eth1
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
..(以下省略)...

13

Open Cloud Campus
Linux女子部 firewalld徹底入門!

現在の設定の確認 (2)
 定義済みのサービスとICMPタイプの一覧です。
# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp highavailability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps
libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi
pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh
telnet tftp tftp-client transmission-client vnc-server wbem-https
# firewall-cmd --get-icmptypes
destination-unreachable echo-reply echo-request parameter-problem redirect routeradvertisement router-solicitation source-quench time-exceeded

– これらの定義ファイルは以下にあります。独自のサービスやICMPタイプを追加したい場合は、
「/etc/firewalld/(services|icmptypes)」以下に同じ書式で定義ファイルを追加します。
# ls /usr/lib/firewalld/services/
amanda-client.xml
ipp-client.xml
bacula-client.xml
ipp.xml
bacula.xml
ipsec.xml
dhcp.xml
kerberos.xml
dhcpv6-client.xml
kpasswd.xml
dhcpv6.xml
ldap.xml
dns.xml
ldaps.xml
ftp.xml
libvirt-tls.xml
high-availability.xml libvirt.xml
http.xml
mdns.xml
https.xml
mountd.xml
imaps.xml
ms-wbt.xml

14

mysql.xml
nfs.xml
ntp.xml
openvpn.xml
pmcd.xml
pmproxy.xml
pmwebapi.xml
pmwebapis.xml
pop3s.xml
postgresql.xml
proxy-dhcp.xml
radius.xml

# ls /usr/lib/firewalld/icmptypes/
destination-unreachable.xml parameter-problem.xml
echo-reply.xml
redirect.xml
echo-request.xml
router-advertisement.xml

rpc-bind.xml
samba-client.xml
samba.xml
smtp.xml
ssh.xml
telnet.xml
tftp-client.xml
tftp.xml
transmission-client.xml
vnc-server.xml
wbem-https.xml

router-solicitation.xml
source-quench.xml
time-exceeded.xml

Open Cloud Campus
Linux女子部 firewalld徹底入門!

現在の設定の確認 (3)
– これらの定義ファイルは、ファイル名がサービス名、ICMPタイプ名に対応します。次はサービスの
定義ファイルの例です。(ftpサービスは、コネクショントラッキングのヘルパーモジュールが指定
されています。)
# cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol
commands on remote machines. It provides secure
plan on accessing your machine remotely via SSH
enable this option. You need the openssh-server
to be useful.</description>
<port protocol="tcp" port="22"/>
</service>

for logging into and executing
encrypted communications. If you
over a firewalled interface,
package installed for this option

# cat /usr/lib/firewalld/services/ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to
make your FTP server publicly available, enable this option. You need the vsftpd
package installed for this option to be useful.</description>
<port protocol="tcp" port="21"/>
<module name="nf_conntrack_ftp"/>
</service>

15

Open Cloud Campus
Linux女子部 firewalld徹底入門!

現在の設定の確認 (4)
– 次はICMPタイプの定義ファイルの例です。
# cat /usr/lib/firewalld/icmptypes/echo-request.xml
<?xml version="1.0" encoding="utf-8"?>
<icmptype>
<short>Echo Request (ping)</short>
<description>This message is used to test if a host is reachable mostly with the
&lt;i&gt;ping&lt;/i&gt; utility.</description>
</icmptype>

• 定義の中にタイプ番号などが無くて驚きますが、実際にはICMPタイプ名(ファイル名)自体が
意味を持ちます。具体的は、iptablesのオプションに指定可能なICMPタイプ名に対応します。
利用可能なICMPタイプ名は、次のコマンドで確認できます。
# iptables -p icmp -h

16

Open Cloud Campus
Linux女子部 firewalld徹底入門!

NICポートに対するゾーンの適用
 明示的に指定しない場合は、自動で「デフォルトゾーン」が適用されます。
– この場合、デフォルトゾーンを変更すると、そのNICポートに適用されるゾーンも変更されます。
# firewall-cmd --get-default-zone
public

← デフォルトゾーンの確認

# firewall-cmd --set-default-zone=external
success

← デフォルトゾーンの変更

– 明示的に指定する場合は、次のようなコマンドを使用します。
• 設定上は「ゾーンにNICポートを追加する」という考え方をします。
# firewall-cmd
success
# firewall-cmd
success
# firewall-cmd
yes
# firewall-cmd
eth1
# firewall-cmd
success

--remove-interface=eth1

← eth1の適用ゾーンを除去

--add-interface=eth1 --zone=trusted

← eth1にtrustedゾーンを適用

--query-interface=eth1 --zone=trusted

← eth1の適用ゾーンがtrustedであるか確認

--list-interfaces --zone=trusted

← trustedゾーンが適用されるNICポートを表示

--change-interface=eth1 --zone=public

← eth1の適用ゾーンをpublicに変更

• これらは実行中の設定を変えるだけで、再起動すると設定は戻ります。起動時の設定を変更す
る際は、「--permanent」オプションを追加します。(実行時と起動時の両方を変える場合は
「--permanent」オプション有りと無しの両方でコマンドを実行する必要があります。)

17

Open Cloud Campus
Linux女子部 firewalld徹底入門!

送信元IPのサブネットに対するゾーンの適用
 送信元IPのサブネットによって、適用するゾーンを指定することもできます。
# firewall-cmd --add-source=192.168.122.0/24 --zone=external
success
# firewall-cmd --list-sources --zone=external
192.168.122.0/24
# firewall-cmd --get-zone-of-source=192.168.122.0/24
external
# firewall-cmd --query-source=192.168.122.0/24 --zone=external
yes
# firewall-cmd --change-source=192.168.122.0/24 --zone=trusted
success
# firewall-cmd --remove-source=192.168.122.0/24
success

← 「192.168.122.0/24」にexternalゾーンを適用
← externalゾーンが適用されるサブネットを表示
← 「192.168.122.0/24」に適用されるゾーンを表示
← 「192.168.122.0/24」にexternalゾーンが
適用されていることを確認
← 「192.168.122.0/24」に適用されるゾーンを
trustedに変更
← 「192.168.122.0/24」の適用ゾーンを除去

– 起動時の設定を変更する際は、「--permanent」オプションを追加します。
– 送信元IPで適用されるゾーンの評価のあとに、NICポートで適用されるゾーンの評価が行われます。
• ただし、実際には、最初のゾーン評価でACCEPT/REJECTが決まるので、後のゾーン評価は意味を持ちません。

18

Open Cloud Campus
Linux女子部 firewalld徹底入門!

ゾーンの設定変更 (1)
 ゾーンで許可するサービスの変更
– 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを
省略した場合は、デフォルトゾーンが対象になります。
# firewall-cmd --get-services
(結果省略)
# firewall-cmd --list-services --zone=public
dhcpv6-client ssh
# firewall-cmd --add-service=http --zone=public
success
# firewall-cmd --query-service=http --zone=public
yes
# firewall-cmd --remove-service=http --zone=public
success

← 定義されているサービスの一覧
← 許可されているサービスを表示
← 許可するサービスを追加
← 指定のサービスが許可されているか確認
← 許可するサービスを削除

 ゾーンで禁止するICMPタイプの変更
– 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを
省略した場合は、デフォルトゾーンが対象になります。
# firewall-cmd
(結果省略)
# firewall-cmd
# firewall-cmd
success
# firewall-cmd
yes
# firewall-cmd
success

19

--get-icmptypes

← 定義されているICMPタイプの一覧

--list-icmp-blocks --zone=public
--add-icmp-block=echo-request --zone=public

← 禁止されているICMPタイプを表示
← 禁止するICMPタイプを追加

--query-icmp-block=echo-request --zone=public

← 指定のICMPタイプが禁止されているか確認

--remove-icmp-block=echo-request --zone=public

← 禁止するICMPタイプを削除

Open Cloud Campus
Linux女子部 firewalld徹底入門!

ゾーンの設定変更 (2)
 ゾーンにおけるIPマスカレードの有無
– 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを
省略した場合は、デフォルトゾーンが対象になります。
← 現在の設定を確認

# firewall-cmd --query-masquerade --zone=public
no
# firewall-cmd --add-masquerade --zone=public
success
# firewall-cmd --remove-masquerade --zone=public
success

← IPマスカレードを有効化
← IPマスカレードを無効化

 ゾーンにおけるDNA(P)T(ポートフォワード)の設定
– 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを
省略した場合は、デフォルトゾーンが対象になります。
#
#
#
#

firewall-cmd
firewall-cmd
firewall-cmd
firewall-cmd

--list-forward-ports --zone=public
--add-forward-port=<変換ルール> --zone=public
--query-forward-port=<変換ルール> --zone=public
--remove-forward-port=<変換ルール> --zone=public

←
←
←
←

現在の設定を確認
変換ルールを追加
変換ルールの存在を確認
変換ルールを削除

– <変換ルール>の指定の例
• port=22:proto=tcp:toport=3753 

:22番ポート宛のパケットを3753ポート宛に変更

• port=22:proto=tcp:toaddr=192.168.122.10

:22番ポート宛のパケットを192.168.122.10に転送

※ 実際にオプションを書くと「--add-forward-port=port=22:proto=tcp:toport=3753」という変な書き方に 
 なりますが、これであっています。
※ 宛先アドレスを変換して他のサーバに転送する際は、カーネルパラメータ「net.ipv4.ip_forward = 1」の設定 
 も必要ですが、これは、firewalldが自動で設定してくれます。

20

Open Cloud Campus
Linux女子部 firewalld徹底入門!

ゾーンの設定変更 (3)
 その他に「Rich Language」を使用して、より詳細な条件でのフィルタリングを設定するこ
とができます。
– 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを
省略した場合は、デフォルトゾーンが対象になります。
#
#
#
#

firewall-cmd
firewall-cmd
firewall-cmd
firewall-cmd

--list-rich-rules --zone=public
--add-rich-rules=<設定ルール> --zone=public
--query-rich-rules=<設定ルール> --zone=public
--remove-rich-rules=<設定ルール> --zone=public

←
←
←
←

現在の設定を確認
変換ルールを追加
変換ルールの存在を確認
変換ルールを削除

– 次は設定例です。送信元が「192.168.122.0/24」でTCP443番ポート宛のパケットをロギングして
受信を許可します。
# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24" port port="443"
protocol="tcp" log prefix="https connection" level="info" limit value="1/m" accept' --zone=public

• Rich Languageの詳細は、manページ「firewalld.richlanguage(5)」を参照してください。

21

Open Cloud Campus
Linux女子部 firewalld徹底入門!

その他のコマンド
 起動時の設定を再読み込み
– 「--complete-reload」を使用すると、コネクショントラッキングのステート情報も初期化されま
す。
# firewall-cmd --reload
# firewall-cmd --complete-reload

 一定時間だけ設定を変更
– 実行時の設定を変更する際に「--timeout=<秒数>」を指定すると指定時間だけ設定が追加されま
す。

 パニックモード
– パニックモードに入るとすべてのネットワーク通信が遮断されます。
# firewall-cmd --panic-on
# firewall-cmd --panic-off

22

← パニックモードに入る
← パニックモードを止める

Open Cloud Campus
Linux女子部 firewalld徹底入門!

iptablesによる実装内容
Linux女子部 firewalld徹底入門!

iptablesの全体像
 iptablesでは、図の各チェーンに対してパケット処理の設定が行われます。
– firewalldは、ほぼすべてのチェーンを利用していますので、すべてのチェーンに対する設定を追っ
ていく必要があります。
– iptablesの設定内容をダンプ出力する際は、iptables-saveコマンドを使用すると便利です。

(出典)プロのための Linuxシステム・ネットワーク管理技術 
    http://www.amazon.co.jp/dp/4774146757

24

Open Cloud Campus
Linux女子部 firewalld徹底入門!

firewalldが使用するチェーン群 (1)
 firewalldは前ページの各チェーンについて、下図のようなサブチェーンを用意します。
– 図は、「PREROUTING」の例ですが、「FORWARD」「POSTROUTING」「INPUT」の各チェーンに
ついて同様のサブチェーンがあります。(OUTPUTチェーンは使っていないようです。)
送信元IPで指定された
ゾーンの適用(*)

PREROUTING

PREROUTING_ZONES_SOURCE

定義されているすべての
ゾーンについて繰り返し

PREROUTING_ZONES
PRE_<ゾーン名>
NICポートで指定された
ゾーンの適用(*)

PRE_<ゾーン名>_log
ロギング処理

次のチェーンへ

PRE_<ゾーン名>_deny

拒否の処理

PRE_<ゾーン名>_allow

許可の処理
(*) POSTROUTINGチェーンについては、送信先が指定のNICポート/サブネットの場合にサブチェーンの
 ルールが適用されます。

25

Open Cloud Campus
Linux女子部 firewalld徹底入門!

firewalldが使用するチェーン群 (2)
– FORWARDチェーンについては、INとOUTの2つのサブチェーンがあります。
FORWARD
FORWARD_IN_ZONES_SOURCE

受信元が指定のNICポート
/サブネットの場合の処理

FORWARD_IN_ZONES
FWI_<ゾーン名>
FWI_<ゾーン名>_log
FWI_<ゾーン名>_deny
FORWARD_OUT_ZONES_SOURCE

FWI_<ゾーン名>_allow

FORWARD_OUT_ZONES
FWO_<ゾーン名>
FWO_<ゾーン名>_log
次のチェーンへ

FWO_<ゾーン名>_deny
転送先が指定のNICポート
/サブネットの場合の処理

26

FWO_<ゾーン名>_allow
Open Cloud Campus
Linux女子部 firewalld徹底入門!

変更不可のゾーン設定例 (1)
 以下の内容は、iptables-saveコマンドでiptablesの設定内容を解析したものです。
– eth0に「drop」ゾーンを適用すると、mangleテーブルのPREROUTINGチェーンで、すべてのパ
ケットが有無をいわさずDROPされます。
*mangle
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A PREROUTING_ZONES -i eth0 -j PRE_drop
-A PRE_drop -j PRE_drop_log
-A PRE_drop -j PRE_drop_deny
-A PRE_drop -j PRE_drop_allow
-A PRE_drop -j DROP

– eth0に「block」ゾーンを適用すると、INPUTチェーンの下記の流れでパケットがREJECTされます。
その前のルールがあるので、返信パケットはACCEPTされます。FORWARDチェーンにも同様の処理
が入ります。
*filter
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT_ZONES -i eth0 -j IN_block
-A IN_block -j IN_block_log
-A IN_block -j IN_block_deny
-A IN_block -j IN_block_allow
-A IN_block -j REJECT --reject-with icmp-host-prohibited

27

Open Cloud Campus
Linux女子部 firewalld徹底入門!

変更不可のゾーン設定例 (2)
– eth0に「trusted」ゾーンを適用すると、すべてのテーブル/チェーンについて、ACCEPTが設定さ
れます。下記は、最初に通過するmangleテーブル/PREROUTINGチェーンの例です。
*mangle
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A PREROUTING_ZONES -i eth0 -j PRE_trusted
-A PRE_trusted -j PRE_trusted_log
-A PRE_trusted -j PRE_trusted_deny
-A PRE_trusted -j PRE_trusted_allow
-A PRE_trusted -j ACCEPT

• FORWARDチェーンについても同じ設定が入るので、他のネットワークへのパケット転送も許可
されます。

28

Open Cloud Campus
Linux女子部 firewalld徹底入門!

変更可能なゾーン設定例
– eth0にデフォルトゾーンである「public」ゾーンを適用すると、INPUTチェーンに下記の設定がな
されて、SSH接続が許可されます。
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A

INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
INPUT -i lo -j ACCEPT
INPUT -j INPUT_ZONES_SOURCE
INPUT -j INPUT_ZONES
INPUT -p icmp -j ACCEPT
INPUT -j REJECT --reject-with icmp-host-prohibited
INPUT_ZONES -i eth0 -j IN_public
INPUT_ZONES -j IN_public
← デフォルトゾーンなので明示的に指定されないNICからのパケットも拾っている。
IN_public -j IN_public_log
IN_public -j IN_public_deny
IN_public -j IN_public_allow
IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

• FORWARDチェーンはREJECTされ
るので、他のネットワークへのパ
ケット転送は許可されません。

29

-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A
-A

FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
FORWARD -i lo -j ACCEPT
FORWARD -j FORWARD_IN_ZONES_SOURCE
FORWARD -j FORWARD_IN_ZONES
FORWARD -j FORWARD_OUT_ZONES_SOURCE
FORWARD -j FORWARD_OUT_ZONES
FORWARD -p icmp -j ACCEPT
FORWARD -j REJECT --reject-with icmp-host-prohibited
FORWARD_IN_ZONES -i eth0 -j FWDI_public
FORWARD_IN_ZONES -j FWDI_public
FORWARD_OUT_ZONES -o eth0 -j FWDO_public
FORWARD_OUT_ZONES -j FWDO_public
FWDI_public -j FWDI_public_log
FWDI_public -j FWDI_public_deny
FWDI_public -j FWDI_public_allow
FWDO_public -j FWDO_public_log
FWDO_public -j FWDO_public_deny
FWDO_public -j FWDO_public_allow
Open Cloud Campus
Linux女子部 firewalld徹底入門!

参考資料
Linux女子部 firewalld徹底入門!

参考資料
 Red Hat Enterprise Linux 7.0 Beta Security Guide
– 3.5. Using Firewalls
– https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7Beta/html-single/Security_Guide/index.html#sec-Using_Firewalls

 Linux女子部 systemd徹底入門!
– http://www.slideshare.net/enakai/linux-27872553

 iptablesの徹底理解には、下記の書籍が最適です。

31

Open Cloud Campus
Linux女子部 firewalld徹底入門!

QA

32

Open Cloud Campus
オープンクラウド・キャンパス

Linux女子部 firewalld徹底入門!

RHEL7Betaで最新技術を
学びましょう!

中井悦司
Twitter @enakai00

Más contenido relacionado

La actualidad más candente

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPFShuji Yamada
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみたFujishiro Takuya
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!Hirotaka Sato
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術Etsuji Nakai
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編hdais
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 

La actualidad más candente (20)

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみた
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Raft
RaftRaft
Raft
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 

Similar a Linux女子部 firewalld徹底入門!

Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編Etsuji Nakai
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!Etsuji Nakai
 
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaTry andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaEtsuji Nakai
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlowToshiki Tsuboi
 
仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎Etsuji Nakai
 
OpenStack - SDNとオープンネットワーキングのすべて
OpenStack - SDNとオープンネットワーキングのすべてOpenStack - SDNとオープンネットワーキングのすべて
OpenStack - SDNとオープンネットワーキングのすべてmizumotoda
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料Etsuji Nakai
 
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)Panda Yamaki
 
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月VirtualTech Japan Inc.
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsAkihiro Motoki
 
Faster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDPFaster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDPRyoga Saito
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティKuniyasu Suzaki
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Nobuto Murata
 
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFSEtsuji Nakai
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワークEtsuji Nakai
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 

Similar a Linux女子部 firewalld徹底入門! (20)

Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
 
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaTry andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoya
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlow
 
研究を加速するChainerファミリー
研究を加速するChainerファミリー研究を加速するChainerファミリー
研究を加速するChainerファミリー
 
仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎
 
Osc2009 Do Xen Hara
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen Hara
 
OpenStack - SDNとオープンネットワーキングのすべて
OpenStack - SDNとオープンネットワーキングのすべてOpenStack - SDNとオープンネットワーキングのすべて
OpenStack - SDNとオープンネットワーキングのすべて
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
 
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)
Hokkaido.cap#8 ケーススタディ(セキュリティ解析:後編)
 
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
 
Faster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDPFaster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDP
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
 
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 

Más de Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 

Más de Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Último (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Linux女子部 firewalld徹底入門!

  • 2. Linux女子部 firewalld徹底入門! 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and 「Linux独習書の新定番」 書きました! Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」 2 Open Cloud Campus
  • 4. Linux女子部 firewalld徹底入門! Red Hat Enterprise Linux 7 Betaの入手について  下記のWebサイトを参照ください。 – 既存のRHELサブスクリプションで利用いただけます。 – サブスクリプションをお持ちでない方は、評価版サブスクリプションをリクエストしてください。 https://access.redhat.com/site/products/Red_Hat_Enterprise_Linux/Get-Beta 4 Open Cloud Campus
  • 6. Linux女子部 firewalld徹底入門! firewalldが作られた背景  LibvirtやOpenStack(Nova Compute)など、アプリケーションからiptablesの設定を変更 する場合、それぞれのアプリケーションが勝手にルールを追加・削除すると、設定が矛盾 して、想定外の動作が起きる可能性があります。  firewalldは、Linux上のファイアウォール機能を抽象化して、設定全体の整合性を保ちなが ら動的な設定変更ができるようします。 – firewalldは、D-BUSのAPIを提供しているので、アプリケーションはD-BUS経由でファイアウォー ルの設定変更が可能になります。例えば、RHEL7Betaに同梱のLibvirtは、D-BUS経由でfirewalld を利用するように機能拡張が行われています。 https://fedoraproject.org/wiki/Features/firewalld 6 Open Cloud Campus
  • 7. Linux女子部 firewalld徹底入門! firewalldとは?  firewalldは、Linux内部において、NICポートごとに仮想的なファイアウォールを設置する 機能を提供します。 – ファイアウォール機能の実装として、内部的にiptablesを使用しています。これまでiptablesの設 定は「iptablesサービス」が管理していましたが、firewalldの環境では「firewalldサービス」が iptablesの設定を管理します。 – ただし、iptablesは内部的に使用しているだけであって、iptablesサービスの代替と言うよりは、 まったく新しいファイアウォール機能が用意されたと考えるほうがすっきりします。 • とはいえ、iptablesの概念を用いて設定する部分もあるので、iptablesの知識も必要です。 – iptablesサービスと併用することはできませんが、firewalldサービスを停止して、代わりに iptablesサービスを使用することはできます。 eth0 eth1 eth2 eth3 NICポートごとに ファイアウォールを設置 Linux 7 Open Cloud Campus
  • 8. Linux女子部 firewalld徹底入門! firewalldの設定の考え方  事前にいくつかの「ゾーン」を定義して、ゾーンごとに受信パケットに対するフィルタリ ングのルールを決定します。具体的には、ゾーンごとに以下の内容を指定します(*)。 – 接続を許可する「サービス」(明示的に許可したサービスのみに接続できます。) • 「サービス」は、実質的にはTCP/UDPポート番号の事ですが、設定上は「ssh」「http」など のサービス名で指定します。 • サービス名とTCP/UDPポート番号の対応は、別途、定義ファイルが用意されています。 • デフォルトで用意された定義ファイル以外に、ユーザが独自の定義ファイルを追加することも できます。 • サービスの定義ファイルでは、オプションで、コネクショントラッキングのヘルパーモジュー ルを指定できます。 – 受信を禁止するICMPタイプ(明示的に禁止しないICMPはデフォルトで許可されます。) – IPマスカレードの有無、DNA(P)Tの設定 • IPマスカレード以外のSNA(P)Tは設定できないようです。 – その他、ポート番号を明示した設定や送信元アドレス/送信先アドレスでのフィルタリングも可能で す。  その後、それぞれのNICポートに対して適用するゾーンを指定します。 – 明示的に指定しないNICポートは、事前に指定した「デフォルトゾーン」が適用されます。 – NICポートの代わりに、送信元IPのサブネットで適用するゾーンを指定することもできます。 8 (*) 送信パケットに対するフィルタリングの設定は無いようです。 Open Cloud Campus
  • 9. Linux女子部 firewalld徹底入門! デフォルトで用意されているゾーン  デフォルトで下表のゾーンが用意されています。 – 「drop」「block」「trusted」以外のゾーンは、フィルタリング設定を自由に変更できます(*)。 – どのようなネットワークに接続したNICポートに適用してほしいかが、ゾーン名から想像できます が、実際の使い方はユーザの自由です。 – 独自ゾーンも追加できますが、ほとんどの場合、これだけあれば足りる気がします。 ゾーン drop (設定変更不可) あらゆるパケットを黙って破棄します。内部から外部にパケットは出せますが、返信 パケットが破棄されるので、実質的には通信できません。 block (設定変更不可) あらゆるパケットを受信拒否して、ICMP Pohibitedメッセージを返します。内部から 開始した通信の返信パケットは通るので、内部から外部への通信はできます。 public デフォルトでは「ssh」「dhcpv6-client」のみが許可されます。 external デフォルトでは「ssh」のみが許可されます。IPマスカレードが有効になっています。 dmz デフォルトでは「ssh」のみが許可されます。 work デフォルトでは「ssh」「ipp-client」「dhcpv6-client」のみが許可されます。 home デフォルトでは「ssh」「ipp-client」「mdns」「samba-client」「dhcpv6-client」 のみが許可されます。 internal デフォルトでは「ssh」「ipp-client」「mdns」「samba-client」「dhcpv6-client」 のみが許可されます。 trusted(設定変更不可) 9 説明 あらゆるパケットが受信許可されます。 (*) drop/block/trustedのゾーンも実際には設定変更できてしまう場合がありますが、動作保証はありませんので、  設定変更はしないでください。 Open Cloud Campus
  • 10. Linux女子部 firewalld徹底入門! ゾーンの定義ファイル  デフォルトで用意されたゾーンの定義ファイルは下記にあります。 # ls /usr/lib/firewalld/zones/ block.xml drop.xml home.xml dmz.xml external.xml internal.xml public.xml trusted.xml work.xml – ファイル名がゾーン名に対応します。下記は定義ファイルの例です。 # cat /usr/lib/firewalld/zones/external.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>External</short> <description>For use on external networks. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <masquerade enabled="True"/> </zone> – 独自のゾーンを追加する場合は、「/etc/firewalld/zones」以下に同じ書式で定義ファイルを追加 します。同じゾーン名の設定を追加すると、「/etc/firewalld/zones」が優先されます。  一般に、定義ファイルを追加・変更した際は、次のコマンドで反映します。 # firewall-cmd --reload success – 定義ファイルの他、firewalldの各種設定はすべて「/etc/firewalld」以下に保存されます。 10 Open Cloud Campus
  • 12. Linux女子部 firewalld徹底入門! firewalldサービスの導入と有効化  iptablesサービスとは併用できないので、iptablesサービスを使っている時は停止しておき ます。 # # # # # # systemctl systemctl systemctl systemctl systemctl systemctl stop stop stop mask mask mask iptables.service ip6tables.service ebtables.service iptables.service ip6tables.service ebtables.service  firewalldパッケージを導入して、firewalld.serviceを有効化します。 # yum install firewalld # systemctl enable firewalld.service # systemctl start firewalld.service  稼動状態は、次のいずれかのコマンドで確認します。 # systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since 火 2014-01-07 21:59:12 EST; 9h ago Main PID: 9770 (firewalld) CGroup: /system.slice/firewalld.service └─9770 /usr/bin/python /usr/sbin/firewalld --nofork --nopid 1月 07 21:59:12 localhost.localdomain systemd[1]: Started firewalld - dynam... 1月 08 03:17:00 localhost.localdomain firewalld[9770]: 2014-01-08 03:17:00 ... Hint: Some lines were ellipsized, use -l to show in full. # firewall-cmd --state running 12 Open Cloud Campus
  • 13. Linux女子部 firewalld徹底入門! 現在の設定の確認 (1)  ゾーンごとの設定一覧です。 # firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: ...(中略)... public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: trusted (active) interfaces: eth1 sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: ..(以下省略)... 13 Open Cloud Campus
  • 14. Linux女子部 firewalld徹底入門! 現在の設定の確認 (2)  定義済みのサービスとICMPタイプの一覧です。 # firewall-cmd --get-services amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp highavailability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https # firewall-cmd --get-icmptypes destination-unreachable echo-reply echo-request parameter-problem redirect routeradvertisement router-solicitation source-quench time-exceeded – これらの定義ファイルは以下にあります。独自のサービスやICMPタイプを追加したい場合は、 「/etc/firewalld/(services|icmptypes)」以下に同じ書式で定義ファイルを追加します。 # ls /usr/lib/firewalld/services/ amanda-client.xml ipp-client.xml bacula-client.xml ipp.xml bacula.xml ipsec.xml dhcp.xml kerberos.xml dhcpv6-client.xml kpasswd.xml dhcpv6.xml ldap.xml dns.xml ldaps.xml ftp.xml libvirt-tls.xml high-availability.xml libvirt.xml http.xml mdns.xml https.xml mountd.xml imaps.xml ms-wbt.xml 14 mysql.xml nfs.xml ntp.xml openvpn.xml pmcd.xml pmproxy.xml pmwebapi.xml pmwebapis.xml pop3s.xml postgresql.xml proxy-dhcp.xml radius.xml # ls /usr/lib/firewalld/icmptypes/ destination-unreachable.xml parameter-problem.xml echo-reply.xml redirect.xml echo-request.xml router-advertisement.xml rpc-bind.xml samba-client.xml samba.xml smtp.xml ssh.xml telnet.xml tftp-client.xml tftp.xml transmission-client.xml vnc-server.xml wbem-https.xml router-solicitation.xml source-quench.xml time-exceeded.xml Open Cloud Campus
  • 15. Linux女子部 firewalld徹底入門! 現在の設定の確認 (3) – これらの定義ファイルは、ファイル名がサービス名、ICMPタイプ名に対応します。次はサービスの 定義ファイルの例です。(ftpサービスは、コネクショントラッキングのヘルパーモジュールが指定 されています。) # cat /usr/lib/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol commands on remote machines. It provides secure plan on accessing your machine remotely via SSH enable this option. You need the openssh-server to be useful.</description> <port protocol="tcp" port="22"/> </service> for logging into and executing encrypted communications. If you over a firewalled interface, package installed for this option # cat /usr/lib/firewalld/services/ftp.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>FTP</short> <description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description> <port protocol="tcp" port="21"/> <module name="nf_conntrack_ftp"/> </service> 15 Open Cloud Campus
  • 16. Linux女子部 firewalld徹底入門! 現在の設定の確認 (4) – 次はICMPタイプの定義ファイルの例です。 # cat /usr/lib/firewalld/icmptypes/echo-request.xml <?xml version="1.0" encoding="utf-8"?> <icmptype> <short>Echo Request (ping)</short> <description>This message is used to test if a host is reachable mostly with the &lt;i&gt;ping&lt;/i&gt; utility.</description> </icmptype> • 定義の中にタイプ番号などが無くて驚きますが、実際にはICMPタイプ名(ファイル名)自体が 意味を持ちます。具体的は、iptablesのオプションに指定可能なICMPタイプ名に対応します。 利用可能なICMPタイプ名は、次のコマンドで確認できます。 # iptables -p icmp -h 16 Open Cloud Campus
  • 17. Linux女子部 firewalld徹底入門! NICポートに対するゾーンの適用  明示的に指定しない場合は、自動で「デフォルトゾーン」が適用されます。 – この場合、デフォルトゾーンを変更すると、そのNICポートに適用されるゾーンも変更されます。 # firewall-cmd --get-default-zone public ← デフォルトゾーンの確認 # firewall-cmd --set-default-zone=external success ← デフォルトゾーンの変更 – 明示的に指定する場合は、次のようなコマンドを使用します。 • 設定上は「ゾーンにNICポートを追加する」という考え方をします。 # firewall-cmd success # firewall-cmd success # firewall-cmd yes # firewall-cmd eth1 # firewall-cmd success --remove-interface=eth1 ← eth1の適用ゾーンを除去 --add-interface=eth1 --zone=trusted ← eth1にtrustedゾーンを適用 --query-interface=eth1 --zone=trusted ← eth1の適用ゾーンがtrustedであるか確認 --list-interfaces --zone=trusted ← trustedゾーンが適用されるNICポートを表示 --change-interface=eth1 --zone=public ← eth1の適用ゾーンをpublicに変更 • これらは実行中の設定を変えるだけで、再起動すると設定は戻ります。起動時の設定を変更す る際は、「--permanent」オプションを追加します。(実行時と起動時の両方を変える場合は 「--permanent」オプション有りと無しの両方でコマンドを実行する必要があります。) 17 Open Cloud Campus
  • 18. Linux女子部 firewalld徹底入門! 送信元IPのサブネットに対するゾーンの適用  送信元IPのサブネットによって、適用するゾーンを指定することもできます。 # firewall-cmd --add-source=192.168.122.0/24 --zone=external success # firewall-cmd --list-sources --zone=external 192.168.122.0/24 # firewall-cmd --get-zone-of-source=192.168.122.0/24 external # firewall-cmd --query-source=192.168.122.0/24 --zone=external yes # firewall-cmd --change-source=192.168.122.0/24 --zone=trusted success # firewall-cmd --remove-source=192.168.122.0/24 success ← 「192.168.122.0/24」にexternalゾーンを適用 ← externalゾーンが適用されるサブネットを表示 ← 「192.168.122.0/24」に適用されるゾーンを表示 ← 「192.168.122.0/24」にexternalゾーンが 適用されていることを確認 ← 「192.168.122.0/24」に適用されるゾーンを trustedに変更 ← 「192.168.122.0/24」の適用ゾーンを除去 – 起動時の設定を変更する際は、「--permanent」オプションを追加します。 – 送信元IPで適用されるゾーンの評価のあとに、NICポートで適用されるゾーンの評価が行われます。 • ただし、実際には、最初のゾーン評価でACCEPT/REJECTが決まるので、後のゾーン評価は意味を持ちません。 18 Open Cloud Campus
  • 19. Linux女子部 firewalld徹底入門! ゾーンの設定変更 (1)  ゾーンで許可するサービスの変更 – 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを 省略した場合は、デフォルトゾーンが対象になります。 # firewall-cmd --get-services (結果省略) # firewall-cmd --list-services --zone=public dhcpv6-client ssh # firewall-cmd --add-service=http --zone=public success # firewall-cmd --query-service=http --zone=public yes # firewall-cmd --remove-service=http --zone=public success ← 定義されているサービスの一覧 ← 許可されているサービスを表示 ← 許可するサービスを追加 ← 指定のサービスが許可されているか確認 ← 許可するサービスを削除  ゾーンで禁止するICMPタイプの変更 – 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを 省略した場合は、デフォルトゾーンが対象になります。 # firewall-cmd (結果省略) # firewall-cmd # firewall-cmd success # firewall-cmd yes # firewall-cmd success 19 --get-icmptypes ← 定義されているICMPタイプの一覧 --list-icmp-blocks --zone=public --add-icmp-block=echo-request --zone=public ← 禁止されているICMPタイプを表示 ← 禁止するICMPタイプを追加 --query-icmp-block=echo-request --zone=public ← 指定のICMPタイプが禁止されているか確認 --remove-icmp-block=echo-request --zone=public ← 禁止するICMPタイプを削除 Open Cloud Campus
  • 20. Linux女子部 firewalld徹底入門! ゾーンの設定変更 (2)  ゾーンにおけるIPマスカレードの有無 – 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを 省略した場合は、デフォルトゾーンが対象になります。 ← 現在の設定を確認 # firewall-cmd --query-masquerade --zone=public no # firewall-cmd --add-masquerade --zone=public success # firewall-cmd --remove-masquerade --zone=public success ← IPマスカレードを有効化 ← IPマスカレードを無効化  ゾーンにおけるDNA(P)T(ポートフォワード)の設定 – 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを 省略した場合は、デフォルトゾーンが対象になります。 # # # # firewall-cmd firewall-cmd firewall-cmd firewall-cmd --list-forward-ports --zone=public --add-forward-port=<変換ルール> --zone=public --query-forward-port=<変換ルール> --zone=public --remove-forward-port=<変換ルール> --zone=public ← ← ← ← 現在の設定を確認 変換ルールを追加 変換ルールの存在を確認 変換ルールを削除 – <変換ルール>の指定の例 • port=22:proto=tcp:toport=3753  :22番ポート宛のパケットを3753ポート宛に変更 • port=22:proto=tcp:toaddr=192.168.122.10 :22番ポート宛のパケットを192.168.122.10に転送 ※ 実際にオプションを書くと「--add-forward-port=port=22:proto=tcp:toport=3753」という変な書き方に   なりますが、これであっています。 ※ 宛先アドレスを変換して他のサーバに転送する際は、カーネルパラメータ「net.ipv4.ip_forward = 1」の設定   も必要ですが、これは、firewalldが自動で設定してくれます。 20 Open Cloud Campus
  • 21. Linux女子部 firewalld徹底入門! ゾーンの設定変更 (3)  その他に「Rich Language」を使用して、より詳細な条件でのフィルタリングを設定するこ とができます。 – 起動時の設定を変更する際は「--permanent」オプションを追加します。「--zone」オプションを 省略した場合は、デフォルトゾーンが対象になります。 # # # # firewall-cmd firewall-cmd firewall-cmd firewall-cmd --list-rich-rules --zone=public --add-rich-rules=<設定ルール> --zone=public --query-rich-rules=<設定ルール> --zone=public --remove-rich-rules=<設定ルール> --zone=public ← ← ← ← 現在の設定を確認 変換ルールを追加 変換ルールの存在を確認 変換ルールを削除 – 次は設定例です。送信元が「192.168.122.0/24」でTCP443番ポート宛のパケットをロギングして 受信を許可します。 # firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24" port port="443" protocol="tcp" log prefix="https connection" level="info" limit value="1/m" accept' --zone=public • Rich Languageの詳細は、manページ「firewalld.richlanguage(5)」を参照してください。 21 Open Cloud Campus
  • 22. Linux女子部 firewalld徹底入門! その他のコマンド  起動時の設定を再読み込み – 「--complete-reload」を使用すると、コネクショントラッキングのステート情報も初期化されま す。 # firewall-cmd --reload # firewall-cmd --complete-reload  一定時間だけ設定を変更 – 実行時の設定を変更する際に「--timeout=<秒数>」を指定すると指定時間だけ設定が追加されま す。  パニックモード – パニックモードに入るとすべてのネットワーク通信が遮断されます。 # firewall-cmd --panic-on # firewall-cmd --panic-off 22 ← パニックモードに入る ← パニックモードを止める Open Cloud Campus
  • 24. Linux女子部 firewalld徹底入門! iptablesの全体像  iptablesでは、図の各チェーンに対してパケット処理の設定が行われます。 – firewalldは、ほぼすべてのチェーンを利用していますので、すべてのチェーンに対する設定を追っ ていく必要があります。 – iptablesの設定内容をダンプ出力する際は、iptables-saveコマンドを使用すると便利です。 (出典)プロのための Linuxシステム・ネットワーク管理技術      http://www.amazon.co.jp/dp/4774146757 24 Open Cloud Campus
  • 25. Linux女子部 firewalld徹底入門! firewalldが使用するチェーン群 (1)  firewalldは前ページの各チェーンについて、下図のようなサブチェーンを用意します。 – 図は、「PREROUTING」の例ですが、「FORWARD」「POSTROUTING」「INPUT」の各チェーンに ついて同様のサブチェーンがあります。(OUTPUTチェーンは使っていないようです。) 送信元IPで指定された ゾーンの適用(*) PREROUTING PREROUTING_ZONES_SOURCE 定義されているすべての ゾーンについて繰り返し PREROUTING_ZONES PRE_<ゾーン名> NICポートで指定された ゾーンの適用(*) PRE_<ゾーン名>_log ロギング処理 次のチェーンへ PRE_<ゾーン名>_deny 拒否の処理 PRE_<ゾーン名>_allow 許可の処理 (*) POSTROUTINGチェーンについては、送信先が指定のNICポート/サブネットの場合にサブチェーンの  ルールが適用されます。 25 Open Cloud Campus
  • 26. Linux女子部 firewalld徹底入門! firewalldが使用するチェーン群 (2) – FORWARDチェーンについては、INとOUTの2つのサブチェーンがあります。 FORWARD FORWARD_IN_ZONES_SOURCE 受信元が指定のNICポート /サブネットの場合の処理 FORWARD_IN_ZONES FWI_<ゾーン名> FWI_<ゾーン名>_log FWI_<ゾーン名>_deny FORWARD_OUT_ZONES_SOURCE FWI_<ゾーン名>_allow FORWARD_OUT_ZONES FWO_<ゾーン名> FWO_<ゾーン名>_log 次のチェーンへ FWO_<ゾーン名>_deny 転送先が指定のNICポート /サブネットの場合の処理 26 FWO_<ゾーン名>_allow Open Cloud Campus
  • 27. Linux女子部 firewalld徹底入門! 変更不可のゾーン設定例 (1)  以下の内容は、iptables-saveコマンドでiptablesの設定内容を解析したものです。 – eth0に「drop」ゾーンを適用すると、mangleテーブルのPREROUTINGチェーンで、すべてのパ ケットが有無をいわさずDROPされます。 *mangle -A PREROUTING -j PREROUTING_direct -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A PREROUTING_ZONES -i eth0 -j PRE_drop -A PRE_drop -j PRE_drop_log -A PRE_drop -j PRE_drop_deny -A PRE_drop -j PRE_drop_allow -A PRE_drop -j DROP – eth0に「block」ゾーンを適用すると、INPUTチェーンの下記の流れでパケットがREJECTされます。 その前のルールがあるので、返信パケットはACCEPTされます。FORWARDチェーンにも同様の処理 が入ります。 *filter -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -j INPUT_ZONES_SOURCE -A INPUT -j INPUT_ZONES -A INPUT -p icmp -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT_ZONES -i eth0 -j IN_block -A IN_block -j IN_block_log -A IN_block -j IN_block_deny -A IN_block -j IN_block_allow -A IN_block -j REJECT --reject-with icmp-host-prohibited 27 Open Cloud Campus
  • 28. Linux女子部 firewalld徹底入門! 変更不可のゾーン設定例 (2) – eth0に「trusted」ゾーンを適用すると、すべてのテーブル/チェーンについて、ACCEPTが設定さ れます。下記は、最初に通過するmangleテーブル/PREROUTINGチェーンの例です。 *mangle -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A PREROUTING_ZONES -i eth0 -j PRE_trusted -A PRE_trusted -j PRE_trusted_log -A PRE_trusted -j PRE_trusted_deny -A PRE_trusted -j PRE_trusted_allow -A PRE_trusted -j ACCEPT • FORWARDチェーンについても同じ設定が入るので、他のネットワークへのパケット転送も許可 されます。 28 Open Cloud Campus
  • 29. Linux女子部 firewalld徹底入門! 変更可能なゾーン設定例 – eth0にデフォルトゾーンである「public」ゾーンを適用すると、INPUTチェーンに下記の設定がな されて、SSH接続が許可されます。 -A -A -A -A -A -A -A -A -A -A -A -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT INPUT -i lo -j ACCEPT INPUT -j INPUT_ZONES_SOURCE INPUT -j INPUT_ZONES INPUT -p icmp -j ACCEPT INPUT -j REJECT --reject-with icmp-host-prohibited INPUT_ZONES -i eth0 -j IN_public INPUT_ZONES -j IN_public ← デフォルトゾーンなので明示的に指定されないNICからのパケットも拾っている。 IN_public -j IN_public_log IN_public -j IN_public_deny IN_public -j IN_public_allow IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT • FORWARDチェーンはREJECTされ るので、他のネットワークへのパ ケット転送は許可されません。 29 -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT FORWARD -i lo -j ACCEPT FORWARD -j FORWARD_IN_ZONES_SOURCE FORWARD -j FORWARD_IN_ZONES FORWARD -j FORWARD_OUT_ZONES_SOURCE FORWARD -j FORWARD_OUT_ZONES FORWARD -p icmp -j ACCEPT FORWARD -j REJECT --reject-with icmp-host-prohibited FORWARD_IN_ZONES -i eth0 -j FWDI_public FORWARD_IN_ZONES -j FWDI_public FORWARD_OUT_ZONES -o eth0 -j FWDO_public FORWARD_OUT_ZONES -j FWDO_public FWDI_public -j FWDI_public_log FWDI_public -j FWDI_public_deny FWDI_public -j FWDI_public_allow FWDO_public -j FWDO_public_log FWDO_public -j FWDO_public_deny FWDO_public -j FWDO_public_allow Open Cloud Campus
  • 31. Linux女子部 firewalld徹底入門! 参考資料  Red Hat Enterprise Linux 7.0 Beta Security Guide – 3.5. Using Firewalls – https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7Beta/html-single/Security_Guide/index.html#sec-Using_Firewalls  Linux女子部 systemd徹底入門! – http://www.slideshare.net/enakai/linux-27872553  iptablesの徹底理解には、下記の書籍が最適です。 31 Open Cloud Campus