広告を非表示にする為にプロキシサーバ(squid)をたてる
広告を非表示にする為にプロキシサーバをたてました。
インストール
iptablesの設定
今回はCentOS6なのでiptablesの設定を記載します。
25128というポートを使用したいと思います。
iptables -A INPUT -p TCP --dport 25128 -j ACCEPT
確認します
iptables -L ACCEPT tcp -- anywhere anywhere tcp dpt:25128
コンフィグ設定
squid.confを編集します。
まずはバックアップ。
cp /etc/squid/squid.conf /etc/squid/squid.conf.org
ホスト名の設定
ホスト名を設定してやらないとwarningが出ます。
Stopping squid: 2016/XX/XX XX:XX:XX| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'. 2016/XX/XX XX:XX:XX| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
ホスト名を設定します。
visible_hostnameの行が無い場合、追加して下さい。
visible_hostname ホスト名
ポートの変更
デフォルトだと不安なのでポートを変更します。
# Squid normally listens to port 3128 http_port 25128
ダイジェスト認証
パスワードファイルを作成します。
htpasswd -bcp /etc/squid/passwd ユーザ名 パスワード
squid.confにダイジェスト認証をする為の設定をします。
###ダイジェスト認証用パスワードファイル auth_param digest program /usr/lib64/squid/digest_pw_auth /etc/squid/passwd ###認証用のプロセス数を制限する auth_param digest children 3 ###プロキシサーバの名前 auth_param digest realm Proxy Web Server ###クライアントエージェントの有効性をチェックする時間 auth_param digest nonce_garbage_interval 5 minutes ###nonce(臨時・その場限り)の有効性のチェックする時間 auth_param digest nonce_max_duration 30 minutes ###nonceの使用できる回数 auth_param digest nonce_max_count 50 ###ダイジェスト認証 acl password proxy_auth REQUIRED ### password #以下2行をコメントアウト #http_access allow localnet #http_access allow localhost #以下を追加 http_access allow password
blacklistの設定
下記のようなファイルを作成します。
blacklist.conf
XXXX.net XXXX.info
squid.confにblacklistを使用する為の設定をします。
acl blacklist dstdomain "/etc/squid3/blacklist.conf" http_access deny blacklist
dstdomainはデスティネーションドメインです。
blacklistの設定(正規表現を使用)
正規表現を使用する場合です。
下記のようなファイルを作成します。
blacklist_reg.conf
.*/ad/.*
squid.confにblacklist_regを使用する為の設定をします。
acl blacklist_reg url_regex "/etc/squid3/blacklist_reg.conf" http_access deny blacklist_reg
dstdomainの代わりにurl_regexを使用します。
ログフォーマットの変更
デフォルトだとシリアル値が出力されてしまうので、日付けフォーマットに変更します。
logformat squid %tl %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt
起動
最後に起動してやります。
service squid start
chkconfig squid on
blacklistはインターネットを検索してみると2016年でもいくつか見つかりました。
助かります。
まだblacklist_reg.conf周りがうまくいってないかも。
後日調査。
SSHポートフォワーディング
SSHのポートを通じてftpやmysqlなどの通信を行うことが出来るSSHポートフォワーディングの設定です。
TeratermでSSHポートフォワーディング
クライアントはOSはWindows、sshポートフォワーディングの為にTeratermを使用します。
サーバはLinuxです。
Teratermを開いて、設定メニューからSSH転送を選択します。
追加をクリックします。
このように設定します。
ローカルのポートは何でも構いません。
リッスンは空で良いです。
リモート側ホストはリモートのホストアドレス(クライアントのhostsにのみ書かれたドメイン名は無効です)。
今回は192.168.10.5というサーバを想定しました。
ポートはMySQLを想定したので3306を指定しました。
これで192.168.10.5のサーバにSSH接続します。
DB接続ツールなどでローカルの13306に接続すると、192.168.10.5のDBに接続することが出来ます。
[まだ後日書き足す予定]
Youtube-dl
youtubeで見つけたお気に入りの動画をダウンロードする為に使うこのツール。
まずはubuntu15.04にインストールしてみました。
ubuntu15.04へのインストール方法
curl https://yt-dl.org/downloads/日付/youtube-dl -o /usr/local/bin/youtube-dl
日付の箇所は、最新のものを確認して記載します。
パーミッションは755
chmod 755 /usr/local/bin/youtube-dl
これでインストール完了です。
使い方
youtube-dl URL
URLはhttp(s)を含んでも含まなくてもどちらでも良いです。
mp3ファイルとしてダウンロードしたい時はこのように指定します。
youtube-dl -x --audio-format mp3 URL
ffmpegをインストールしていないと下記のエラーが出ます。
ERROR: ffprobe or avprobe not found. Please install one.
そうなったらインストールしましょう。
apt-get install ffmpeg
CentOS7ではNux Dextop repositoryからインストールするのが簡単そうでした。
依存関係の為先にepel-releaseをインストール。
CentOS7へのインストール方法
yum -y install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum -y install ffmpeg ffmpeg-devel
追加したリポジトリを必要の時にのみ使用したい場合は
/etc/yum.repos.d/配下のrepoファイルのenableを0にして下さい。
その際は下記のようなコマンドでインストールを行います。
yum --enablerepo=epel install ~~ yum --enablerepo=nux-dextop install ~~
Ajax 初めの一歩
非常にいまさらなんですが、Ajaxの基礎の基礎について書きたいと思います。
使用言語はPHPにします。
値を入力して送信、サーバで計算してローカルに値を戻します。
必要なファイルはtest.htmlとtest.phpです。
test.htmlにアクセスして送信ボタンを押すとtest.phpにデータが送信され
結果をtest.htmlに戻して値を表示します。
htmlはこんな感じ
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function func() { $.ajax({ type: "POST", url: "./test.php", data: { num1 : $(val1).val(), num2 : $(val2).val() }, dataType: 'json', success: function(data) { target = document.getElementById("output"); target.innerHTML = data.msg; } }); } </script> </head> <body> <center> <label>値1<input type="text" name="val1" id="val1" size="3" maxlength="3"> X </label> <label>値2<input type="text" name="val2" id="val2" size="3" maxlength="3"></label> <input type="button" value="送信" onclick="func();" /> <div style="text-align:center" id="output"></div> </center> </body> </html>
続いてphp
<?PHP $num1 = (int)$_POST['num1']; $num2 = (int)$_POST['num2']; $rtnVal = $num1 * $num2; header("Content-Type: application/json; charset=utf-8"); echo json_encode( array( 'msg' => $rtnVal ) ); ?>
シンプルな例ということで。
エクセルで各値の個数の集計
エクセルでこういったデータの個数の集計をしたい時
どうやるんだったかよく忘れてしまうので、手順をまとめます。
こういったデータを・・・
こんな感じに集計したい
まずはソートします。
そのままね
ソートされました。
次に集計
ここで個数の集計
そうすると完成
Linuxサーバに公開鍵認証でsshログイン
クライアントからLinuxサーバにSSHアクセスする方法の一つに鍵認証を用いる方法があります。
この図のように、クライアントに秘密鍵を配布しサーバに公開鍵を配置します。
秘密鍵と公開鍵を作成します。
作成するサーバはどのサーバでも構いません。
(teratermの機能を用いても同様のことが出来ますが今回は割愛します。)
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@localhost.localdomain The key's randomart image is: +--[ RSA 2048]----+ | | | NYAN | |*_* :o | | . + = | | :)S= = o | | o.+ .^o^ | | +.+ + . . | | . o.= = . | | .+.+ . | +-----------------+
Enter passphrase (empty for no passphrase):の箇所で入力するパスワードを
空にすると、ログイン時にパスワードを入力する必要がなくなります。
今回は空にしました。
ここまで終わるとid_rsaとid_rsa.pubの2つのファイルが作成されます。
リナックスサーバに公開鍵を設定します。
ログインしたいユーザのホームディレクトリに.sshディレクトリを作成します。
所有者とグループはそのユーザとし、パーミッションを700とします。
# mkdir ~/.ssh # chown ユーザ:ユーザ ~/.ssh # chmod 700 ~/.ssh
公開鍵ファイルを~/.sshディレクトリに配置し、
authorized_keysファイルに名称を変更します。
パーミッションを600とします。
# mv id_rsa.pub authorized_keys # chmod 600 authorized_keys # rm rsa.pub
既にauthorized_keysが存在するようならcatします。
# cat rsa.pub >> authorized_keys
続いて秘密鍵をクライアントに渡してやります。
一度権限をrw-r--r--くらいにしてやります。
# chmod 644 id_rsa
これでファイルをクライアントに渡してください。
そのファイルをTeraTermでこのように設定すれば、ログイン出来るかと思います。
クライアントがCentOSなどのLinuxの場合は、
~/.ssh/の下にid_rsaを配置。
複数id_rsaがある場合は任意の名前に変更する。
その場合~/.ssh/configファイルを作成し
IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/任意の名前
↑のように列挙していく。
Host test HostName サーバの名前あるいはアドレス User ユーザ名
とするとssh testで接続出来ます。
もしログイン出来ないようなら、サーバの/etc/ssh/sshd_configの
設定を見直します。
下記3行のコメントブロックが外れているかどうか確認してください。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
下記のようにしたい場合について
rootユーザのパスワード認証でのログインは拒否
rootユーザの鍵認証でのログインを許可
PermitRootLogin without-password
普段はNoにしているかと思いますがwithout-passwordを指定することで
パスワード以外での認証を許可します。