<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>hideのブログ</title>
<link>https://ameblo.jp/h1debl0/</link>
<atom:link href="https://rssblog.ameba.jp/h1debl0/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>netscreen204</title>
<description>
<![CDATA[ 今日はNetScreen204にはまった・・<br><br>今まではUntrustからTrustへポート制限をかけてVIPで接続してたんだけど、DMZを介してTrustとUntrustをつなげようと思った。<br><br>Untrust側のIPはプロバイダから固定でもらってるから、TrustからUntrustへ出るときはSrcNATかけてる。<br>だから同じように<font color="#FF0000">DMZからUntrustへ出るんだからSrcNATをかければいいと思って設定したんだけど。。<br>つながらん・・orz</font><br><br>どうやら原因はNAT設定がちゃんとできていないことにあったらしい。<br><br>通常？NSでTrustからUntrustに出るときに設定するNATは「Interface-Edit-InterFaceMode」をNATにすればいいと思うんだけど、DMZの場合これではちゃんとNATがかからないらしい。<br><br>試しにTrust-Untrustで許可設定を入れたポリシーとDMZ-Untrustで許可設定を入れたポリシーでログを見てみた。<br>もちろんInterfaceModeは両方共NATで。<br><br>そうするとTrust-UntrustはSrcNATはかかってたけど、DMZ-UntrustはプライベートIPで通信されてた。<br>どうりでtcpdumpとってもパケットが出るばっかりで戻ってこないわけだ・・<br><br>というわけで今度はPolicesのDMZ-UntrstでNAT設定を入れた。<br><font color="#FF0000">「Polices-Edit-Advanced-NAT-Source Translation」にチェック。</font><br><br>もう一度ポリシーでログを確認するとちゃんとSrcNATがかかって通信ができた。<br><br>めでたしめでたし。
]]>
</description>
<link>https://ameblo.jp/h1debl0/entry-11505667258.html</link>
<pubDate>Fri, 05 Apr 2013 23:04:46 +0900</pubDate>
</item>
<item>
<title>iptables第2回</title>
<description>
<![CDATA[ 以前iptablesを導入しました。<br>が、せっかくなのでもう少しいじくってみようと思います。<br><br>設定内容は60秒以内に3回アクセスしてきたIPアドレスをAttackerとしてリストへ保存し、以後遮断するといった内容。<br><br><font size="3">設定内容</font><br><br>いじくった後の設定内容はこんな感じ。<br><font color="#00BFFF">root@bt:/proc/net/xt_recent# iptables -L<br>Chain INPUT (policy ACCEPT)<br>target     prot opt source               destination         <br>DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: CHECK name: attacker side: source <br>           tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: SET name: SSHConn side: source <br>SSHAttacker  tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 3 TTL-Match name: SSHConn side: source <br><br>Chain FORWARD (policy DROP)<br>target     prot opt source               destination         <br><br>Chain OUTPUT (policy ACCEPT)<br>target     prot opt source               destination         <br><br>Chain SSHAttacker (1 references)<br>target     prot opt source               destination         <br>           all  --  anywhere             anywhere            recent: SET name: attacker side: source <br>DROP       all  --  anywhere             anywhere</font><br><br>ぶっちゃけ自分のレベルではこんなものを見てもどんなコマンドでこういう設定が入ったのかわかりませんw<br>なのでメモとしてコマンドも載せます。<br><br><font size="3">設定コマンド</font><br><br>まずは現在のiptables設定の初期化。<br>先に-Fの方を実行しないと怒られる事があるので注意。<br># <font color="#FF0000">iptables -F</font>　←チェイン配下のルール削除<br># <font color="#FF0000">iptables -X</font>　←ユーザ定義のチェイン削除<br><br>各テーブルの基本となる動作設定。<br># <font color="#FF0000">iptables -P INPUT ACCEPT</font>　←端末への通信をすべて許可<br># <font color="#FF0000">iptables -P OUTPUT ACCEPT</font>　←端末からの通信をすべて許可<br># <font color="#FF0000">iptables -P FORWARD DROP</font>　←端末を介する通信をすべて遮断<br><br>ブロックする条件に一致した通信を処理<br># <font color="#FF0000">iptables -N SSHAttacker</font>　←SSHAttackerチェインを追加<br># <font color="#FF0000">iptables -A SSHAttacker -m recent --set --name attacker</font>　←SSHAttackerチェインが呼び出されたとき、attackerリストへIPアドレスを追加。<br># <font color="#FF0000">iptables -A SSHAttacker -j DROP</font>　←追加直後の通信を遮断<br><br>SSH通信を処理<br># <font color="#FF0000">iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --name attacker -j DROP</font>　←attackerリストに記載されたIPを遮断<br><br># <font color="#FF0000">iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHConn</font>　←SSH接続をしてきたIPアドレスをSSHConnに追加<br># <font color="#FF0000">iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --rttl --name SSHConn -j SSHAttacker</font>　←60秒以内に3回アクセスしてきた通信をSSHAttackerへ引き渡す。<br><br>これで動くはず。<br>設定コマンドが長いのでファイルにコマンドを羅列し、shなんかで流すと次から楽だと思います。<br><br><br><font size="3">SSH接続されたときのフロー</font><br>１SSHの接続要求<br>２INPUTチェインにわたす。<br>３attackerリストに記載されたIPアドレスか確認。記載されていたら遮断。されていなければ次の処理。<br>４SSHConnリストへ追加、もしくは接続時間の更新。<br>５60秒以内に何回アクセスが来たか確認。<br>６3回未満なら通信を許可。3回目ならSSHAttackerチェインへわたす。<br>７SSHAttackerチェインにてattackerリストへ追加。<br>８遮断する。<br><br>こんな流れだと思ってます。<br>間違ってたら教えてくださいw<br><br>細かいとこも突っ込んで勉強したいけども他に勉強したいことがあるのでiptablesに関しては一旦終了。<br>次はLISPだ。<br>
]]>
</description>
<link>https://ameblo.jp/h1debl0/entry-11501922231.html</link>
<pubDate>Sun, 31 Mar 2013 16:28:12 +0900</pubDate>
</item>
<item>
<title>iptables</title>
<description>
<![CDATA[ こないだRSA認証の設定をすることでセキュアな通信ができるようになりました。たぶん。<br><br>でもやっぱり/var/log/auth.logにはいろんなところからアクセスされている形跡があり、小心者の自分としては怖いものがあるのでiptablesの設定を入れてみようと思います。<br><br><font size="3">今回設定する内容</font><br>tcp/22ポートに通信が来た際、1分間に3回失敗したら攻撃として認識し、以後アクセスをドロップする。<br><br>まず、iptablesってなんやねんというところですが、ただ単にfilterしてくれる機能と覚えてます。NATもしてくれるらしい。<br>さらにrecentによって動的なアクセス制御が可能になります。<br><br>まず現在の設定の確認。<br># <font color="#FF0000">iptables -L</font><br><font color="#00BFFF"><br>root@bt:~# iptables -L<br>Chain INPUT (policy ACCEPT)<br>target     prot opt source               destination         <br><br>Chain FORWARD (policy ACCEPT)<br>target     prot opt source               destination         <br><br>Chain OUTPUT (policy ACCEPT)<br>target     prot opt source               destination <br></font><br><br>見ての通りからっけつの状態です。<br><br>内容を見てみると、INPUT・FORWARD・OUTPUTとあります。<br>これらのことをテーブルと言います。<br>また、度々チェインという単語が出てくると思いますが、チェインはそのテーブルにかかれたルールのことをさします。<br><br>INPUTテーブルに記述されたチェインは、宛先が自身の通信。<br>OUTPUTテーブルに記述されたチェインは、送信元が自身の通信。<br>FORWARDテーブルに記述されたチェインは、宛先が他端末の通信。<br><br>今回はSSHサーバにiptablesの設定をするので、INPUTテーブルにチェインを追加します。<br><br><font size="3"><font color="#FF0000">追記</font></font><br><font color="#FF0000">どうやらテーブルとチェインについて勘違いしてたみたいです。<br>INPUT・OUTPUT・FORWARDがチェインと呼ばれるもので、テーブルはもう一つ上の階層みたい。<br>で、テーブルはfilter・nat・mangleの三つ。<br>今回設定するのはfilterテーブルのINPUTチェインとなる。</font><br><br><br># <font color="#FF0000">iptables -A INPUT -p tcp --syn --dport 22 -m recent --name attacker --set</font><br><br>-A INPUT ←INPUTへ追記する。<br>-p tcp ←tcpプロトコルを指定する。<br>--syn ←3wayハンドシェイクの起点となるパケットを対象とする。<br>--dport 22 ←Destination Port(宛先ポート)が22番の通信を対象とする。<br>-m recent ←recentモジュールの呼び出し。<br>--name attacker ←対象リストを呼び出し。<br>--set リストへアドレスを追加。<br><br><br># <font color="#FF0000">iptables -A INPUT -p tcp --syn --dport 22 -m recent --name attacker --update --seconds 60 --hitcount 3 -j DROP</font><br><br>--update ←条件に一致したときタイムスタンプの更新<br>--seconds 60 ←60秒<br>--hitcount 3 ←3回<br>-j DROP ←パケットを遮断する。<br><br>もう一度設定を確認。<br><font color="#00BFFF"><br>root@bt:~# iptables -L<br>Chain INPUT (policy ACCEPT)<br>target     prot opt source               destination         <br>           tcp  --  anywhere             anywhere            tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN recent: SET name: attacker side: source <br>DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN recent: UPDATE seconds: 60 hit_count: 3 name: attacker side: source <br><br>Chain FORWARD (policy ACCEPT)<br>target     prot opt source               destination         <br><br>Chain OUTPUT (policy ACCEPT)<br>target     prot opt source               destination <br></font><br><br>ちゃんと入ってそう。<br><br>ここで一つ自分が認識している勘違いに気づいた。<br>一定の条件にヒットしたものをattackerに記載して、それを弾くと思ってたんだけど、実際の動きは通信がきたものをすべてattackerに記録するみたい。<br>で、attackerに入っている記録を元に条件に当てはめて通信を許可するかどうかを判断するらしい。<br>いくつか検証してみないとなぁ。<br><br>まぁとりあえず以上の設定でauth.logは綺麗になってくれるはずです。<br>ちなみにattackerのリストです。<br># <font color="#FF0000">cat /proc/net/xt_recent/attacker</font><br><br>早速IPがいくつか登録されていました。<br>これでちょっと様子をみてみようかな。
]]>
</description>
<link>https://ameblo.jp/h1debl0/entry-11500923466.html</link>
<pubDate>Sat, 30 Mar 2013 01:57:23 +0900</pubDate>
</item>
<item>
<title>SSH設定（RSA認証）</title>
<description>
<![CDATA[ グローバルからのRSA認証にめっちゃハマったからメモメモ<br>環境は[蔵]-[global]-[fw]-[鯖]でFWにはxxx.xxx.xxx.xxx:22に接続が来たものはVIPを使ってSSH鯖に流す。<br><br><font size="3">大まかなインストールフロー</font><br>鯖操作<br>１鯖へSSHサービスのインストール<br>２SSHサービスのconfファイル設定<br>３ホスト認証用のキー作成<br>４キーを正しく配置<br><br>蔵操作<br>５蔵へSSH蔵のインストール<br>６ユーザ認証用のキー作成<br>７キーを正しく配置<br><br>鯖操作<br>８鯖でサービスの開始<br><br>蔵操作<br>９蔵から接続<br><br>では早速SSHの導入<br><br><font size="3">鯖側</font><br>まずはSSH鯖サービスのインストール<br># <font color="#FF0000">apt-get install openssh-server</font><br><br>sshdの設定<br># <font color="#FF0000">vim /etc/ssh/sshd_config</font><br>#HostKey /etc/ssh/ssh_host_dsa_key　←dsa使わないのでコメントアウト<br>PermitRootLogin without-password　←rootへのパスワード認証以外を許可<br>PasswordAuthentication no　←パスワード認証を禁止<br><br>なんか他にもいじくった気がするけど、結局上の変更だけで問題ないはずw<br><br>ホスト認証用のファイルを作成<br>どうやらssh接続をするときは二つのプロセスを踏むらしい。<br>1.ホスト認証<br>　蔵から鯖への接続先が正しいか。<br>2.ユーザ認証<br>　鯖は接続された蔵の接続を許可していいか。<br><br>まずはホスト認証で使う認証キーを作成<br>これは通常インストール時に自動的に作られるけど、なかったら作る。<br>後、/var/log/auth.logでCould notうんたらかんたらっていうssh_host_rsa_keyが<br>読み込めません的な時も再度作る。<br># <font color="#FF0000">ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key</font><br><br><font color="#00BFFF">root@bt:/etc/ssh# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key<br>Generating public/private rsa key pair.<br>Enter passphrase (empty for no passphrase): <br>Enter same passphrase again: <br>Your identification has been saved in /etc/ssh/ssh_host_rsa_key.<br>Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.<br>The key fingerprint is:<br>c9:c4:ab:02:42:0f:d4:96:91:35:78:0c:9b:48:1c:b7 root@bt<br>The key's randomart image is:</font><br><br>何回か質問されますが全部エンターでスルーしてください。<br>そうすると2つのファイルが出来上がる。<br>ssh_hostから始まるファイルが今回ssh-keygenで作成されたファイル<br><br><font color="#00BFFF"><br>root@bt:/etc/ssh# ll<br>合計 28<br>drwxr-xr-x   2 root root  4096 2013-03-28 13:46 ./<br>drwxr-xr-x 146 root root 12288 2013-03-28 13:56 ../<br>-rw-------   1 root root  1671 2013-03-28 13:46 ssh_host_rsa_key<br>-rw-r--r--   1 root root   389 2013-03-28 13:46 ssh_host_rsa_key.pub<br>-rw-r--r--   1 root root  2465 2013-03-28 13:45 sshd_config<br></font><br><br>ssh_host_rsa_keyは鯖が秘密鍵として持っておく。<br>ssh_host_rsa_key.pubは蔵が初回接続したときに取得し、公開鍵として蔵に保存される。<br>その時の蔵側のファイルは/root/.ssh/known_hostsとなる。<br>.pubとknown_hostsの中身を見ると「おー」ってなると思う。ってかなった。<br>※ここのknown_hostsは後で作成されます。<br><br>ここからは蔵側の操作<br><font size="3">蔵側</font><br>SSH蔵サービスのインストール<br># <font color="#FF0000">apt-get install openssh-client</font><br><br>ユーザ認証で使う認証キーを作成<br># ssh-keygen -t rsa<br>鯖と同様に何回か聞かれます。<br>・認証キー保存場所　←エンター<br>・パスワード　←好きなパスワード<br>・パスワード再入力　←同じパスワード<br><font color="#00BFFF">root@hide:/etc/ssh# ssh-keygen -t rsa<br>Generating public/private rsa key pair.<br>Enter file in which to save the key (/root/.ssh/id_rsa):<br>Enter passphrase (empty for no passphrase):<br>Enter same passphrase again:<br>Your identification has been saved in /root/.ssh/id_rsa.<br>Your public key has been saved in /root/.ssh/id_rsa.pub.<br>The key fingerprint is:<br>24:25:a6:78:88:eb:8f:ff:43:25:89:52:2f:41:72:13 root@hide<br>The key's randomart image is:</font><br><br>二つの認証キーが出来上がる。<br><font color="#00BFFF">root@hide:~/.ssh# ll<br>合計 16<br>drwx------  2 root root 4096  3月 28 13:50 ./<br>drwx------ 15 root root 4096  3月 28 13:51 ../<br>-rw-------  1 root root 1766  3月 28 13:50 id_rsa<br>-rw-r--r--  1 root root  391  3月 28 13:50 id_rsa.pub<br>root@hide:~/.ssh#</font><br><br><br>パーミッションの設定<br>これしないと怒られる。<br># <font color="#FF0000">chmod 600 /root/.ssh/id_rsa</font><br><br>id_rsaは秘密鍵としてそのまま蔵においておく。<br>id_rsa.pubは共有鍵として鯖にscpやusbを使って移動させる。<br><br>ここからまた鯖側の操作<br><font size="3">鯖側</font><br>蔵から持ってきたid_rsa.pubをauthorized_keysにリネームして/root/.ssh/に移動。<br># <font color="#FF0000">mv id_rsa.pub /root/.ssh/authorized_keys</font><br><br>※既にauthorized_keysがある場合はリダイレクトで追記する。<br># <font color="#FF0000">cat id_rsa.pub &gt;&gt; authorized_keys</font><br>間違っても&gt;&gt;を&gt;にしないように気をつけてください。<br>めんどくさいことになります。<br><br>最後に蔵と同様にパーミッションの設定。<br># <font color="#FF0000">chmod 600 /root/.ssh/authorized_keys</font><br># <font color="#FF0000">chmod 600 /etc/ssh/ssh_host_rsa_key</font><br><br>念願のsshサービス開始<br># <font color="#FF0000">service ssh start</font><br><br>蔵から接続<br># <font color="#FF0000">ssh xxx.xxx.xxx.xxx</font><br>ここでさっき言ったknown_hostsが登場します。<br>初回接続時は鯖からホスト認証の公開鍵を引っ張ってきます。<br><br><font color="#00BFFF">The authenticity of host xxx.xxx.xxx.xxx can't be established.<br>RSA key fingerprint is xx:xx:xx........<br>Are you sure you want to continue connecting (yes/no)?</font><br>yesでエンターを押すと一度切られる。<br><br>再接続<br># <font color="#FF0000">ssh xxx.xxx.xxx.xxx</font><br><font color="#00BFFF">Enter passphrase for key '/root/.ssh/id_rsa':</font><br>さっき入力したパスワードを入力してエンターでSSH接続完了<br><br><br><font size="3">まとめ</font><br>とりあえずSSHの大雑把なフローはこんな感じかな？<br>１蔵から鯖へSSH接続の要求がくる。<br>この時蔵のknown_hostsと鯖のssh_host_rsa_keyを使って認証を行い、ホストが正しいことを証明。<br><br>２次に鯖が許可をしていい蔵か確認をする。<br>この時蔵のid_rsaと鯖のauthorized_keysを使って認証を行い、許可しているユーザであることを証明。<br><br><font size="3">余談</font><br>結構外部から22番ポートへのアクセスがきます。<br>確認の方法はログを見てください。<br># <font color="#FF0000">tail -f /var/log/auth.log</font><br><br>今回RSAをなぜ導入したかと言うと、中国からのブルートフォースアタックを受けてrootを<br>のっとられたためです。<br>始めて外部にたいしてポートを開けたときは「個人のIPだし大丈夫だろーHAHAHA」とか<br>甘い考えを持っていたんですがのっとられて初めてセキュリティに対する考えが変わりました。<br><br>みなさんも気をつけてください。<br><br>以上でつ。
]]>
</description>
<link>https://ameblo.jp/h1debl0/entry-11499784455.html</link>
<pubDate>Thu, 28 Mar 2013 12:28:42 +0900</pubDate>
</item>
</channel>
</rss>
