分类目录归档:Linux

一键安装L2TP VPN脚本

1.安装L2TP VPN方法
第一种: openswan+xl2tpd 安装后,我发现这个只能用WINDOW连接,IOS系统连接不了VPN,所以被迫使用第二种方法。
第二种: strongswan+xl2tpd 安装后,IOS、WINDOW系统都可以连接成功。
2.strongswan+xl2tpd 一键安装脚本(Centos6.5亲测成功)

rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y  update
yum -y install strongswan
yum -y install xl2tpd
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl -p
iptables -A INPUT -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT # 強制l2tp透過ipsec存取
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
ip_addr=` ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' |cut -d: -f2 | awk '{ print $1}'`
echo "conn %default
        ikelifetime=24h
        keylife=24h
        rekeymargin=30m 
        keyingtries=1
        rekey=no
 
 
conn l2tp
        keyexchange=ikev1 # IKE版本
        left=$ip_addr
        leftsubnet=0.0.0.0/0
        leftprotoport=17/1701 # l2tp udp流量
        authby=secret # PSK驗證
        leftfirewall=no # 不要讓strongswan更改防火牆
        right=%any # 任意IP
        rightprotoport=17/%any # 任意port udp流量
        type=transport # ipsec transport mode 
        auto=add">>/etc/strongswan/ipsec.conf
echo ': PSK "fuck_great_firewall"'>>/etc/strongswan/ipsec.secrets
sed 's/\[global\].*$/&\nlisten-addr ='$ip_addr'/g' /etc/xl2tpd/xl2tpd.conf
sed -i 's/^mtu.*/mtu 1200/g' /etc/ppp/options.xl2tpd
sed -i 's/^mru.*/mru 1200/g' /etc/ppp/options.xl2tpd
echo 'login'>>/etc/ppp/options.xl2tpd
echo 'test * test123 *'>>/etc/ppp/chap-secrets
service strongswan start
service xl2tpd start
chkconfig strongswan on
chkconfig xl2tpd on

3.安装完成后,具体信息如下:
连接方式:L2TP
VPN用户名:test
VPN密码:test123
密钥:fuck_great_firewall

4.本文仅供学习交流

linux安全配置检查项

1.查看系统口令长度、强度检查

查看系统口令长度

cat /etc/login.defs

PASS_MIN_LEN=8 #设定最小用户密码长度为8 越大越好

查看系统口令强度

cat /etc/pam.d/system-auth
 
password required /lib/security/$ISA/pam_cracklib.so retry=3 minlen=9 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

从上面使用pam_cracklib.so的策略看,要求用户修改密码时必须要满足9位,并且密码中至少要包含一个大写字母、小写字母、数字和特殊符号

2.系统口令防破解时间限制检查

cat /etc/pam.d/system-auth

在第一行下即#%PAM-1.0的下面添加:
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

各参数解释:
even_deny_root 也限制root用户;

deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户

unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;

3.系统文件权限检查

ls -l /etc/passwd 644 or 600 or 000
ls -l /etc/shadow 600 or 000
ls -l /etc/group 644 or 600 or 000

4.系统用户缺省访问权限

cat /etc/login.defs 查看umask 是否为027 or 077

5.查看是否开启日志

cat /var/log/messages
cat /var/log/secure

6.查看开机启动项

rc_local=`find / -name rc.local`
if [ "$rc_local" ]
then
find / -name rc.local|while read rc_filename
do
echo '[*]filename: '$rc_filename
cat $rc_filename
echo ''
done
else
echo '[x]Find rc_local not exists'
fi

7.查看定时任务

crontab -l

8.查看登录过用户

last|awk '{print $1}'|sort|uniq

9.查看成功登录的用户

if [ -f /var/log/secure ]
then
cat /var/log/secure|grep -i 'Accept'|awk '{print $1" "$2" "$3" "$11}'
else
echo '[x]/var/log/secure file not found'
fi

利用shell实现把drops.wooyun.org漏洞分析文章转成PDF

利用shell实现把drops.wooyun.org漏洞分析的所有文章转成PDF. PS:其实也可以弄成乌云月报的:)

ubuntu测试 执行成功(其他没有测试),附上PDF效果图片(PDF下载地址 http://pan.baidu.com/s/1i3LxEsP)

准备工具:wkhtmltopdf (可自行google 安装方法)

分析该页面(http://drops.wooyun.org/category/papers)后发现:
漏洞分析文章有11页、每页最多有10篇文章的url。因此我们可以用for循环11次,可以把所有文章的url都取出来,然后对每篇文章进行正则匹配,只要文章内容,不要评论。

脚本原理知道了,我们就用linux shell实现吧:)

shell 脚本下载地址:http://pan.baidu.com/s/1sj2Q0jz

然后linux run: wkhtmltopdf /tmp/drop.html /tmp/drops.pdf

 

改善shell加速实现统计优酷会员数

改善shell使其更快统计出优酷会员数,你可能想到了,我可能用模拟多线程的方法解决这个问题。

接下来我贴出单线程的代码(比上篇文章多个功能就是计算shell运行时间)

start=`date +%s`    #计算时间
declare i
declare youku_content
 
 
for i in $(seq 1 100)
do
 
	base64_uid=`echo $i | perl -e 'use MIME::Base64; $_ = encode_base64(<>); print;'`
	url="http://i.youku.com/u/U${base64_uid}"
	echo $i $url
	mytest=`GET "$url"`
	vipsuper=`echo ${mytest%subscribe_pNode*}|grep ico__vipsuper`
	if [ "$vipsuper" != "" ]
	then
		vip_youku=$[$vip_youku+1]
		echo "youku id:$i vip youku sum:$vip_youku"
	fi
 
done
end=`date +%s`  #计算时间
dif=$[$end-$start]
echo $dif  #输出时间

输出结果如下:

用时107

接下来我用多线程实现的代码:

start=`date +%s`
declare i
declare youku_content
declare mod
declare threads=10  #设置线程数
declare vip_youku=0
 
for ((count=1;count<=100;count++))
do
 
	base64_uid=`echo $count | perl -e 'use MIME::Base64; $_ = encode_base64(<>); print;'`
	url="http://i.youku.com/u/U${base64_uid}"
	echo $count  $url
	{
	mytest=`GET $url`
	vipsuper=`echo ${mytest%subscribe_pNode*}|grep ico__vipsuper`
	if [ "$vipsuper" != "" ]
	then
		#vip_youku=$[$vip_youku+1]
		#echo "youku id:$count  vip_sum:$vip_youku"
	fi
	} &
	mod=$(( $count%$threads ))  
	if [ "$mod" -eq "0" ]
	then
		wait  
	fi
done
end=`date +%s`
dif=$[$end-$start]
echo $dif

输出结果如下:

用时30

通过上面2个图片结果可以看出来,多线程在时间上是很有优势的。

shell实现分析youku会员用户数

写这边文章,主要是看优酷视频的时候。几十秒的预告片,竟然要1分钟的广告,所以我就想知道有多少人被逼无奈买优酷的会员。接下来进入正题!!(有点像渗透信息收集,哈哈)

通过观察优酷的用户
A用户
http://i.youku.com/u/UNQ==
B用户
http://i.youku.com/u/UNg==

我发现一种规律,用户共同的URL为
http://i.youku.com/u/U
所以后面的字符串可能为base64编码,经过测试确定是base64编码
A用户
http://i.youku.com/u/UNQ== ->youku_id为5
B用户
http://i.youku.com/u/UNg== ->youku_id为6
以此类推,可以推理出优酷的用户数已经超6亿

接下来我们是要分析每个用户页面里有木有会员的关键字,然后进行for循环即可遍历出所有会员用户的个数。

通过上图可以发现优酷会员的标志是唯一的,然后以订阅作为字符串结束标志即可(为什么要作为结束表示,因为下面有留言版,要是有会员留言容易有误差)

接下来是shell实现优酷会员数代码

for i in $(seq 1 6000000)
do
 
	base64_uid=`echo $i | perl -e 'use MIME::Base64; $_ = encode_base64(<>); print;'`
	url="http://i.youku.com/u/U${base64_uid}"
	mytest=`GET "$url"`
	vipsuper=`echo ${mytest%subscribe_pNode*}|grep ico__vipsuper`
	if [ "$vipsuper" != "" ]
	then
		vip_youku=$[$vip_youku+1]
		echo "youku id:$i vip youku sum:$vip_youku"
	fi
 
done

看看效果把

顺便放出用php实现的代码(加了个功能,统计删除用户的数目)

$youku_vip=0;
$youku_del=0;
 
for($i=1;$i<630000000;$i++){
 
$url='http://i.youku.com/u/U'.base64_encode($i);
 
$content=@file_get_contents($url);
if($content){
	$youku_member_contents=substr($content,0,strpos($content,'<div class="subscribe" id="subscribe_pNode">'));
 
	if(preg_match('/ico__vipsuper/',$youku_member_contents)){
	$youku_vip++;
	echo 'youku_id:'.$i.' youku vip num:'.$youku_vip."\r\n";
	}
}else{
	$youku_del++;
	echo 'youku_id:'.$i.' delete youku num:'.$youku_del."\r\n";
}
 
}
 
echo 'youku vip count:'.$youku_vip;

效果图片如下