セキュリティ †セキュリティといっても広義に考えると大変なので、とりあえず、iptablesを中心に書き留めます。今後、IDSやsnortについても取り上げていきたい。 iptables †とりあえず読んでおく。あなたのLinuxマシンをセキュアにするために知っておくべきiptablesのルール10選 iptables --list みんなpolicy ACCEPTになってます。なにもしてないから当然です。ただインストール時に設定していれば、結果は違うかもしれないです。その中に3つの単語が出てます。INPUT,OUTPUT,FORWARDです。この3つについて(チェイン)設定を行います。
iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP これはSYN Floodアタックを防ぐためのもので、送信元を偽装し、SYNビットを立てたTCPパケットを連続しておくってきます。1秒間に5個以上のsynパケットを受信した場合にあらゆる接続を拒否する設定になります。 --synはSYNビットが設定され ACK と RST ビットがクリアされているTCPパケットにのみマッチし、TCP 接続の開始要求に使われます。 最後に/etc/init.d/iptables saveでセーブしておきます。これで、/etc/sysconfig/iptablesに保存されてます。さてだらだらと書いてますが、/etc/init.d/iptablesをみていると、ロードしたいモジュールは IPTABLES=iptables IPTABLES_DATA=/etc/sysconfig/$IPTABLES IPTABLES_CONFIG=/etc/sysconfig/${IPTABLES}-config とありますので、ここに記述しておきましょう。最初は、*filterで最後はCOMMITでしめくくっておきます。chkconfigで有効にしておきましょう。 これで一応動いてはいるんですが、pingを打つとOperation not permittedとなっちゃったので、 iptables -A INPUT -d 192.168.1.1 -j ACCEPT iptables -A OUTPUT -s 192.168.1.1 -j ACCEPT これはINPUTで-d,OUTPUTで-sにしてます。 またあきらかに怪しいIPの制限の場合の例は、 iptables -A OUTPUT -p tcp -s 攻撃元IP -d サーバIP --dport 80 DoSの対策(SYN Flood)として、SYN Cookieを利用します。シーケンス番号にランダム値を使用していたものについて、クライアントのIPの情報から算出した値を使用します。これによりハーフオープン状態を作らずに正常時に接続情報がメモリに保持されるため、リソース不足に陥ることを防ぎます。では echo 1 >/proc/sys/net/ipv4/tcp_syncookies また/etc/sysctl.confに net.ipv4.tcp_syncookies=1 を追加します。 またBroadcastのpingに応答したくない場合は、 echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses また解析してくれるIPTables log analyzerというものがあります。http://www.gege.org/iptables/ http://nmag.jp/modules/xf4section/article.php?articleid=7に大変役に立つスクリプトがありますので、参考にしましょう。 リンク †Firewall issue †telnetでログインしたとき出てくるメッセージを変更しておきます。/etc/issue.netのファイルの中身を編集します。これはリモート経由の場合で、ローカルの場合は、/etc/isuueです。そもそもメッセージの出力を禁止したい場合は、in.telnetを-hで起動します。/etc/xinetd.d/telnetにserver-args=-hを追加します。 securetty †/etc/securettyに記述された端末はrootでログイン可能です。ttyp0~ttyp2がtelnet端末です。ですので、これは消しておきましょう。また/etc/pam.d/loginを覗いてください。そのかなかに auth required pam_securetty.so の記述があることを確認しておきましょう。 ROOTになれるユーザ †suでrootになれるユーザは制限しておくべきです。PAMを使用するのですが、/etc/pam.d/suを編集します。するとgroupのtestでないユーザはsuでrootになれません。 auth required /lib/security/$ISA/pam_wheel.so use_uid group=test パスワードが安全か調べるには †John http://www.atmarkit.co.jp/flinux/rensai/linuxtips/244johnripper.html 記録 †ユーザのコマンド等の記録をする場合には、acctonを実行しておくのですが、私の環境では、/etc/init.d/psacctがありましたので、 chkconfig --level 345 psacct on で起動しています。また/var/account/pacctに情報が書き込まれてます。psacctでACCTFILE=/var/account/pacctとなってるからです。 まずacで接続時間がわかります。また ac -p でユーザ毎の接続時間がわかります。 lastcomm ユーザ名 でそのユーザが使用したコマンドの一覧がわかります。 sa でコマンドの実行回数や、CPUの時間がわかり、 sa -u でユーザ毎に集計されます。 LSAT †LSAT(inux Security Auditing Tool)セキュリティ全般をチェックしてくれるツールです。http://usat.sourceforge.net/からダウンロードしました。 wget http://usat.sourceforge.net/code/lsat-0.9.2.tgz cd lsat-0.9.2 ./configure make make insatll では実行しましょう lsat 終わりましたら、lsat.outに結果が出力されてます。 Running checkdotfiles module...とRunning checkmd5 module...に大変時間がかかってたので、心配になってCtrl-Cで終了しました... http://kazn.dip.jp/xoops/xfsection+article.articleid+26.htm WHCC †Web Hack Control Center(WHCC)でWeb Server Vulnerability(脆弱性) scannerです。 http://www.ussysadmin.com/modules.php?name=Downloads&d_op=search&query=whccからダウンロードしました。 http://scanedge.net/docs/whcc.html rkHunter †http://www.kozupon.com/security/rkhunter.html chkrootkit †http://kajuhome.com/chkrootkit.shtml Tripwire †wget ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo/rhel/4/i386/silfreednet/RPMS/tripwire-2.3.1-22.el4.i386.rpm rpm -ivh tripwire-2.3.1-22.el4.i386.rpm もしくは、http://sourceforge.net/project/showfiles.php?group_id=3130&package_id=3042&release_id=488984より wget http://downloads.sourceforge.net/tripwire/tripwire-2.4.1.2-src.tar.bz2?modtime=1176898244&big_mirror=0 bunzip2 tripwire-2.4.1.2-src.tar.bz2 tar xf tripwire-2.4.1.2-src.tar cd tripwire-2.4.1.2-src 細かい設定がしたい場合は、install/install.cfgを編集します。 ./configure make make install デフォルトでは TWBIN: /usr/local/sbin TWMAN: /usr/local/man TWPOLICY: /usr/local/etc TWREPORT: /usr/local/lib/tripwire/report TWDB: /usr/local/lib/tripwire TWSITEKEYDIR: /usr/local/etc TWLOCALKEYDIR: /usr/local/etc となってました。 rpmの場合インストールが終わってから、 tripwire-setup-keyfiles すると Enter the site keyfile passphrase: サイトのパスフレーズ ・・・1 Verify the site keyfile passphrase: 上と同じもの Enter the local keyfile passphrase: ローカルのパスフレーズ Verify the local keyfile passphrase: 上と同じもの Please enter your site passphrase: 1で入力したもの 2回聞かれる 終了しましたら、/etc/tripwire/twcfg.txtを編集しましょう。(/usr/local/etc/twcfg.txt ソースから入れた場合) MAILNOVIOLATIONS = false エラーが無いときにメールを送信させない。 EMAILREPORTLEVEL = 4 0~4 REPORTLEVEL = 4 0~4 MAILPROGRAM = /var/qmail/bin/qmail-inject qmailを使っている場合 では保存後暗号化をします。 twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt サイトのパスフレーズを聞かれますので、上記で設定した値を入力します。また戻す場合は、 twadmin --print-cfgfile > /etc/tripwire/twcfg.txt では初期化です。 tripwire --init 画面に Warning: File system error. Filename: ファイル名 とか出てきている場合は、 /etc/tripwire/twpol.txtを開いて該当ファイルをコメントアウトしておきましょう。またメールの送信先ですが、 # Tripwire Binaries ( rulename = "Tripwire Binaries", severity = $(SIG_HI) とある部分の上に ( emailto = hoge@hoge.com ) { を追加し、 { /bin -> $(SEC_BIN) ; /lib -> $(SEC_BIN) ; } とある部分の下に } を追加します。ではポリシーファイルを再作成して、初期化します。 twadmin --create-polfile /etc/tripwire/twpol.txt tripwire --init エラーが無くなればOKです。ではチェックしてみましょう。 tripwire --check メールのテストもやっておきましょう。 tripwire --test --email hoge@hoge.com http://centos.oss.sc/security/tripwire/
http://kajuhome.com/tripwire.shtml SQL Injection †etc †
リンク †http://www.linux.or.jp/JM/html/iptables/man8/iptables.8.html 参考書籍 † |