パケットフィルターのポイント
INPUT
OUTPUT
FORWARD
これらは iptablesで使われるチェイン
ACCEPT
DROP
チェインに設定できるルールに一致しないパケットの処理
-A REJECT –reject-with icmp-host-prohibited
ルールに一致しないパケットを拒否するルール
-p tcp , udp
ルールが適用されるTCP UDPに対する制御
–dport
ルールが適用されるTCP UDPのポート番号の指定
-j ACCEPT , REJECT , DROP
ルールに一致するパケットの取り扱いの指定
—
から送られてきた高速メモ帳
月別: 2013年7月
パケットフィルターについて
パケットフィルターについて
パケットフィルターとは、ファイアウォールの一種
パケットフィルターは端末にきたパケットの制御をする
ネットワークからの通信は
まずパケットフィルターで処理する
すべての通信は
パケットフィルターで処理される
パケットフィルターの初期設定では
外部ネットワークからサービスを利用できないようになっている
多くのLinuxでは、
パケットフィルターにiptablesを使う
iptablesに設定されているルールは
iptables -L
で確認することができる
また、OS起動時は、設定ファイルの内容に基づいてiptablesが設定される
CentOSなら
/etc/sysconfig/iptables
が設定ファイルになる
/etc/sysconfig/iptables
へ設定する場合
すべての設定を iptablesコマンドで行うか
/etc/sysconfig/iptables
をvim などで編集する
ただし、iptablesコマンドの設定の場合
service iptables save
などで設定しないと
再起動すると無効になるので注意
楽なのは、設定ファイルの
/etc/sysconfig/iptables
の編集
パケットフィルターでは、
INPUT
OUTPUT
FORWARD
のチェインが使える
チェインとは
パケットの通信方向の指定のこと
INPUT
端末に入っているパケットに対するルール
OUTPUT
端末から出て行くパケットに対するルール
FORWARD
端末を経由するパケットに対するルール
そして、各チェインにはポリシーを設定する
ポリシーとは
チェインのルールにマッチしなかったパケットに対しての動作
これは
ACCEPT 受付
DROP 破棄
の設定ができる
チェインのポリシーに
ACCEPTが設定されているなら
ルールにマッチしなかったパケットは許可される
DROPが設定されているなら
ルールにマッチしなかったパケットは破棄される
INPUT
OUTPUT
FORWARD
の初期値では、
すべてのポリシーにACCEPTが設定されているが
外部からのパケットが許可されているのは一部のポートだけ
これは、設定ファイルが影響している
/etc/sysconfig/iptables
を確認すると
-A INPUT -j REJECT -reject-with icmp-host-prohibited
という設定があり
この設定文で評価されるまでのルールへマッチしなかった通信は、
すべて拒否を返す
つまり、この設定文のチェックが行われた時点で通信は拒否され
ポリシーが適用されない
なので、この
-A INPUT -j REJECT -reject-with icmp-host-prohibited
の文の前に許可するようにすることで
使えるポートの設定をする
また、ポリシーの記載を
DLOPというようにスペルミスすると
これはACCEPT扱いになる
ちなみに、ルールそのものが間違っていると
iptablesの再起動したときにエラーが起きる
routeコマンド
routeコマンド
routeコマンドで
PCに設定されているネットワークに対する接続の設定を表示できる
設定が適切でないと
外部ネットワークに対する出口を判別できず
ルータの内側から外部ネットワーク
へ接続できない
ゲートウェイの値は
routeコマンドで確認できる
routeコマンドの結果の
Destinationは、宛先アドレス
Gatewayは、ルータのアドレス
Genmaskは、ネットマスク
Flagsは、設定の追加情報になる
このFlagsの値がGなら
Gatewayへ指定されたアドレスの機器を経由して通信するということになる
Ifaceは、通信に利用するネットワーク機器で
LANケーブルの口が複数あるときに使う
Destinationが
0.0.0.0
となっているのがデフォルトゲートウェイ
これが適切なルータへ設定されてないとルータの外側への通信ができない
Gatewayが0.0.0.0となっている設定では
FlagsにGが表示されない
Gatewayが
0.0.0.0に設定された行は
ゲートウェイを使わずに通信するという意味で
ルータの外側に対して通信を行わない
端末のIPアドレスが正しく設定できていても、
ルーティング設定が間違っていると
外部ネットワークへ通信できない
このため
外部ネットワークへ繋がらないときには
routeコマンドで内容を確認することになる
—
から送られてきた高速メモ帳
pingについて
pingについて
ping はICMPプロトコルを使う
これは、宛先のIPへ
Echo Message
というメッセージを発信する
そして、相手機器から
Echo Reply Message
が返信されれば
自ホストと相手先のIPがつながっていることになる
次に、ifconfig
これは、ネットワークアダプターが
認識されているか、そして
現在のIPやネットマスク設定値を、確認できる
ifconfigを実行すると
inet addrへIPアドレス
MASKにネットマスクが表示される
また、DHCPを使っていて
IPが 169.254 の場合
DHCPからIPを取得できていない
この169.254は、
DHCPからIPを取得できていないときに利用されるIPで
DHCPでIPが取得できなかった時に端末同士で接続するのに使う
もし、ifconfig -a
ですべてのネットワークを表示しても
eth0
em1
に何も表示されないなら、ネットワークカードを認識していない可能性がある
—
から送られてきた高速メモ帳
ネットワークコマンドと結果
ネットワークコマンドと結果
まずping について
Reply from
pingの応答ごおこなわれており!
ネットワークか正常に動作している状態
Destination net unReachable
宛先IPアドレスまでの経路が存在しない
Unknown host
宛先IPアドレス情報が存在しない
Request tkmdd out
ICMPのメッセージ送信できたけど
返答がかえってこない
次に ifconfig
inet addr
現在設定されているIPアドレス
MASK
現在指定されているネットマスク
そして、route
Destination
併記されているGateway に処理を送るネットワークアドレス
Genmask
Destinationのネットマスクで
DestinationとNetmaskを組み合わせて
Gatewayへ処理を送るネットワークを指定
Gateway
DestinationとNetmaskで指定されたネットワークへの処理は
このアドレスの機器により
外部ネットワークに転送される
Flags
この行に
指定されたルールの動作状況を示していて
Uが指定されていないと動作していない
Iface
この行に指定されたルールは
この名前で認識されているネットワーク機器で処理される
ネットワークの基礎知識
ネットワークの基礎知識
IPアドレス
32bitの数値
10進数表示するときには、一般的に8bitごとに区切るとめ
最大値は255にねる
ネットマスク
32bitのビット列
IPアドレスと比較してネットマスクご
1となっている範囲をネットワーク部
0となっている範囲をアドレス部として使う
ローカルネットワーク
利用者が勝手に作成できるネットワーク
自由にできるアドレスとして
10.0.0.0/8
192.168.0.0/16
172.16.0.0/20
などがある
ワイドエリアネットワーク
ローカルネットワークの外のネットワーク
ブロードバンド回線などの公衆回線はこちらになる
FHSで定められたディレクトリと、内容のメモ
FHSで定められたディレクトリと、内容のメモ
/bin
主要コマンド
/boot
起動関連ファイル
/dev
デバイスファイル
/etc
システム設定ファイル
/lib
共有ライブラリー
/mnt
ファイルシステムの一時マウントポイント
/opt
オプションソフトのインストール用ディレクトリ
/proc
kernel process状態の情報を示す仮想ファイルシステム
/sbin
主要なシステム管理コマンド
/srv
システムによって提供されたサイト固有データ
/tmp
一時ファイル置き場
/usr
ユーザー共有ファイル
/usr/bin
基本的ではないコマンド
/usr/include
インクルードファイル
/usr/lib
共有ライブラリー
/usr/local
ユーザーが追加するアプリの置き場
/usr/sbin
基本的ではないシステム管理コマンド
/usr/share
アーキテクチャに依存しない共有データ
/var
ログなど
/var/cache
アプリのキャッシュデータ
/var/lib
アプリ、あるいはシステムの状態情報
/var/lock
ロックファイル
/var/log
ログファイル
/var/opt
/optの可変データ
/var/run
プロセスIDのファイルなど
実行時のシステム情報
/var/spool
アプリのスプールデータ
/var/tmp
一時ファイル置き場
OSをCUIで起動するには
OSをCUIで起動するには
LinuxをCUI環境、つまり仮想コンソールで起動するには
ランレベルを変更する
このメリットは
Linuxをアップグレードしたことにより
ビデオドライバーに不具合が生じ
GUIが起動しなくなったとき
お手上げにならなくてすむこと
以下Ubuntuのランレベル
0シャットダウン
1
rootのみのシングルユーザーモード
2~5
GUIのマルチユーザーモード
6
再起動
また、CentOSでは異なり
2
ネットワークなしのマルチユーザーモード
3
テキストログインのマルチユーザーモード
5
GUIのマルチユーザーモード
というように、少し細かくなる
LinuxのGUIから仮想コンソールへの切り替え
LinuxのGUIから仮想コンソールへの切り替え
Linuxの
GUI環境利用時にフリーズしたときの対策
Ctrl + Alt +F2
で仮想コンソールに切り替わる
切り替わると、黒い背景で
login:
となるので
ユーザー名
パスワード
を入力してログイン
そして、
top
freeなどのコマンドで、
リソース消費が激しいプロセスを把握
場合によっては
kill
で終了させる
仮想コンソールの場合
端末と同じで、バックグラウンドで稼働していない場合
次のコマンドが実行できない
そんなときには
Ctrl+Alt+F3
とすれば、新しく仮想コンソールが使えるようになる
Tab+Altでアプリの切り替えができるように
仮想コンソールも
Alt+F2で仮想コンソールのtty2
Alt+F3で仮想コンソールのtty3
というように切り替えできる
仮想コンソールから、GUI環境へ戻すには
Ubuntuなら Alt+F7
CentOSなら Alt+F1
で戻る
投票結果をDB格納
投票結果をDB格納
#09 投票結果を格納しよう (1)
http://dotinstall.com/lessons/poll_php_v2/9709
を元に
投票された結果をデータベースに格納していく
編集するのは index.php
まず、エラーがなかったときの処理から
if(empty($err)){
でエラーがないことを確認
そして、DB接続
$dbh = connectDb();
connectDb();
は、config.php で作成したユーザ関数
接続できたら、SQL発行
$sql = “insert into answers (answer, remote_addr, user_agent, answer_date, created, modified) values (:answer, :remote_addr, :user_agent, :answer_date, now(), now())”;
そして、SQLの実行
prepare() を使うのは、プレースホルダーの関係と
セキュリティのため
そして、 プレースホルダーの設定
$params = array(
“:answer”=>$_POST[‘answer’],
“:remote_addr”=>$_SERVER[‘REMOTE_ADDR’],
“:user_agent”=>$_SERVER[‘HTTP_USER_AGENT’];
“:answer_date”=>date(“Y-m-d”)
);
とする
:answer
は回答の番号
:remote_addr
はREMOTE_ADDRで取得したIPアドレス
REMOTE_ADDR は
http://phpjp.com/REMOTE_ADDR.htm
に例が乗っている
:user_agent”
はブラウザの種類
:answer_date
が回答した時間