ssh只允许指定的用户登陆
[ 2009/05/12 13:59 | by selboo ]
如何让ssh只允许指定的用户登录
方法1:在/etc/pam.d/sshd文件第一行加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers
onerr=fail
然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
方法2:pam规则也可以写成deny的
auth required pam_listfile.so item=user sense=deny file=/etc/sshusers
onerr=succeed
方法3:在sshd_config中设置AllowUsers,格式如
AllowUsers a b c
重启sshd服务,则只有a/b/c3个用户可以登陆
方法1:在/etc/pam.d/sshd文件第一行加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers
onerr=fail
然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
方法2:pam规则也可以写成deny的
auth required pam_listfile.so item=user sense=deny file=/etc/sshusers
onerr=succeed
方法3:在sshd_config中设置AllowUsers,格式如
AllowUsers a b c
重启sshd服务,则只有a/b/c3个用户可以登陆
Nginx + SSL 配置
[ 2009/05/08 18:40 | by selboo ]
安装nginx之前先安装 openssl 和 openssl-devel
编译nginx时使用 --with-http_ssl_module 就可以支持SSL了
然后需要生成服务器证书,没钱就用openssl自己作一个
openssl req -new -x509 -nodes -out eglic.crt -keyout eglic.key
增加一个虚拟主机
server {
listen 443;
ssl on;
ssl_certificate /opt/eglic.crt;
ssl_certificate_key /opt/eglic.key;
server_name selboo.com.cn;
charset gb2312;
index index.php index.html index.htm;
root /var/www/eglic;
location / {
index index.php index.html index.htm;
rewrite ^/show-([0-9]+)-([0-9]+)\.html$ /index.php?action=show&id=$1&page=$2 last;
rewrite ^/category-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&cid=$1&page=$2 last;
rewrite ^/archives-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&setdate=$1&page=$2 last;
rewrite ^/(archives|search|reg|login|index|links)\.html$ /index.php?action=$1 last;
rewrite ^/(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ /index.php?action=$1&page=$2 last;
}
location ~ .*\.php?$
{
fastcgi_pass 127.0.0.1:10086;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE eglic/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
}
}
编译nginx时使用 --with-http_ssl_module 就可以支持SSL了
然后需要生成服务器证书,没钱就用openssl自己作一个
openssl req -new -x509 -nodes -out eglic.crt -keyout eglic.key
增加一个虚拟主机
server {
listen 443;
ssl on;
ssl_certificate /opt/eglic.crt;
ssl_certificate_key /opt/eglic.key;
server_name selboo.com.cn;
charset gb2312;
index index.php index.html index.htm;
root /var/www/eglic;
location / {
index index.php index.html index.htm;
rewrite ^/show-([0-9]+)-([0-9]+)\.html$ /index.php?action=show&id=$1&page=$2 last;
rewrite ^/category-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&cid=$1&page=$2 last;
rewrite ^/archives-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&setdate=$1&page=$2 last;
rewrite ^/(archives|search|reg|login|index|links)\.html$ /index.php?action=$1 last;
rewrite ^/(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ /index.php?action=$1&page=$2 last;
}
location ~ .*\.php?$
{
fastcgi_pass 127.0.0.1:10086;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE eglic/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
}
}
nginx源码分析-源码结构
[ 2009/05/08 18:36 | by selboo ]
本文主要简单介绍nginx源码目录结构、程序编译流程、如何构建学习nginx的环境等。
本文以及后续nginx源码分析文章是基于nginx当前(2009-02-27)的稳定版本0.6.35进行的分析,该版本的src目录下共有96615行代码,共记234个源码文件。
注:本系统的文章为本人学习做笔记用,为源码分析,而非模块的编写,可能会存在问题。
1.1 源码目录简述
nginx的源码目录结构层次明确,从自动编译脚本到各级的源码,层次都很清晰,是一个大型服务端软件构建的一个范例。以下是源码目录结构说明:
1.2 程序编译流程
nginx有许多值得学习的地方,它的编译脚本也不例外。nginx的编译脚本非由autoconf等相关工具生成,都是由作者手工编写的。
列举几个与后续开发相关的目录并做说明:
src/auto/modules 根据configure和编译环境的条件生成相应的模块信息。见:ngx_modules.c
src/auto/sources 定义了不同的模块的生成规则,包括相关的源文件、依赖等,最终编译过程中会生成相应的库文件。
nginx在编译安装的过程中会生成objs目录,其中包括编译过程中生成的库文件,以及相关的配置文件,进入目录会存在以下文件:
ngx_auto_config.h 生成的与程序运行相关的宏
ngx_modules.c 由编译生成的模块相关的定义
src 该目录下有许多生成的库文件,作为最终生成nginx使用
1.3 构建nginx学习环境
分析nginx源码的目的是学习nginx高效的处理能力的体系结构,并能将其思想,甚至于nginx的框架借用于服务端的开发。从可扩展的模块机制、内存管理、事件系统等各个方面都有许多值得学习的地方。
但nginx的源代码的核心包间的关联度较高,其它核心的几个数据结构,包括ngx_connection\ngx_array\ngx_buf\ngx_command等等几乎存在于代码每一个角落,我在第一次看0.1.0的时候(0.1.0是网上能找到的nginx的最早版本),发现很难将它们独立出来去对这些数据结构进行测试和学习,于是总结出自己学习的一些方法如下:
学习和熟悉核心数据结构的方法:
1、先熟悉常用的数据结构的使用,包括以下:
ngx_pool\ngx_connection\ngx_array\ngx_buf\
ngx_command\ngx_log\ngx_event\ngx_cycle\ngx_str等
对于这些数据结构的使用方法的原理基本熟悉,学习的方法就是看他们的实现以及http和mail中的使用,熟能生巧。
2、删除nginx.c中main函数的主体,在1的基础上学习其它内容,这样就不需要过多关注nginx的复杂的编译脚本就能学习到相应的知识。
附带基于nginx-0.1.0框架实现的简单echo服务端,程序读取用户输入内容,然后将该内容输出,定时断开连接。
终端:
目录结构:
如果需要该部分代码的朋友可以留下Email地址。
下一节准备对nginx的启动流程做分析。
本文以及后续nginx源码分析文章是基于nginx当前(2009-02-27)的稳定版本0.6.35进行的分析,该版本的src目录下共有96615行代码,共记234个源码文件。
注:本系统的文章为本人学习做笔记用,为源码分析,而非模块的编写,可能会存在问题。
1.1 源码目录简述
nginx的源码目录结构层次明确,从自动编译脚本到各级的源码,层次都很清晰,是一个大型服务端软件构建的一个范例。以下是源码目录结构说明:
├─auto 自动编译安装相关目录
│ ├─cc 针对各种编译器进行相应的编译配置目录,包括Gcc、Ccc等
│ ├─lib 程序依赖的各种库,包括md5,openssl,pcre等
│ ├─os 针对不同操作系统所做的编译配置目录
│ └─types
├─conf 相关配置文件等目录,包括nginx的配置文件、fcgi相关的配置等
├─contrib
├─html index.html
└─src 源码目录
├─core 核心源码目录,包括定义常用数据结构、体系结构实现等
├─event 封装的事件系统源码目录
├─http http服务器实现目录
├─mail 邮件代码服务器实现目录
├─misc 该目录当前版本只包含google perftools包
└─os nginx对各操作系统下的函数进行封装以及实现核心调用的目录。
│ ├─cc 针对各种编译器进行相应的编译配置目录,包括Gcc、Ccc等
│ ├─lib 程序依赖的各种库,包括md5,openssl,pcre等
│ ├─os 针对不同操作系统所做的编译配置目录
│ └─types
├─conf 相关配置文件等目录,包括nginx的配置文件、fcgi相关的配置等
├─contrib
├─html index.html
└─src 源码目录
├─core 核心源码目录,包括定义常用数据结构、体系结构实现等
├─event 封装的事件系统源码目录
├─http http服务器实现目录
├─mail 邮件代码服务器实现目录
├─misc 该目录当前版本只包含google perftools包
└─os nginx对各操作系统下的函数进行封装以及实现核心调用的目录。
1.2 程序编译流程
nginx有许多值得学习的地方,它的编译脚本也不例外。nginx的编译脚本非由autoconf等相关工具生成,都是由作者手工编写的。
列举几个与后续开发相关的目录并做说明:
src/auto/modules 根据configure和编译环境的条件生成相应的模块信息。见:ngx_modules.c
src/auto/sources 定义了不同的模块的生成规则,包括相关的源文件、依赖等,最终编译过程中会生成相应的库文件。
nginx在编译安装的过程中会生成objs目录,其中包括编译过程中生成的库文件,以及相关的配置文件,进入目录会存在以下文件:
ngx_auto_config.h 生成的与程序运行相关的宏
ngx_modules.c 由编译生成的模块相关的定义
src 该目录下有许多生成的库文件,作为最终生成nginx使用
1.3 构建nginx学习环境
分析nginx源码的目的是学习nginx高效的处理能力的体系结构,并能将其思想,甚至于nginx的框架借用于服务端的开发。从可扩展的模块机制、内存管理、事件系统等各个方面都有许多值得学习的地方。
但nginx的源代码的核心包间的关联度较高,其它核心的几个数据结构,包括ngx_connection\ngx_array\ngx_buf\ngx_command等等几乎存在于代码每一个角落,我在第一次看0.1.0的时候(0.1.0是网上能找到的nginx的最早版本),发现很难将它们独立出来去对这些数据结构进行测试和学习,于是总结出自己学习的一些方法如下:
学习和熟悉核心数据结构的方法:
1、先熟悉常用的数据结构的使用,包括以下:
ngx_pool\ngx_connection\ngx_array\ngx_buf\
ngx_command\ngx_log\ngx_event\ngx_cycle\ngx_str等
对于这些数据结构的使用方法的原理基本熟悉,学习的方法就是看他们的实现以及http和mail中的使用,熟能生巧。
2、删除nginx.c中main函数的主体,在1的基础上学习其它内容,这样就不需要过多关注nginx的复杂的编译脚本就能学习到相应的知识。
附带基于nginx-0.1.0框架实现的简单echo服务端,程序读取用户输入内容,然后将该内容输出,定时断开连接。
终端:
-bash-3.2# !te
telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
ops init connection
test
test
connection timedout
Connection closed by foreign host.
telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
ops init connection
test
test
connection timedout
Connection closed by foreign host.
目录结构:
├─core
├─event
│ └─modules
├─ops
│ ├─ngx_ops.c
│ └─ngx_ops.h
└─os
└─unix
├─event
│ └─modules
├─ops
│ ├─ngx_ops.c
│ └─ngx_ops.h
└─os
└─unix
如果需要该部分代码的朋友可以留下Email地址。
下一节准备对nginx的启动流程做分析。
获得中国电信、网通、铁通IP段的四种方法
[ 2009/05/07 23:12 | by selboo ]
因为都是在线生成和查询,所以要耗费时间,我已经生成电信,网通等的ip段.红色字体为程序或者命令.
一.PHP脚本,本人兴趣所写,如有不足,请更正修改,使用方法,保存为ip.php,因为在shell/命令行下使用的,运行方法为:php ip.php :
$iplist=file_get_contents("http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest");
$ipsplit=split("[\n]+",$iplist);
foreach($ipsplit as $val){
if(preg_match("/apnic\|CN\|ipv4\|/",$val)){
list($nic,$CN,$ver,$ip,$mask)=preg_split("/\|/",$val);
$iparray['set'][]=array("ip"=>$ip,"mask"=>$mask);
}
}
foreach($iparray['set'] as $val){
echo $val['ip']."\t".(32-log($val['mask'],2))."\n";
$flag=GetWhois($val['ip']);
switch($flag){
case "CHINANET":
$fpc=fopen("CHINANET","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
case "CNC":
$fpc=fopen("CNC","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
break;
case "CRTC":
$fpc=fopen("CRTC","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
default:
$fpc=fopen("OTHERS","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
}
}
function GetWhois($IP){
$rootwhois = 'whois.apnic.net';
$buffer1 = ReadSocket($rootwhois,$IP);
$flag="";
$buffer_result=nl2br($buffer1);
if(preg_match("/CHINANET/",$buffer_result)){
$flag="CHINANET";
return $flag;
}
if(preg_match("/CNC/",$buffer_result)){
$flag="CNC";
return $flag;
}
if(preg_match("/CRTC/",$buffer_result)){
$flag="CRTC";
return $flag;
}
if(!preg_match("/CHINANET|CRTC|CNC/",$buffer_result)){
$flag="OTHERS";
return $flag;
}
}
function ReadSocket($whois,$ip)
{
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
echo "Sorry,Can't fsockopen it";
}
else
{
fputs($sock,"$ip\n");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}
?>
方法二.在Linux/Unix/BSD下,保存以下内容,比如保存为ip_apinc.sh,改其权限为可以执行,然后运行。
#!/bin/sh
FILE=/home/ip_apnic
rm -f $FILE
rm -f CNC
rm -f OTHER
rm -f CHINANET
rm -f CRTC
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask
echo $ip/$mask>> cn.net
NETNAME=`whois $ip | grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'`
echo $NETNAME;
case $NETNAME in
CNC)
echo $ip/$mask >> CNC
;;
CNCGROUP)
echo $ip/$mask >> CNC
;;
CHINANET)
echo $ip/$mask >> CHINANET
;;
CHINATELECOM)
echo $ip/$mask >> CHINANET
;;
CRTC)
echo $ip/$mask >> CRTC
;;
*)
echo $ip/$mask >> OTHER
;;
esac
done
方法三,这个也是在Linux/Unix/BSD下的:
APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况:
-bash-2.05b$ http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz
-bash-2.05b$ tar xzvf ripe-dbase-client-v3.tar.gz
-bash-2.05b$ cd whois-3.1
-bash-2.05b$ ./configure
-bash-2.05b$ make;make install完成上述编译安装工作后,我们开始获取IP地址段;
中国网通:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/cnc
中国电信:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/chinanet
中国铁通:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc
打开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用grep和awk简单过滤就可以了:)
方法四,在win下的,利用电信路由生成器.exe/网通路由生成器.exe,这两个工具来生成.
一.PHP脚本,本人兴趣所写,如有不足,请更正修改,使用方法,保存为ip.php,因为在shell/命令行下使用的,运行方法为:php ip.php :
$iplist=file_get_contents("http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest");
$ipsplit=split("[\n]+",$iplist);
foreach($ipsplit as $val){
if(preg_match("/apnic\|CN\|ipv4\|/",$val)){
list($nic,$CN,$ver,$ip,$mask)=preg_split("/\|/",$val);
$iparray['set'][]=array("ip"=>$ip,"mask"=>$mask);
}
}
foreach($iparray['set'] as $val){
echo $val['ip']."\t".(32-log($val['mask'],2))."\n";
$flag=GetWhois($val['ip']);
switch($flag){
case "CHINANET":
$fpc=fopen("CHINANET","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
case "CNC":
$fpc=fopen("CNC","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
break;
case "CRTC":
$fpc=fopen("CRTC","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
default:
$fpc=fopen("OTHERS","a+");
fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."\n");
break;
}
}
function GetWhois($IP){
$rootwhois = 'whois.apnic.net';
$buffer1 = ReadSocket($rootwhois,$IP);
$flag="";
$buffer_result=nl2br($buffer1);
if(preg_match("/CHINANET/",$buffer_result)){
$flag="CHINANET";
return $flag;
}
if(preg_match("/CNC/",$buffer_result)){
$flag="CNC";
return $flag;
}
if(preg_match("/CRTC/",$buffer_result)){
$flag="CRTC";
return $flag;
}
if(!preg_match("/CHINANET|CRTC|CNC/",$buffer_result)){
$flag="OTHERS";
return $flag;
}
}
function ReadSocket($whois,$ip)
{
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
echo "Sorry,Can't fsockopen it";
}
else
{
fputs($sock,"$ip\n");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}
?>
方法二.在Linux/Unix/BSD下,保存以下内容,比如保存为ip_apinc.sh,改其权限为可以执行,然后运行。
#!/bin/sh
FILE=/home/ip_apnic
rm -f $FILE
rm -f CNC
rm -f OTHER
rm -f CHINANET
rm -f CRTC
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask
echo $ip/$mask>> cn.net
NETNAME=`whois $ip | grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'`
echo $NETNAME;
case $NETNAME in
CNC)
echo $ip/$mask >> CNC
;;
CNCGROUP)
echo $ip/$mask >> CNC
;;
CHINANET)
echo $ip/$mask >> CHINANET
;;
CHINATELECOM)
echo $ip/$mask >> CHINANET
;;
CRTC)
echo $ip/$mask >> CRTC
;;
*)
echo $ip/$mask >> OTHER
;;
esac
done
方法三,这个也是在Linux/Unix/BSD下的:
APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况:
-bash-2.05b$ http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz
-bash-2.05b$ tar xzvf ripe-dbase-client-v3.tar.gz
-bash-2.05b$ cd whois-3.1
-bash-2.05b$ ./configure
-bash-2.05b$ make;make install完成上述编译安装工作后,我们开始获取IP地址段;
中国网通:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/cnc
中国电信:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/chinanet
中国铁通:-bash-2.05b$ whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc
打开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用grep和awk简单过滤就可以了:)
方法四,在win下的,利用电信路由生成器.exe/网通路由生成器.exe,这两个工具来生成.
#!/bin/sh
apnic_ip_info="apnic_ip_info"
apnic_all_ip="apnic_all_ip"
save_dir="./"
if [ -e "$apnic_ip_info" ];then
rm -f $apnic_ip_info
fi
if [ -e "$apnic_all_ip" ];then
rm -f $apnic_all_ip
fi
if [ -e $save_dir/CNC_GROUP ];then
rm -f $save_dir/CNC_GROUP
fi
if [ -e $save_dir/CHINATELECOM_GROUP ];then
rm -f $save_dir/CHINATELECOM_GROUP
fi
if [ -e $save_dir/CERNET_GROUP ];then
rm -f $save_dir/CERNET_GROUP
fi
if [ -e $save_dir/CRTC_GROUP ];then
rm -f $save_dir/CRTC_GROUP
fi
if [ -e $save_dir/CHINAMOBILE_GROUP ];then
rm -f $save_dir/CHINAMOBILE_GROUP
fi
if [ -e $save_dir/CHINAUNICOM_GROUP ];then
rm -f $save_dir/CHINAUNICOM_GROUP
fi
if [ -e $save_dir/OTHERNET_GROUP ];then
rm -f $save_dir/OTHERNET_GROUP
fi
wget -q http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $apnic_ip_info
grep "apnic|CN|ipv4|" "$apnic_ip_info" | awk -F'|' '{print $4}' > "$apnic_all_ip"
while read line
do
isp_info=`whois $line | grep -E "(mnt-|netname)" | awk '{print $2}' | xargs`
into_cnc=`echo $isp_info | sed -n '/CNC/p'`
into_chinatelecom=`echo $isp_info | sed -n '/CHINANET/p'`
into_cernet=`echo $isp_info | sed -n '/CERNET/p'`
into_crtc=`echo $isp_info | sed -n '/CRTC/p'`
into_cmcc=`echo $isp_info | sed -n '/CMCC/p'`
into_unicom=`echo $isp_info | sed -n '/UNICOM/p'`
if [ "${into_cnc}" != "" ];then
echo "$line CNC_GROUP" >> ${save_dir}/CNC_GROUP
elif [ "${into_chinatelecom}" != "" ];then
echo "$line CHINATELECOM_GROUP" >> ${save_dir}/CHINATELECOM_GROUP
elif [ "${into_cernet}" != "" ];then
echo "$line CERNET_GROUP" >> ${save_dir}/CERNET_GROUP
elif [ "${into_crtc}" != "" ];then
echo "$line CRTC_GROUP" >> ${save_dir}/CRTC_GROUP
elif [ "${into_cmcc}" != "" ];then
echo "$line CHINAMOBLIE_GROUP" >> ${save_dir}/CHINAMOBILE_GROUP
elif [ "${into_unicom}" != "" ];then
echo "$line CHINAUNICOM_GROUP" >> ${save_dir}/CHINAUNICOM_GROUP
else
echo "$line OTHERNET_GROUP" >> ${save_dir}/OTHERNET_GROUP
fi
done<$apnic_all_ip
apnic_ip_info="apnic_ip_info"
apnic_all_ip="apnic_all_ip"
save_dir="./"
if [ -e "$apnic_ip_info" ];then
rm -f $apnic_ip_info
fi
if [ -e "$apnic_all_ip" ];then
rm -f $apnic_all_ip
fi
if [ -e $save_dir/CNC_GROUP ];then
rm -f $save_dir/CNC_GROUP
fi
if [ -e $save_dir/CHINATELECOM_GROUP ];then
rm -f $save_dir/CHINATELECOM_GROUP
fi
if [ -e $save_dir/CERNET_GROUP ];then
rm -f $save_dir/CERNET_GROUP
fi
if [ -e $save_dir/CRTC_GROUP ];then
rm -f $save_dir/CRTC_GROUP
fi
if [ -e $save_dir/CHINAMOBILE_GROUP ];then
rm -f $save_dir/CHINAMOBILE_GROUP
fi
if [ -e $save_dir/CHINAUNICOM_GROUP ];then
rm -f $save_dir/CHINAUNICOM_GROUP
fi
if [ -e $save_dir/OTHERNET_GROUP ];then
rm -f $save_dir/OTHERNET_GROUP
fi
wget -q http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $apnic_ip_info
grep "apnic|CN|ipv4|" "$apnic_ip_info" | awk -F'|' '{print $4}' > "$apnic_all_ip"
while read line
do
isp_info=`whois $line | grep -E "(mnt-|netname)" | awk '{print $2}' | xargs`
into_cnc=`echo $isp_info | sed -n '/CNC/p'`
into_chinatelecom=`echo $isp_info | sed -n '/CHINANET/p'`
into_cernet=`echo $isp_info | sed -n '/CERNET/p'`
into_crtc=`echo $isp_info | sed -n '/CRTC/p'`
into_cmcc=`echo $isp_info | sed -n '/CMCC/p'`
into_unicom=`echo $isp_info | sed -n '/UNICOM/p'`
if [ "${into_cnc}" != "" ];then
echo "$line CNC_GROUP" >> ${save_dir}/CNC_GROUP
elif [ "${into_chinatelecom}" != "" ];then
echo "$line CHINATELECOM_GROUP" >> ${save_dir}/CHINATELECOM_GROUP
elif [ "${into_cernet}" != "" ];then
echo "$line CERNET_GROUP" >> ${save_dir}/CERNET_GROUP
elif [ "${into_crtc}" != "" ];then
echo "$line CRTC_GROUP" >> ${save_dir}/CRTC_GROUP
elif [ "${into_cmcc}" != "" ];then
echo "$line CHINAMOBLIE_GROUP" >> ${save_dir}/CHINAMOBILE_GROUP
elif [ "${into_unicom}" != "" ];then
echo "$line CHINAUNICOM_GROUP" >> ${save_dir}/CHINAUNICOM_GROUP
else
echo "$line OTHERNET_GROUP" >> ${save_dir}/OTHERNET_GROUP
fi
done<$apnic_all_ip
sysctl.conf优化
[ 2009/05/07 09:52 | by selboo ]
===============================================================
所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了
===============================================================
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
=============================================
通过源路由,攻击者可以尝试到达内部IP地址 –包括RFC1918中的地址,所以不接受源路由信息包可以防止你的内部网络被探测。
================================================
net.inet.tcp.drop_synfin=1
==================================================
所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了
===============================================================
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
=============================================
通过源路由,攻击者可以尝试到达内部IP地址 –包括RFC1918中的地址,所以不接受源路由信息包可以防止你的内部网络被探测。
================================================
net.inet.tcp.drop_synfin=1
==================================================