-天気予報コム-

Flag counter

« Untangle を導入してみたその10(リモートSSHの有効化) | トップページ | Untangle を導入してみたその12(システムのタイムゾーン設定が何か変) »

Untangle を導入してみたその11(WebFilterで追加したサイト一覧をexportしたい)

 前回ネタはこちら。
 http://platon.cocolog-nifty.com/lovelovejank/2010/08/untangle-10ssh-.html

 今回の目的は自分でWebFilter大量に追加した(1000件以上)ブロックしたsitesの一覧を他のUntangleマシンに持って行く際に手動でコピペするのもばかばかしいので、もっとスマートなやり方があるだろう考えた訳です。
 で、色々調べてるとUntangleの設定データ・ログはPostgreSQLのデータベースに格納されているとのこと。
そーいやPostgreSQLなんて6か7の頃にちょこっと触っただけなんですが、まDBはむしり取った衣笠……もとい昔取った杵柄なので何とかなると思い、調査開始。

で、Untangle 7.3のPostgreSQLの設定ファイルは以下にありました。
/etc/postgresql/8.3/main/pg_hba.conf
/etc/postgresql/8.3/main/postgresql.conf
が、sshで接続したコンソールからのpsqlの実行だけなので、今回は全く記述は変更してません。

まずはsshのターミナルよりPostgreSQLに接続。
#psql -U postgres uvm
Welcome to psql 8.3.9, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit


\dtでユーザテーブル一覧の表示をしてみます。

uvm=# \dt
List of relations
Schema | Name | Type | Owner
----------+------------------------------+-------+----------
events | event_data_days | table | postgres
events | n_boxbackup_evt | table | postgres
events | n_cpd_block_evt | table | postgres
events | n_cpd_host_database_entry | table | postgres
events | n_cpd_login_evt | table | postgres
events | n_faild_evt | table | postgres
events | n_faild_test_evt | table | postgres
events | n_firewall_evt | table | postgres
events | n_firewall_statistic_evt | table | postgres
events | n_http_evt_req | table | postgres
events | n_http_evt_resp | table | postgres
events | n_http_req_line | table | postgres
events | n_ips_evt | table | postgres
events | n_ips_statistic_evt | table | postgres
events | n_login_evt | table | postgres
events | n_mail_message_info | table | postgres
events | n_mail_message_info_addr | table | postgres
events | n_mail_message_stats | table | postgres
events | n_openvpn_connect_evt | table | postgres
events | n_openvpn_distr_evt | table | postgres
events | n_openvpn_statistic_evt | table | postgres
events | n_phish_http_evt | table | postgres
events | n_protofilter_evt | table | postgres
events | n_router_dhcp_abs_lease | table | postgres
events | n_router_evt_dhcp | table | postgres
events | n_router_evt_dhcp_abs | table | postgres
events | n_router_evt_dhcp_abs_leases | table | postgres
events | n_router_redirect_evt | table | postgres
events | n_router_statistic_evt | table | postgres
events | n_server_evt | table | postgres
events | n_shield_rejection_evt | table | postgres
events | n_shield_statistic_evt | table | postgres
events | n_spam_evt | table | postgres
events | n_spam_evt_smtp | table | postgres
events | n_spam_smtp_rbl_evt | table | postgres
events | n_spyware_evt_access | table | postgres
events | n_spyware_evt_activex | table | postgres
events | n_spyware_evt_blacklist | table | postgres
events | n_spyware_evt_cookie | table | postgres
events | n_spyware_statistic_evt | table | postgres
events | n_virus_evt | table | postgres
events | n_virus_evt_http | table | postgres
events | n_virus_evt_mail | table | postgres
events | n_virus_evt_smtp | table | postgres
events | n_webfilter_evt_blk | table | postgres
events | n_webfilter_evt_unblock | table | postgres
events | pl_endp | table | postgres
events | pl_stats | table | postgres
events | u_login_evt | table | postgres
events | u_lookup_evt | table | postgres
events | u_node_state_change | table | postgres
settings | n_boxbackup_settings | table | postgres
settings | n_cpd_capture_rule | table | postgres
settings | n_cpd_db_version | table | postgres
settings | n_cpd_passed_client | table | postgres
settings | n_cpd_passed_server | table | postgres
settings | n_cpd_settings | table | postgres
settings | n_faild_settings | table | postgres
settings | n_faild_uplink_test_rule | table | postgres
settings | n_firewall_rule | table | postgres
settings | n_firewall_settings | table | postgres
settings | n_ftp_settings | table | postgres
settings | n_http_settings | table | postgres
settings | n_ips_immutable_variables | table | postgres
settings | n_ips_mutable_variables | table | postgres
settings | n_ips_rule | table | postgres
settings | n_ips_settings | table | postgres
settings | n_ips_variable | table | postgres
settings | n_mail_email_addr_pair_rule | table | postgres
settings | n_mail_email_addr_rule | table | postgres
settings | n_mail_quarantine_settings | table | postgres
settings | n_mail_safelists | table | postgres
settings | n_mail_safels_recipient | table | postgres
settings | n_mail_safels_sender | table | postgres
settings | n_mail_safels_settings | table | postgres
settings | n_mail_settings | table | postgres
settings | n_openvpn_c_site_network | table | postgres
settings | n_openvpn_client | table | postgres
settings | n_openvpn_group | table | postgres
settings | n_openvpn_s_site_network | table | postgres
settings | n_openvpn_settings | table | postgres
settings | n_openvpn_site | table | postgres
settings | n_phish_settings | table | postgres
settings | n_protofilter_pattern | table | postgres
settings | n_protofilter_settings | table | postgres
settings | n_proxy_nonce | table | postgres
settings | n_reporting_sched | table | postgres
settings | n_reporting_settings | table | postgres
settings | n_reporting_wk_sched | table | postgres
settings | n_reporting_wk_sched_rule | table | postgres
settings | n_shield_node_rule | table | postgres
settings | n_shield_settings | table | postgres
settings | n_spam_imap_config | table | postgres
settings | n_spam_pop_config | table | postgres
settings | n_spam_rbl | table | postgres
settings | n_spam_rbl_list | table | postgres
settings | n_spam_settings | table | postgres
settings | n_spam_smtp_config | table | postgres
settings | n_spyware_ar | table | postgres
settings | n_spyware_cr | table | postgres
settings | n_spyware_settings | table | postgres
settings | n_spyware_sr | table | postgres
settings | n_spyware_wl | table | postgres
settings | n_virus_config | table | postgres
settings | n_virus_imap_config | table | postgres
settings | n_virus_pop_config | table | postgres
settings | n_virus_settings | table | postgres
settings | n_virus_smtp_config | table | postgres
settings | n_virus_vs_ext | table | postgres
settings | n_virus_vs_mt | table | postgres
settings | n_webfilter_blcat | table | postgres
settings | n_webfilter_blocked_urls | table | postgres
settings | n_webfilter_extensions | table | postgres
settings | n_webfilter_mime_types | table | postgres
settings | n_webfilter_passed_clients | table | postgres
settings | n_webfilter_passed_urls | table | postgres
settings | n_webfilter_settings | table | postgres
settings | n_webfilter_template | table | postgres
settings | split_schema_ver | table | postgres
settings | u_ab_repository_settings | table | postgres
settings | u_ab_settings | table | postgres
settings | u_access_settings | table | postgres
settings | u_active_stat | table | postgres
settings | u_address_settings | table | postgres
settings | u_admin_settings | table | postgres
settings | u_ddns_settings | table | postgres
settings | u_dhcp_lease_list | table | postgres
settings | u_dhcp_lease_rule | table | postgres
settings | u_dns_host_list | table | postgres
settings | u_dns_static_host_rule | table | postgres
settings | u_ip_network | table | postgres
settings | u_ipmaddr_dir | table | postgres
settings | u_ipmaddr_dir_entries | table | postgres
settings | u_ipmaddr_rule | table | postgres
settings | u_language_settings | table | postgres
settings | u_logging_settings | table | postgres
settings | u_mackage_state | table | postgres
settings | u_mail_settings | table | postgres
settings | u_mimetype_rule | table | postgres
settings | u_misc_settings | table | postgres
settings | u_network_intf | table | postgres
settings | u_network_route | table | postgres
settings | u_network_services | table | postgres
settings | u_network_settings | table | postgres
settings | u_network_space | table | postgres
settings | u_node_args | table | postgres
settings | u_node_manager_state | table | postgres
settings | u_node_persistent_state | table | postgres
settings | u_node_preferences | table | postgres
settings | u_period | table | postgres
settings | u_policy | table | postgres
settings | u_radius_server_settings | table | postgres
settings | u_redirect_rule | table | postgres
settings | u_redirects | table | postgres
settings | u_skin_settings | table | postgres
settings | u_snmp_settings | table | postgres
settings | u_stat_settings | table | postgres
settings | u_string_rule | table | postgres
settings | u_tid | table | postgres
settings | u_upgrade_settings | table | postgres
settings | u_user | table | postgres
settings | u_user_policy_rule | table | postgres
settings | u_user_policy_rules | table | postgres
settings | u_wmi_settings | table | postgres
settings | uvm_branding_settings | table | postgres
(165 rows)

uvm=#

Schemaがeventsのものは恐らくイベントと言うことは実際のログ系のデータ、settingsのものは設定情報が入っていると考えて良いでしょう。
とりあえずwebfilterとかurl等の名前が入ったテーブルに注目。



uvm=# select * from n_webfilter_blcat;
category_id | name | display_name | description | block | log | setting_id
-------------+------------------+---------------------+-----------------------------+-------+-----+------------
18428 | ecommerce | Shopping | Online Shopping | f | f | 18426
18429 | mail | Web Mail | Web Mail | f | f | 18426
18434 | aggressive | Hate and Aggression | Hate and Aggression | f | f | 18426
18436 | sports | Sports | Sports | f | f | 18426
18437 | violence | Violence | Violence | f | f | 18426
18438 | vacation | Vacation | Vacation | f | f | 18426
18590 | Uncategorized | Uncategorized | Uncategorized | f | f | 18426
18431 | jobsearch | Job Search | Job Search | f | f | 18426
18439 | proxy | Proxy Sites | Proxy Sites | t | t | 18426
18433 | drugs | Illegal Drugs | Illegal Drugs | t | t | 18426
18435 | socialnetworking | Social Networking | Social Networking | f | f | 18426
18430 | hacking | Hacking | Security Cracking | t | t | 18426
18432 | porn | Pornography | Adult and Sexually Explicit | f | t | 18426
18441 | gambling | Gambling | Gambling | f | t | 18426
18440 | dating | Dating | Online Dating | f | t | 18426

n_webfilter_blcatテーブルはWebFilterのカテゴリリスト設定ですな。
blockがfなら無効、tなら有効という感じでしょうか。


uvm=# SELECT * FROM n_webfilter_passed_clients;
setting_id | rule_id
------------+-----------
18426 | 16679547
18426 | 329269399
18426 | 499599127
(3 rows)

n_webfilter_blocked_urlsにはsetting_idとrule_idの組み合わせが入ってました。
ということはrule_idとそれに対応したルールを格納したテーブルを探せば良さそう。


uvm=# SELECT * FROM n_webfilter_passed_clients;
setting_id | rule_id
------------+-----------
18426 | 16679547
18426 | 329269399
18426 | 499599127
(3 rows)

n_webfilter_passed_clientsはWebFilterのPass Lists内のPassed Clientの情報でしょうな。

n_webfilter_blocked_urlsについての情報はこんな感じ。
"\d tablename"でテーブルの情報を取得できます。

uvm=# uvm=# \d n_webfilter_blocked_urls
Table "settings.n_webfilter_blocked_urls"
Column | Type | Modifiers
------------+--------+-----------
setting_id | bigint | not null
rule_id | bigint | not null
Foreign-key constraints:
"fk_tr_httpblk_blocked_urls" FOREIGN KEY (setting_id) REFERENCES n_webfilter_settings(settings_id)
"fk_tr_httpblk_blocked_urls_rule" FOREIGN KEY (rule_id) REFERENCES u_string_rule(rule_id)

u_string_ruleについての情報はこんな感じ

uvm=# \d u_string_rule
Table "settings.u_string_rule"
Column | Type | Modifiers
-------------+---------+-----------
rule_id | bigint | not null
string | text |
name | text |
category | text |
description | text |
live | boolean |
alert | boolean |
log | boolean |
Indexes:
"u_string_rule_pkey" PRIMARY KEY, btree (rule_id)
"u_idx_string_rule" btree (string)

よって、自分でWebFilterに追加したurlブラックリストは以下のコマンドで取得出来ます。

SELECT
n_webfilter_blocked_urls.rule_id AS rule_id,
n_webfilter_blocked_urls.setting_id AS setting_id,
u_string_rule.string AS string,
u_string_rule.live AS live,
u_string_rule.alert AS alert,
u_string_rule.log AS log,
u_string_rule.description AS description
FROM u_string_rule, n_webfilter_blocked_urls
WHERE u_string_rule.rule_id=n_webfilter_blocked_urls.rule_id
ORDER BY u_string_rule.string;

ファイルに出力するならsshのシェルから以下を実行すれば、block_url_lists.txtというファイル名でゲットできます。

# echo "SELECT n_webfilter_blocked_urls.rule_id AS rule_id, n_webfilter_blocked_urls.setting_id AS setting_id, u_string_rule.string AS string,u_string_rule.live AS live,u_string_rule.alert AS alert,u_string_rule.log AS log,u_string_rule.description AS description FROM u_string_rule, n_webfilter_blocked_urls WHERE u_string_rule.rule_id=n_webfilter_blocked_urls.rule_id ORDER BY u_string_rule.string;" | psql -U postgres uvm > block_url_lists.txt

<2010/12/02追記>
データベースを経由せずにフィルタ設定をエクスポートする方法を発見したので別エントリに記述します。
http://platon.cocolog-nifty.com/lovelovejank/2010/12/untangle-18webf.html

« Untangle を導入してみたその10(リモートSSHの有効化) | トップページ | Untangle を導入してみたその12(システムのタイムゾーン設定が何か変) »

アルジェリア」カテゴリの記事

「パソコン・インターネット」カテゴリの記事

コメント

platonと、名前に導入したかったの♪

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Untangle を導入してみたその10(リモートSSHの有効化) | トップページ | Untangle を導入してみたその12(システムのタイムゾーン設定が何か変) »

無料ブログはココログ
2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31