サーバーセキュリティの

基本を見直そう!
Linux女子部07 「firewalld&Linuxセキュリティ勉強会」
Ryo Fujita
いしかわさんごめんなさいは甘え
2
出オチ?
アジェンダ
Red Hatのドキュメント
脆弱性タイプとRHELで扱う領域
エラータ
トラフィック制御
認証
暗号化
SELinux
評価
宣伝
3
Red Hatのドキュメント
http://docs.redhat.com/
セキュリティガイドは日本語版があります!
読みましょう
4
脆弱性タイプとRHELで扱う領域
5
出典:「共通脆弱性タイプ一覧CWE概説」
http://www.ipa.go.jp/security/vuln/CWE.html
そもそもエラータって何?
エラータ
6
ソース
SPEC ファイル
エラータ
コンパイルRPM ビルド
バイナリ
RPM パッケージ
SRPM パッケージ
パッチ
種類
RHSA:Red Hat Security Advisory
今回のお話の中心はこれ
RHBA:Red Hat Bug Advisory
バグ・不具合の修正
RHEA:Red Hat Enhancement Advisory
新規機能、機...
重大度
4段階
Critical
Important
Moderate
Low
8
影響範囲の調査
RHSAにはCVEが付く
yum-plugin-security
# yum list-sec cves!
yum-security(8)
9
影響範囲の調査(続き)
RPMパッケージでの調査
# rpm -q --changelog kernel
!
[0000000]はbugzillaのID
http://bugzilla.redhat.com/0000000
10
* Fri J...
蛇足
https://rhn.redhat.com/rpc/api
エラータの情報をxmlrpcで得られる(要アカ)
JSONだともっと良いんだけどなぁ
11
{'errata_update_date': '2/12/14', 'errata_...
レポジトリ
yumレポジトリが色々あるけど…
本番サーバに出所の分からないRPMはダメ、絶対
まずはRHEL公式
親チャネルだけでなく、OptionalやSupplementary
なども探す
無ければEPEL
12
トラフィック制御
不要なサービス
ファイアウォール
TCPWrapper
xinetd
13
不要なサービス
全部止めてから必要なものだけ動かす
# chkconfig --list | awk '{print
"service "$1" off"}' > stop_all.sh!
# chkconfig hoged on!
そもそも不...
ホストレベルのファイアウォール
中井さんの話を聞いちゃったから
には設定せずにいられないはず
というか、使ってますよね、普通。
iptables / ip6tables / ebtables
次はnftablesの時代が来ます
日経Linux2...
TCPWrapper
libwrap.soにリンクされているバイナリで利用可能
lddで確認
/etc/hosts.[deny ¦ allow]で設定
通常、denyはALL : ALL
allowで許可
ALL: LOCAL
ALL: 192...
xinetd
スーパーサービス
systemdが代替可能
/etc/xinet.d/以下で個別サービスの設定
17
service tftp	
{	
	 disable	 = no	
	 socket_type	 	 = dgram	
	 pr...
認証
パスワード
PAM
18
パスワード
OpenCLを有効にしたJohn the Ripperで…
やばすぎる…、以前のsha256は特に…
わ、忘れちゃってもどうにかなるよ?
ちゃんとmkpasswdとか使いましょう
expectパッケージで提供
簡易のチェッカー:cr...
PAM
Pluggable Authentication Module
ごめん、これ説明する時間は無い
デフォルトで利用していることが多い(?)
高度な設定が可能
20
暗号化
ディスクの暗号化
通信の暗号化
21
ディスクの暗号化
LUKS:Linux Unified Key Setup-on-disk-format
Anacondaでインストール時に暗号化
インストール後に暗号化
cryptsetupを利用
22
通信の暗号化
telnet、ダメ、絶対!
ssh / scp / sftpで
VPN
ipsec / xl2tpdで
23
SELinux
RHはEnforcingでしかテストしてません
RHELに同梱されるソフトウェアはEnforcingで動くことが大前提
ISVが提供するソフトは知らない
自分たちの書いてるソフトが、どのリソースをどのように利
用(アクセスベクタ...
SELinux
chcon / restoreconする
デフォルトのファイルのラベルを見てラベル貼る
ポリシーに従ってラベルを貼り直す
setseboolを活用する
一覧はgetsebool -a
25
# getsebool -a | gr...
評価
Nessus:脆弱性スキャナー
評価版ライセンスが利用可能
商用で継続利用するなら買いましょう
nmap:ポートスキャナー
外部からポートスキャンする
OSの種類なども推測可能
26
宣伝
GPS:Global Professional Services
コードレベルでの調査とか実装の手伝いとか
GLS:Global Learning Services
Red Hat Certified Engineerを始めとする実技を含む...
Upcoming SlideShare
Loading in …5
×

2014.03.19 linux joshi_security_public

2,222 views

Published on

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

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,222
On SlideShare
0
From Embeds
0
Number of Embeds
350
Actions
Shares
0
Downloads
31
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

2014.03.19 linux joshi_security_public

  1. 1. サーバーセキュリティの
 基本を見直そう! Linux女子部07 「firewalld&Linuxセキュリティ勉強会」 Ryo Fujita
  2. 2. いしかわさんごめんなさいは甘え 2 出オチ?
  3. 3. アジェンダ Red Hatのドキュメント 脆弱性タイプとRHELで扱う領域 エラータ トラフィック制御 認証 暗号化 SELinux 評価 宣伝 3
  4. 4. Red Hatのドキュメント http://docs.redhat.com/ セキュリティガイドは日本語版があります! 読みましょう 4
  5. 5. 脆弱性タイプとRHELで扱う領域 5 出典:「共通脆弱性タイプ一覧CWE概説」 http://www.ipa.go.jp/security/vuln/CWE.html
  6. 6. そもそもエラータって何? エラータ 6 ソース SPEC ファイル エラータ コンパイルRPM ビルド バイナリ RPM パッケージ SRPM パッケージ パッチ
  7. 7. 種類 RHSA:Red Hat Security Advisory 今回のお話の中心はこれ RHBA:Red Hat Bug Advisory バグ・不具合の修正 RHEA:Red Hat Enhancement Advisory 新規機能、機能強化 7
  8. 8. 重大度 4段階 Critical Important Moderate Low 8
  9. 9. 影響範囲の調査 RHSAにはCVEが付く yum-plugin-security # yum list-sec cves! yum-security(8) 9
  10. 10. 影響範囲の調査(続き) RPMパッケージでの調査 # rpm -q --changelog kernel ! [0000000]はbugzillaのID http://bugzilla.redhat.com/0000000 10 * Fri Jan 10 2014 Petr Holasek <pholasek@redhat.com> [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]
  11. 11. 蛇足 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 arennow available for Red Hat Enterprise Linux 6.nnThe Red Hat Security Response Team has rated this update as having moderatensecurity impact. Common Vulnerability Scoring System (CVSS) base scores,nwhich give detailed severity ratings, are available for each vulnerabilitynfrom 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/#moderatenhttp://www.oracle.com/technetwork/ topics/security/cpujan2014-1972949.html#AppendixMSQLnhttp://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 ofnthe MySQL server daemon (mysqld) and many client programs and libraries.nnThis update fixes several vulnerabilities in the MySQL database server.nInformation about these flaws can be found on the Oracle Critical PatchnUpdate 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)nnA buffer overflow flaw was
  12. 12. レポジトリ yumレポジトリが色々あるけど… 本番サーバに出所の分からないRPMはダメ、絶対 まずはRHEL公式 親チャネルだけでなく、OptionalやSupplementary なども探す 無ければEPEL 12
  13. 13. トラフィック制御 不要なサービス ファイアウォール TCPWrapper xinetd 13
  14. 14. 不要なサービス 全部止めてから必要なものだけ動かす # chkconfig --list | awk '{print "service "$1" off"}' > stop_all.sh! # chkconfig hoged on! そもそも不要なパッケージはインストールしない 危険なサービス(telnet, ftp etc.)は利用しない 何かポート開いてない? 14 # netstat -tanp | grep LISTEN
  15. 15. ホストレベルのファイアウォール 中井さんの話を聞いちゃったから には設定せずにいられないはず というか、使ってますよね、普通。 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」と「libnftabl es」を経由し、nftコマンドでルール を設定する。  最新のFedora 20では、「rawhi de」リポジトリーに「カーネル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 u pdates-testing # yum update yum kernel # yum install kernel-devel kernel-headers libmnl libnftables autoconf automake flex bison libmnl- devel libnftables-devel gmp-devel readline-deve l # 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_re alloc_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と の互換性を保てる
  16. 16. TCPWrapper libwrap.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)
  17. 17. 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 で制御可能
  18. 18. 認証 パスワード PAM 18
  19. 19. パスワード OpenCLを有効にしたJohn the Ripperで… やばすぎる…、以前のsha256は特に… わ、忘れちゃってもどうにかなるよ? ちゃんとmkpasswdとか使いましょう expectパッケージで提供 簡易のチェッカー:cracklib-check cracklibパッケージで提供 19
  20. 20. PAM Pluggable Authentication Module ごめん、これ説明する時間は無い デフォルトで利用していることが多い(?) 高度な設定が可能 20
  21. 21. 暗号化 ディスクの暗号化 通信の暗号化 21
  22. 22. ディスクの暗号化 LUKS:Linux Unified Key Setup-on-disk-format Anacondaでインストール時に暗号化 インストール後に暗号化 cryptsetupを利用 22
  23. 23. 通信の暗号化 telnet、ダメ、絶対! ssh / scp / sftpで VPN ipsec / xl2tpdで 23
  24. 24. SELinux RHはEnforcingでしかテストしてません RHELに同梱されるソフトウェアはEnforcingで動くことが大前提 ISVが提供するソフトは知らない 自分たちの書いてるソフトが、どのリソースをどのように利 用(アクセスベクター)するか把握してないISVのソフトって 大丈夫なの?という疑問 (やっと)案件増えてきました 官公庁とか防衛とか金融とか サポートするベンダーも増加 Fさんとか大丈夫なはず 24
  25. 25. SELinux chcon / restoreconする デフォルトのファイルのラベルを見てラベル貼る ポリシーに従ってラベルを貼り直す setseboolを活用する 一覧はgetsebool -a 25 # getsebool -a | grep httpd allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> on ……
  26. 26. 評価 Nessus:脆弱性スキャナー 評価版ライセンスが利用可能 商用で継続利用するなら買いましょう nmap:ポートスキャナー 外部からポートスキャンする OSの種類なども推測可能 26
  27. 27. 宣伝 GPS:Global Professional Services コードレベルでの調査とか実装の手伝いとか GLS:Global Learning Services Red Hat Certified Engineerを始めとする実技を含む講 義・認定テスト セキュリティはRHCE + RHCSS http://jp-redhat.com/training/certification/#RHCSS ちょっと高いけど、受講したら絶対満足なはず! 27

×