Squid URLフィルタ(アクセス制限)

■squid.confに以下を記述
acl [domain_filename] dstdomain “[path/to/domain_filename]”
acl [regex_filename] url_regex “[path/to/regex_filename]”

http_access deny blacklist
http_access deny blacklist_regex

※dstdomainで指定したファイルにはアクセス制限する
URLに含まれる文字列を。(ドメイン名など)
例)hoge.com
※url_regexで指定したファイルにはアクセス制限する
URLに含まれる文字列を正規表現で記述。
^http://.*\.mpg$

Squid インストール

■Squid用ユーザー、グループ、ディレクトリ作成
# groupadd squid
# useradd -d /usr/local/squid -g squid -m squid
# chown -R squid:squid /usr/local/squid

■インストール
http://www.squid-cache.org/
より最新のSTABLEを/usr/local/squidへダウンロード
(今回はsquid-2.6.STABLE12.tar.gz)

[ダウンロード]
# su squid
$ cd /usr/local/squid
$ wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE12.tar.gz
[展開]
$ tar zxvf squid-2.6.STABLE12.tar.gz
[configure]
$ cd squid-2.6.STABLE12
$ ./configure –enable-err-language=Japanese
※オプションはエラーを日本語で
[インストール]
$ make
$ make install

■設定
$ vi /usr/local/squid/etc/squid.conf

[ポート]
http_port 3128
※環境により書き換え
※ルータ化と組み合わせて透過型プロキシーとする場合は
http_port 3128 transparent
といったようにtransparentオプションを付ける
[キャッシュデータ]
cache_dir ufs /usr/local/squid/var/cache 100 16 256
ufs: 保存データ形式
/usr/local/squid/var/cache: 保存場所
100: キャッシュサイズ上限
16 256: サブディレクトリの階層構造16×256
[実行ユーザー/グループ]
cache_effective_user squid
cache_effective_group squid
[アクセスコントロール]
acl my_network src 192.168.0.0/255.255.255.0
http_access allow my_network
※aclで対象を定義してhttp_accessで実際に許可する考え方
[管理者メールアドレス]
cache_mgr foo@host.name
[AnonymousFTPユーザ]
ftp_user anonymous@host.name
[ログ]
access_log /usr/local/squid/var/logs/access.log squid
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
[その他]
visible_hostname host.name
※設定しないとエラー
forwarded_for off
アクセス元IPの抑制

■キャッシュディレクトリ作成
$ mkdir /usr/local/squid/var/cache
[キャッシュ構造を作成]
$ /usr/local/squid/sbin/squid -z

■起動
/usr/local/squid/bin/RunCache &
で起動するが、
ディフォルトでDNSチェックをする。
なので、ネットワーク未接続時などを考慮し、
同スクリプト内の、
echo “Running: squid -sY $conf >> $logdir/squid.out 2>&1”
にDオプション追加
echo “Running: squid -sYD $conf >> $logdir/squid.out 2>&1”

その他オプションは、
/usr/local/squid/sbin/squid –helpで

Linux ルーター

■NICを2枚挿した状態でVineをインストール

==========================================================
[DHCPサーバー]

■/etc/dhcpd.conf
※なければ作成

ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
option routers [GWとして通知するIP];
option subnet-mask 255.255.255.0;
option domain-name “[ドメイン名]”;
option domain-name-servers [DNSアドレス];

option time-offset -18000;

#DHCPで割り振る範囲
range dynamic-bootp 192.168.0.128 192.168.0.160;
#割り当て期間
default-lease-time 21600;
#最大割り当て期間
max-lease-time 43200;
}

※[GWとして通知するIP]は自身がルーターなら自身のアドレス

■dhcpd.leases
割り当てIPを記述するファイル。
なければ、作成。
/var/lib/dhcp/dhcpd.leases

/var/lib/dhcpd/dhcpd.leases

※Vineは前段

■/etc/sysconfig/dhcpd
DHCPDARGS=eth0
などと、DHCPを利用するNICを指定

■起動
/etc/rc.d/init.d/dhcpd start

(chkconfig dhcpd onでサーバー起動時起動)

==========================================================
[スタティックルーティング]

■/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[IP]

※上位がDHCPの場合
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[空欄]
BOOTPROTO=DHCP

※上位がPPPoEの場合
NETWORKING=yes
HOSTNAME=[HostName]
GATEWAY=[空欄]

■/etc/sysconfig/static-routes
eth0 net 192.168.0.0 netmask 255.255.255.0 gw [GW WAN IP] metric 1
eth1 net [GW WAN IP] netmask [GW WAN MASK] gw [GW LAN IP] metric 1

※metric=ホップ数

■/etc/sysctl.conf
net.ipv4.ip_forward = 1

※他OSでは
/etc/sysconfig/networkに
FORWARD_IPV4=yes
の場合もある。

■ネットワークリスタート
/etc/rc.d/init.d/network restart

==========================================================
[IPTABLES]

■マスカレードを設定
iptables -t nat -A POSTROUTING -j MASQUERADE
※上位がPPPoEの場合
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

※POSTROUTING=IP変換
※-j MASQUERADE=マスカレード適用

#一旦設定削除
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

#基本、自身が送出するパケット以外禁止
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#eth0(LAN)と自身からのパケットを許可
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT

#場合によってはICMP許可
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

#セーブ
/etc/init.d/iptables save

#サーバー併用時はサービスポートを空けておく

==========================================================
[PPPoE]

RP-PPPoEを設定する
※今回は市販のブロードバンドルータの後ろにサーバー構築するので割愛。

==========================================================
[その他]
ネットワーク関連ファイル

/etc/hosts
ホスト名、IPアドレス、DNSを利用しないホスト名
/etc/resolv.conf
DNSサーバーのIP
/etc/sysconfig/network
ホスト名、ドメイン名、GWのIPなどネットワーク全般
cd /etc/sysconfig/network-scripts/ifcfg-eth0~
NICの情報

phpPgAdmin設置

http://phppgadmin.sourceforge.net/
よりダウンロードし、任意のディレクトリに展開。

conf/config.inc.phpを設定する。
$conf[‘servers’][0][‘host’] = ‘localhost’;
$conf[‘servers’][0][‘port’] = ‘5432’;
$conf[‘servers’][0][‘defaultdb’] = ‘[データベース名]’;
$conf[‘extra_login_security’] = ‘true;
※ログインできないときはfalse
$conf[‘show_comments’] = ‘true’;

Basic認証

Basic認証

.htaccess の記入例

AuthUserFile [.htpasswdのパス]
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user

.htpasswd の記入例
[ユーザー名]:[cryptしたパスワード]