私は個人的にすべてをOpenBSDに置きましたが、本質はシステムの変更から変わりません。
叙情的な余談
snort ( http://snort.org )は、libpcapベースのipv4ネットワーク用の攻撃検出システム(NIDS)です。 それ自体は通常のtcpdumpです。 ただし、有害なトラフィックをブロックし、セキュリティイベント(アラート)を作成するルールを作成できます。
追加されたプレリュード( http://prelude-ids.org )に基づいたコレクターを介して互いに接続された多数のSnortセンサーがあります。 すべてのルールは手書きで書かれています。
結果(4か月の労働統計による):
誤検知-約2%(平均トラフィック-120 Mbps)。
1日あたりのロック-約15。
失敗した攻撃の数は0です(セキュリティシステムの導入後、単一のサーバーがハッキングされたわけではありません。ホスティングとVDSは保護されています)。
さらに、自動バスモジュールがRIPEデータベースに追加され、ルートtsiskaでトラフィックがブロックされました。
だから私たちは:
snort-inlineがインストールされた特定のサーバー(* BSDの場合、ポートから、Linuxの場合は--enable-inlineオプションが指定されたソースからインストールされます)。
まず、snort自体を構成します(OSのパスは異なる場合があります-デフォルトの構成を参照してください)。 /etc/snort/snort.conf
# - SourceFire .
var HOME_NET 1.2.3.4 # ip-
var EXTERNAL_NET any
var HTTP_SERVERS $HOME_NET
portvar HTTP_PORTS [80,8080]
#
var RULE_PATH /etc/snort/rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
# -
config disable_decode_alerts
config disable_tcpopt_experimental_alerts
config disable_tcpopt_obsolete_alerts
config disable_tcpopt_ttcp_alerts
config disable_tcpopt_alerts
config disable_ipopt_alerts
#
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
# - tcp
preprocessor frag3_global: max_frags 65536
preprocessor frag3_engine: policy linux
# tcp udp - httpinspect
preprocessor stream5_global: max_tcp 8192, track_tcp yes, track_udp no
preprocessor stream5_tcp: policy linux
#preprocessor stream5_udp: ignore_any_rules
# http_inspect
# unicode.map 1251
preprocessor http_inspect: global iis_unicode_map unicode.map 1251
preprocessor http_inspect_server: server default profile apache no_alerts ports { 80 8080 8180 } oversize_dir_length 500
output alert_syslog: LOG_ALERT
#
include classification.config
include reference.config
#
include $RULE_PATH/local.rules
そして$ RULE_PATH / local.rulesを作成します:
# UNION SQL injection
drop tcp any any -> $HOME_NET $HTTP_PORTS (msg:"UNION SQL Injection";uricontent:"union";nocase;uricontent:"select";nocase;sid:1;gid:666;)
# blind SQL injection
drop tcp any any -> $HOME_NET $HTTP_PORTS (msg:"Blind SQL Injection";uricontent:"ascii";nocase;uricontent:"substr";nocase;uricontent:"select";nocase;sid:2;gid:666;)
# XSS/CSS
drop tcp any any -> $HOME_NET $HTTP_PORTS (msg:"XSS/CSS attack";uricontent:"";nocase;sid:4;gid:666;)
# XSS/CSS
drop tcp any any -> $HOME_NET $HTTP_PORTS (msg:"XSS/CSS attack";pcre:"/GET \/.*\?.*=(javascript:|onclick=|onmouseover=|onmouseout=|onload=).*\n/i";sid:5;gid:666;)
# ../../../etc/passwd
drop tcp any any -> $HOME_NET $HTTP_PORTS (msg:"PHP include attack";uricontent:"=../..";sid:6;gid:666;)
Snortを実行する
snort -i em0 -c /etc/snort/snort.conf -D
確認して喜ぶ。
ご注意 ここでは、POSTリクエストのセキュリティ問題については説明しませんが、不可能なことは何もありません。
PSこの記事は、Habréには存在しない特定のクレオンの要求に基づいて公開されています。