2014.03.19 linux joshi_security_public

27
サーバーセキュリティの 基本を見直そう! Linux女子部07 「firewalld&Linuxセキュリティ勉強会」 Ryo Fujita

Upload: ryo-fujita

Post on 07-Jul-2015

1.639 views

Category:

Technology


0 download

DESCRIPTION

2014年3月19日のLinux女子部第7回勉強会資料。 セキュリティのおさらい。

TRANSCRIPT

Page 1: 2014.03.19 linux joshi_security_public

サーバーセキュリティの基本を見直そう!Linux女子部07 「firewalld&Linuxセキュリティ勉強会」

Ryo Fujita

Page 2: 2014.03.19 linux joshi_security_public

いしかわさんごめんなさいは甘え

�2

出オチ?

Page 3: 2014.03.19 linux joshi_security_public

アジェンダRed Hatのドキュメント 脆弱性タイプとRHELで扱う領域 エラータ トラフィック制御 認証 暗号化 SELinux 評価 宣伝

�3

Page 4: 2014.03.19 linux joshi_security_public

Red Hatのドキュメントhttp://docs.redhat.com/

セキュリティガイドは日本語版があります!

読みましょう

�4

Page 5: 2014.03.19 linux joshi_security_public

脆弱性タイプとRHELで扱う領域

�5

出典:「共通脆弱性タイプ一覧CWE概説」 http://www.ipa.go.jp/security/vuln/CWE.html

Page 6: 2014.03.19 linux joshi_security_public

そもそもエラータって何?

エラータ

�6

ソース

SPECファイル

エラータ コンパイルRPMビルド

バイナリ

RPMパッケージ

SRPMパッケージ

パッチ

Page 7: 2014.03.19 linux joshi_security_public

種類RHSA:Red Hat Security Advisory 今回のお話の中心はこれ RHBA:Red Hat Bug Advisory バグ・不具合の修正 RHEA:Red Hat Enhancement Advisory 新規機能、機能強化

�7

Page 8: 2014.03.19 linux joshi_security_public

重大度4段階

Critical

Important

Moderate

Low

�8

Page 9: 2014.03.19 linux joshi_security_public

影響範囲の調査RHSAにはCVEが付く

yum-plugin-security

# yum list-sec cves!

yum-security(8)

�9

Page 10: 2014.03.19 linux joshi_security_public

影響範囲の調査(続き)RPMパッケージでの調査 # rpm -q --changelog kernel

!

[0000000]はbugzillaのID http://bugzilla.redhat.com/0000000

�10

* Fri Jan 10 2014 Petr Holasek <[email protected]> [2.6.32-431.5.1.el6]- [net] sctp: fix checksum marking for outgoing packets (Daniel Borkmann) [1046041 1040385]- [kernel] ptrace: Cleanup useless header (Aaron Tomlin) [1046043 1036312]- [kernel] ptrace: kill BKL in ptrace syscall (Aaron Tomlin) [1046043 1036312]

Page 11: 2014.03.19 linux joshi_security_public

蛇足https://rhn.redhat.com/rpc/api

エラータの情報をxmlrpcで得られる(要アカ)

JSONだともっと良いんだけどなぁ

�11

{'errata_update_date': '2/12/14', 'errata_topic': 'Updated mysql packages that fix several security issues and one bug are\nnow available for Red Hat Enterprise Linux 6.\n\nThe Red Hat Security Response Team has rated this update as having moderate\nsecurity impact. Common Vulnerability Scoring System (CVSS) base scores,\nwhich give detailed severity ratings, are available for each vulnerability\nfrom the CVE links in the References section.\n', 'errata_type': 'Security Advisory', 'errata_severity': 'Moderate', 'errata_notes': '', 'errata_synopsis': 'Moderate: mysql security and bug fix update', 'errata_references': 'https://access.redhat.com/security/updates/classification/#moderate\nhttp://www.oracle.com/technetwork/topics/security/cpujan2014-1972949.html#AppendixMSQL\nhttp://dev.mysql.com/doc/relnotes/mysql/5.1/en/news-5-1-73.html', 'errata_last_modified_date': '2014-02-12 13:20:29.0', 'errata_issue_date': '2/12/14', 'errata_description': 'MySQL is a multi-user, multi-threaded SQL database server. It consists of\nthe MySQL server daemon (mysqld) and many client programs and libraries.\n\nThis update fixes several vulnerabilities in the MySQL database server.\nInformation about these flaws can be found on the Oracle Critical Patch\nUpdate Advisory page, listed in the References section. (CVE-2014-0386,\nCVE-2014-0393, CVE-2014-0401, CVE-2014-0402, CVE-2014-0412, CVE-2014-0437,\nCVE-2013-5908)\n\nA buffer overflow flaw was

Page 12: 2014.03.19 linux joshi_security_public

レポジトリyumレポジトリが色々あるけど…

本番サーバに出所の分からないRPMはダメ、絶対

まずはRHEL公式

親チャネルだけでなく、OptionalやSupplementaryなども探す

無ければEPEL

�12

Page 13: 2014.03.19 linux joshi_security_public

トラフィック制御不要なサービス

ファイアウォール

TCPWrapper

xinetd

�13

Page 14: 2014.03.19 linux joshi_security_public

不要なサービス全部止めてから必要なものだけ動かす # chkconfig --list | awk '{print "service "$1" off"}' > stop_all.sh!

# chkconfig hoged on!そもそも不要なパッケージはインストールしない 危険なサービス(telnet, ftp etc.)は利用しない 何かポート開いてない?

�14

# netstat -tanp | grep LISTEN

Page 15: 2014.03.19 linux joshi_security_public

ホストレベルのファイアウォール 中井さんの話を聞いちゃったからには設定せずにいられないはず

というか、使ってますよね、普通。 iptables / ip6tables / ebtables 次はnftablesの時代が来ます 日経Linux2月号にちょろっと書いた

iptables / firewalld

�15

8 2014.2 Nikkei Linux

 「nftables」は、従来の「iptables」や「ip6tables」などの置き換えを狙ったものだ。Patrick McHardy氏が2008年に単独で開発を始めたが、数年間、開発が停滞していた。しかし、2012年から再開し、次期版のカーネル3.13で開発のメインラインにマージが予定されている。 nftablesの開発目的は、iptablesやip6tablesの各種課題を解消すること。具体的には、「カーネル空間およびユーザー空間のコードの重複によるメンテナンス性の低下」「パケットフィルタリングのルールが増大した際の性能低下」「動的なフィルタリングが不可能」「ユーザー空間の仕組みを修正するにはカーネルの変更が不可欠なこと」といった課題を指す。

 nftablesでは、ルールを記したテーブルをユーザーが定義する。この定義を、netfilterのフックにアタッチすることで、パケット処理を実施する。カーネル空間とユーザー空間の通信には「nfnetlink」ソケットが使われ、ユーザー空間からはルールの追加(ADD)、削除(DELETE)、ダンプ(DUMP)の3種類の操作のみ可能だ。また、フィルタリングやルーティング、アドレス変換のルールは、動作中にも適宜変更できる。 従来の実装とnftablesの実装を示すと図1のようになる。

netfilter内にnftablesのモジュールが実装され、「libmnl」と「libnftables」を経由し、nftコマンドでルールを設定する。 最新のFedora 20では、「rawhide」リポジトリーに「カーネル3.13」「libmnl」「libnftables」がバイナリパッケージとして用意されている。これらをインストールし、nftコマンドのみをコンパイルして導入すれば、nftablesが使える(図2)。 nftコマンドには「ファイル」「コマンドライン」「対話」の3つの実行モードがある。図3では、IPv4のフィルターをファイルモードで有効にした後、TCP80番ポートを宛先とするパケットをドロップするルールを2つのモードで設定している。

(レッドハット 藤田 稜)

ルール増大による性能低下防止稼働中にルールが変更可能新しいパケットフィルター「nftables」が次期版のカーネル3.13にマージされる予定だ。nftablesでは、フィルタリングルール増大による性能低下を防ぎ、動的にルール変更ができるようになっている。なお、Fedora 20なら比較的簡単にnftablesを試せる。

新パケットフィルター「nftables」

Linuxレポート

IPv4のフィルターを有効にする# nft -f nftables/files/nftables/ipv4-filter

❶コマンドラインモードの例# nft add rule ip filter input tcp dport 80 drop # nft list table filter -a

❷対話モードの例# nft -i nft> add rule ip filter input tcp dport 80 drop  nft> list table filter ルール確認

図3 nftコマンド「ファイルモード」「コマンドラインモード」「対話モード」の3つの実行モードがある。

ルール設定

ルール設定

ルール確認

$ su # yum install fedora-release-rawhide # yum-config-manager --disable fedora updates updates-testing # yum update yum kernel # yum install kernel-devel kernel-headers libmnl libnftables autoconf automake flex bison libmnl-devel libnftables-devel gmp-devel readline-devel # yum-config-manager --enable rawhide # git clone git://git.netfilter.org/nftables # cd nftables # ./autogen.sh # ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ./configure # make && make install # reboot

図2 nftablesの導入Fedora 20にインストールする例

このマークで改行

図1 従来の実装とnftablesの実装Fedoraで実装されているツール「firewalld」との関係も示した。なお、firewalldはnftablesには未対応。

system-config-firewall

iptables(service)

iptables(command)

netfilter

firewalld(daemon & service)

firewall-config

firewall-cmd

nft(command)

libnftables

libmnl

netfilter

firewalld(daemon & service)

nft_*

従来の実装 nftablesの実装

iptablesやip6tablesとの互換性を保てる

Page 16: 2014.03.19 linux joshi_security_public

TCPWrapperlibwrap.soにリンクされているバイナリで利用可能 lddで確認

/etc/hosts.[deny | allow]で設定 通常、denyはALL : ALL allowで許可 ALL: LOCAL ALL: 192.168.1. postfix: ALL

�16

# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f031e925000)

Page 17: 2014.03.19 linux joshi_security_public

xinetdスーパーサービス

systemdが代替可能

/etc/xinet.d/以下で個別サービスの設定

�17

service tftp{ disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot per_source = 11 cps = 100 2 flags = IPv4 }

Connection Per Second で制御可能

Page 18: 2014.03.19 linux joshi_security_public

認証パスワード

PAM

�18

Page 19: 2014.03.19 linux joshi_security_public

パスワードOpenCLを有効にしたJohn the Ripperで… やばすぎる…、以前のsha256は特に… わ、忘れちゃってもどうにかなるよ? ちゃんとmkpasswdとか使いましょう expectパッケージで提供 簡易のチェッカー:cracklib-check cracklibパッケージで提供

�19

Page 20: 2014.03.19 linux joshi_security_public

PAMPluggable Authentication Module

ごめん、これ説明する時間は無い

デフォルトで利用していることが多い(?)

高度な設定が可能

�20

Page 21: 2014.03.19 linux joshi_security_public

暗号化ディスクの暗号化

通信の暗号化

�21

Page 22: 2014.03.19 linux joshi_security_public

ディスクの暗号化LUKS:Linux Unified Key Setup-on-disk-format

Anacondaでインストール時に暗号化

インストール後に暗号化

cryptsetupを利用

�22

Page 23: 2014.03.19 linux joshi_security_public

通信の暗号化telnet、ダメ、絶対!

ssh / scp / sftpで

VPN

ipsec / xl2tpdで

�23

Page 24: 2014.03.19 linux joshi_security_public

SELinuxRHはEnforcingでしかテストしてません RHELに同梱されるソフトウェアはEnforcingで動くことが大前提 ISVが提供するソフトは知らない 自分たちの書いてるソフトが、どのリソースをどのように利用(アクセスベクター)するか把握してないISVのソフトって大丈夫なの?という疑問

(やっと)案件増えてきました 官公庁とか防衛とか金融とか

サポートするベンダーも増加 Fさんとか大丈夫なはず

�24

Page 25: 2014.03.19 linux joshi_security_public

SELinuxchcon / restoreconする デフォルトのファイルのラベルを見てラベル貼る ポリシーに従ってラベルを貼り直す

setseboolを活用する 一覧はgetsebool -a

�25

# getsebool -a | grep httpdallow_httpd_anon_write --> offallow_httpd_mod_auth_ntlm_winbind --> offallow_httpd_mod_auth_pam --> offallow_httpd_sys_script_anon_write --> offhttpd_builtin_scripting --> onhttpd_can_check_spam --> offhttpd_can_network_connect --> on……

Page 26: 2014.03.19 linux joshi_security_public

評価Nessus:脆弱性スキャナー

評価版ライセンスが利用可能

商用で継続利用するなら買いましょう

nmap:ポートスキャナー

外部からポートスキャンする

OSの種類なども推測可能

�26

Page 27: 2014.03.19 linux joshi_security_public

宣伝GPS:Global Professional Services コードレベルでの調査とか実装の手伝いとか

GLS:Global Learning Services Red Hat Certified Engineerを始めとする実技を含む講義・認定テスト セキュリティはRHCE + RHCSS http://jp-redhat.com/training/certification/#RHCSS

ちょっと高いけど、受講したら絶対満足なはず!

�27