Your SlideShare is downloading. ×
0
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Linux女子部 firewalld徹底入門!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Linux女子部 firewalld徹底入門!

22,314

Published on

Linux女子部07 「firewalld&Linuxセキュリティ勉強会」で使用予定の資料です。 …

Linux女子部07 「firewalld&Linuxセキュリティ勉強会」で使用予定の資料です。
http://connpass.com/event/5259/
<変更履歴>
2014/01/09 ver1.0
2014/01/10 ver1.1 「firewalldが作られた背景」を追加
2014/01/11 ver1.2 「firewalldとは?」の説明を追加
2014/02/19 ver1.3 ちょっと修正

Published in: Technology
1 Comment
76 Likes
Statistics
Notes
No Downloads
Views
Total Views
22,314
On Slideshare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
370
Comments
1
Likes
76
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. オープンクラウド・キャンパス Linux女子部 firewalld徹底入門! Linux女子部 firewalld徹底入門! ver1.3 中井悦司 Twitter @enakai00
  2. Linux女子部 firewalld徹底入門! 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and 「Linux独習書の新定番」 書きました! Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」 2 Open Cloud Campus
  3. Linux女子部 firewalld徹底入門! Contents     firewalldの考え方 コマンドによる設定方法 iptablesによる実装内容 参考資料 (*) 本資料の説明はRHEL7Betaを前提としています。 3 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
  5. Linux女子部 firewalld徹底入門! firewalldの考え方
  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
  11. Linux女子部 firewalld徹底入門! コマンドによる設定方法
  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
  23. Linux女子部 firewalld徹底入門! iptablesによる実装内容
  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
  30. Linux女子部 firewalld徹底入門! 参考資料
  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
  32. Linux女子部 firewalld徹底入門! QA 32 Open Cloud Campus
  33. オープンクラウド・キャンパス Linux女子部 firewalld徹底入門! RHEL7Betaで最新技術を 学びましょう! 中井悦司 Twitter @enakai00

×