ORBIT SPACE
普通科に通う凡人学生のサーバー管理に関する外部記憶装置
-
11月20No Comments
先日からの不正アクセスからの状況から色々セキュリティー関連を調べていたら
恐ろしい物を見つけました。一般的にサーバをダウンさせるには大量のマシンから大量のリクエストを送信する必要がありますが、今回紹介したツールはApacheのセキュリティーホールを突き、少数のマシンから少数のリクエストでサーバをダウンさせてしまいます。
非常に危険で恐ろしいツールですね。
当サーバでも対策を急がないといけないです(汗cpanでIO::Socket::SSLがインストールできない場合は下記が入ってない可能性がありますので追加します。
# apt-get install openssl libssl-dev -
11月19
ポートスキャンプログラムの構造解説と作成 Perl
Filed under: Linux (Server), PERSONAL COMPUTER, PROGRAM; Tagged as: Linux (Server), PC, Perl, PROGRAMNo Comments原本に一部間違いや遠回りをしていると思われる点がありましたので修正してあります。
#!/usr/bin/perl #-------------------------------------------------# # Name: Port Scan Program # 原作: Perl scan port # (URL: http://www.perlmonks.org/?node_id=806461) # 解説: ORBIT SPACE # 目的: ポートスキャンプログラムの構造の # 理解とモジュール利用方法等の理解 # を行う為に今回構造の解説とプログ # ラムの変更を行いました。 #-------------------------------------------------# #モジュール使用宣言 use IO::Socket; # Very Simple Scan Port Write in Perl # MAIN PROG print "Perl Scan Port V1.0\n\n"; # User Var # perl port.pl 127.0.0.1のように入力されたIPアドレスを取得 my $iptarget = $ARGV[0]; unless($ARGV[0]){die "MISSING IP ADRESS\n\n";} print "Interesting ports on $iptarget\n\n"; print "PORT // STATE // SERVICE\n"; # Scanning fonction # ポート番号をインクリメントして作成する。 for(my $iport = 0; $iport != 65537; $iport++){ # 指定されたIPアドレスのポートへ接続 if (my $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $iptarget, PeerPort => $iport, Timeout => "5")){ # サービス内容(http,ftp,ssh等)の表示し格変数へ格納 (my $name, my $aliases, my $port_number, my $protocol_name) =+ getservbyport($iport , "tcp"); # サービス名が不明な場合NAを格納 unless($name){$name = "NA";} # 出力 print "$iport open $name\n"; # 切断 close($remote); } } print "Scan Finish\n"; -
11月7
容量の大きいファイル検索スクリプト Bash
Filed under: Linux (Server), PERSONAL COMPUTER, PROGRAM; Tagged as: Bash, Linux (Server), PC, PROGRAMNo Commentsこのごろ鯖をファイル置き場として利用する方々の為にせっせと毎回コマンド叩くのが
面倒なのでスクリプトを作成しました。
珍しくBash(SH)で書きました^^
やっぱ慣れていないのでPerlのようにすらすら書けないですね~
効率悪すぎ!!とか言わないで~(汗#!/bin/sh # 初期設定(メール送信宛先、件名、コマンド) address="メール送信宛先@" subject="容量の大きいファイル" exe="find /home -name "*.exe" -size +100000k" iso="find /home -name "*.iso" -size +100000k" cso="find /home -name "*.cso" -size +100000k" zip="find /home -name "*.zip" -size +100000k" rar="find /home -name "*.rar" -size +100000k" cab="find /home -name "*.cab" -size +100000k" lzh="find /home -name "*.lzh" -size +100000k" avi="find /home -name "*.avi" -size +100000k" wmv="find /home -name "*.wmv" -size +100000k" wma="find /home -name "*.wma" -size +100000k" df="df"; # 件名の文字コードをJISに変換 subject=`echo $subject | nkf -j` # メール送信(コマンド結果はSJISに変換) mail -s "$subject" $address << HONBUN ====================[ exe ]==================== `$exe | nkf -s` ====================[ iso ]==================== `$iso | nkf -s` ====================[ cso ]==================== `$cso | nkf -s` ====================[ zip ]==================== `$zip | nkf -s` ====================[ rar ]==================== `$rar | nkf -s` ====================[ cab ]==================== `$cab | nkf -s` ====================[ lzh ]==================== `$lzh | nkf -s` ====================[ avi ]==================== `$avi | nkf -s` ====================[ wmv ]==================== `$wmv | nkf -s` ====================[ wma ]==================== `$wma | nkf -s` =============================================== HONBUN # 終了 exit
-
11月7No Comments
どうしてもカウンターがリセットされる現象を回避できなくて頭を悩ましていました^^;
どうもflock関数(ファイルロック)が理解できていなかったと言うのが結論。
にしても酷いな・・・・勉強の大切さを理解しました。カウンターでこのざまなら掲示板はどうなるんだ?
最初から作り直したほうが早いかもな・・・・・インストーラも効率悪かったし^^;すばらしく分かりやすく解説していただいたサイト
CGIやDBのロックと同時実行制御#!/usr/bin/perl ####################################################### #スクリプト名:ROS カウンター Ver.1.03 #作者:ORBIT #著作権:ORBIT SPACEに帰属します。 #著作権表示は一切行いません。自由にお使いください。 ####################################################### #各種設定 #------------------------------------------------------ #イメージの保存ディレクトリ $imgs = './img/'; #ログの保存場所 $ip_log = 'ip.log'; $counts_log = 'counts.log'; #------------------------------------------------------ #IPを取得 $ip = $ENV{'REMOTE_ADDR'}; #GETのデータから位を取得 $buf = $ENV{'QUERY_STRING'}; --$buf; #過去ログの取得 open (IN_OUT,"+<$counts_log"); flock IN_OUT, 2; $counts_data = <IN_OUT>; open (IP_IN_OUT,"+<$ip_log"); flock(IP_IN_OUT, 1); @ip_data = <IP_IN_OUT>; chomp($ip_data[0]); if($ip eq $ip_data[0]){&img;} $ip_data[0] = "$ip_data[0]\n"; #インクリメントして保存 if($counts_data eq ""){$counts_data = "00000000"}; ++$counts_data; seek IN_OUT, 0, 0; print IN_OUT $counts_data; close(IN_OUT); #IPを記録 unshift @ip_data, "$ip\n"; seek IP_IN_OUT, 0, 0; print IP_IN_OUT @ip_data; close(IP_IN_OUT); &img; # 画像表示 sub img{ #過去ログを取得し逆順に並べ替える @list = split(//,$counts_data); @img_list = reverse (@list); $nu = $img_list[$buf]; open(IG,"$imgs$nu.gif"); print "Content-type: image/gif\n\n"; binmode(IG); binmode(STDOUT); print <IG>; close(IG); exit; } -
11月5No Comments
基礎となるプログラムです。
先日紹介したダウンロードの方法をPerlにて最小限に表現してみました。#!/usr/bin/perl ######################################### #ソフト名:YoutubeダウンロードURL生成β #作成日:2009/11/5 #作者:ORBIT #著作権:ORBIT SPACEへ帰属します。 ######################################### #LWPモジュールを使用する use LWP; print"Youtube\tURL\n>"; $Target = <STDIN>; #正規表現にてURLの情報を取得 $Target =~ /http:\/\/(.*)\/watch\?v=(\w*)/; my $host = $1; my $id = $2; #取得した情報からURLを生成 $URL = 'http://www.youtube.com/get_video_info?&video_id='."$id"; #HTMLの取得 my $soce = LWP::UserAgent->new->request( HTTP::Request->new(GET => "$URL"))->content; #TOKENの取得を行う $soce =~ /.*token=(.*)\&thumbnail_url=.*/; my $t = $1; #TOKENを出力 print"$t\n"; #Downlad可能なURLを出力 print'http://youtube.com/get_video?video_id='."$id".'&t='."$t\n";





COMMENT