用户
搜索
  • TA的每日心情
    奋斗
    昨天 16:23
  • 签到天数: 142 天

    连续签到: 2 天

    [LV.7]常住居民III

    版主

    pypy

    Rank: 7Rank: 7Rank: 7

    18

    主题

    567

    帖子

    1526

    魔法币
    收听
    3
    粉丝
    15
    注册时间
    2015-11-12

    签约作者

    发表于 2017-4-12 18:30:23 1154026
    本帖最后由 xiaoye 于 2017-4-13 12:12 编辑
    难易程度:★★★
    阅读点:linux;python;web安全;
    文章作者:xiaoye
    文章来源:i春秋
    关键字:网络渗透技术

    前言
    linux被越来越多的企业使用,因此掌握一些基本的linux安全加固是有必要的,今天我们来浅谈一些企业常用的linux加固方式,当然仅仅一篇文章是不可能面面俱到的,大牛们勿喷啦^_^
    ---------------------
    醒目的广告位 http://edu.51cto.com/lecturer/user_id-12576913.html 团队课程上线51cto,有兴趣的小伙伴可以支持一下,感谢啦
    ---------------------

    一、防止ssh暴破之denyhosts
    说到denyhosts,不得不说linux里面两个重要的文件:hosts.deny、hosts.allow
    hosts.deny里面存放禁止访问的设定,.allow里面存放的是允许访问的设定
    比如
    .allow里写入 sshd:210.12.123.*:allow 就代表允许此ip段对sshd服务的使用
    同样.deny里写入sshd:210.12.123.*就代表禁止此ip段连上本机的ssh
                                                           1.PNG
    查看22端口开放情况,已经被ssh使用:
                                                              2.1.PNG
    我们在hosts.deny里面加入如下:
                                                                2.PNG
    这个时候,我们的.allow是空的,因此.deny对访问控制有绝对的控制权,此时访问ftp和ssh服务只有被拒绝的份:
                                                                    3.PNG
    我们有时候是会闹出“乌龙”,自己把自己给禁了也是常有的事,这时候,我们要给信任的主机ip加入.allow白名单:
                                                                       4.PNG
    再来试试:
                                                                       5.PNG
    ok了,因为.allow的“权力”比.deny的大。

    我们一定要注意一点:
    /etc/hosts.allow 的设定优先于 /etc/hosts.deny
    就是说,一个ip既在.allow里,又在.deny里,那么以.allow为准,此ip依旧有权限使用某服务

    其实今天要说的denyhosts,就是在此基础上写的p小程序:

    DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。

    安装有点小麻烦,在这里贴图比较多:
    先去网上下载压缩包
                                                              denyhosts1.PNG
    解压:
                                                                 dh2.PNG
                                                                    dh3.PNG
    安装,因为使用python写的 python setup.py install:
                                                                   dh4.PNG
    安装目录默认:
                                                                       dh5.PNG
    切进安装目录:
                                                                             dh6.PNG
    将目录下的两个文件重命名后才能使用:
                                                                             dh7.PNG
    常见的选项:
                                                                             dh8.PNG
                                                                             dh9.PNG
    有关于常见的选项,大家可以看看http://www.cnblogs.com/suihui/p/3899381.html 因为太多了。。哈哈
    改变文件所属以及赋予相应的权限,并将其添加软连接(类似于win下的快捷方式)进/etc/init.d/,这个目录大家一定很熟悉,我们启动某个应用或者服务时,一种方法就是/etc.init.d/服务 start,当然service xxx start也是一样 centos7下就是systemctl start/stop/restart xx.service:


                                                           dh12.PNG
    安装以及配置好了以后,我们启动服务来试试效果:
    先清了之前实验时候.allow里面的白名单,然后故意输错几次密码

                                                                    dh13.PNG
    回看hosts.deny,该ip已经被拉黑了
    dh14.PNG
    关于防止ssh ftp爆破的,其实有个fail2ban做的相当好,比denyhosts功能要强大一些,有兴趣的小伙伴可以去试试水

    二、简单的防止Ping探测存活主机
    很多时候服务器都会被ping,来探测该主机是否存活,以及判断其他一些信息,如果,我们不想让人ping到,但是有不能影响正常web服务,怎么办
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all,将临时禁止ping,重启后失效
                                                                                   banping1.PNG

    echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 将重新启用,ping将生效


    永久禁止ping的方法:
    echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf,注意是>>不是>,>>是追加写入,>就是覆盖了,万一覆盖了重要文件可就gg了
                                                                      banping3.PNG

                                                                    banping2.PNG
    /sbin/sysctl -p可以让这条命令即时生效

    三、神奇又强大的linux访问控制工具--iptables
    iptables真的是异常强大的访问控制工具,有关于iptables,详细的文章推荐一个给大家 http://blog.chinaunix.net/uid-26495963-id-3279216.html 对iptables讲解的很透彻

    iptables有5条规则链
                    1.PREROUTING (路由前)
                    2.INPUT (数据包流入口)
                    3.FORWARD (转发管卡)
                    4.OUTPUT(数据包出口)
                    5.POSTROUTING(路由后)
    其实一般用INPUT和OUTPUT的最多,控制进入网卡接口的数据包和流出网卡接口的数据包是最常做的规则

    iptables的规则定义:
    iptables [-t table] COMMAND chain CRETIRIA -j ACTION
    对于command,大家可以先了解下面两个最常用的

    -A:追加,在当前链的最后新增一个规则-D num:删除,明确指定删除第几条规则

    比如这么一条规则:
    iptables -A INPUT -s 192,168.1.1 -d 192.168.1.2 -p ICMP --icmp--type echo-request -j DROP

    就是禁止了源ip为
    192,168.1.1目标ip为192,168.1.2的ICMP 答应请求报文

    其中-s指定源ip -d指定目标ip -p指定数据包协议类型 -j后面跟的是对此数据包的处理策略,DROP是丢弃 ,ACCEPT就是接收,诸如此类

    四、利用iptables和python scapy建立简单的ids网络入侵检测小程序
    python 里神奇的库特别多,scapy绝对算一个,为什么呢,因为用它,两行代码可以构建一个简易的wireshark!!
    demo:
    [Python] 纯文本查看 复制代码
    from scapy.all import sniff
    
    sniff(iface='ens33', count=0, filter='icmp', prn=lambda x: x.show())

    效果见截图:
                                                                   00.PNG
    不停地检测数据包,在屏幕上打印出数据包,还支持过滤,强大的很

    好了,直接放出来程序吧,其实早就想发出来了,这个是最近老师布置的一个考核试题,构建小程序来检测smurf,并且与iptables联动进行防御,在屏幕中打印出攻击报文,之所以今天才发出来,是因为今天下午刚刚答辩完,然后就可以放出来了

    注意:这个小程序是防御smurf攻击的,但是这个不是重点,不需要关注,重点是掌握过滤并检测出自己想要的数据包,联动iptables进行防御的思想,这个小程序本身很简单,大牛勿喷……^_^
    [Python] 纯文本查看 复制代码
    '''
    @author: xiaoye
    '''
    from scapy.all import srp,Ether,ARP,conf,sniff
    from scapy.utils import wrpcap
    from subprocess import PIPE, Popen
    from argparse import ArgumentParser
    import time
    
    arg = ArgumentParser(description='smurf scan && iptables defend by xiaoye')
    arg.add_argument('-l','--level',help='sniff level',dest='scapy_level',default=1,type=int)
    arg.add_argument('-w','--write',help='write position',dest='wr_position',default='demo.pcap')
    result = arg.parse_args()
    
    
    global a
    a = 1
    
    def iptables_policy(a):
        print 'smurf attack !! create iptables policy to defend it...\n the attacker mac is:'
        print a
        #broadcast
        print 'iptables -A INPUT -m mac --mac-source ' + a + ' -j DROP \n'
        Popen('iptables -A INPUT -m mac --mac-source ' + a + ' -j DROP ', stdin=PIPE, stdout=PIPE, shell=True)
        time.sleep(2)
        print 'iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP\n'
        Popen('iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP', stdin=PIPE, stdout=PIPE, shell=True)
        time.sleep(2)
        #broadcast icmp
        print 'iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP\n '
        Popen('iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP', stdin=PIPE, stdout=PIPE, shell=True)
        time.sleep(2)
        #icmp 3/s limit
        print 'iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT\n'
        Popen('iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT', stdin=PIPE, stdout=PIPE, shell=True)
        time.sleep(2)
        #policy
        #Popen('iptables -A INPUT -j DROP')
        
    
    def callback(packet):
        global a
        
        if a == 1 and result.scapy_level == 2:
            iptables_policy(packet[Ether].src)
            #print 'xiaoye'
        a = a + 1
        wrpcap(result.wr_position, packet)
        if result.scapy_level == 1 or result.scapy_level == 2:
            return packet.show()
        if result.scapy_level == 3:
            Popen('echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all', stdin=PIPE, stdout=PIPE, shell=True)
            #exit(0)
        
        
    #filter smurf:
    #filter="icmp and src 192.168.43.65 and dst 192.168.43.205"
    if __name__ == "__main__":
        sniff(iface="ens33", count=0, filter="icmp and src 172.20.10.6 and dst 172.20.10.15", prn=callback)
    
    



    filter="icmp and src 172.20.10.6 and dst 172.20.10.15"  这里src填充自己的ip,dst填充广播地址,用来过滤数据包
    源程序依赖于python库scapy,linux的iptables防火墙以及python自带库及模块

    思路:scapy嗅探ens33网卡流过的数据包,并用sniff方法的filter参数过滤规则过滤出具有smurf特征的数据包,并打印在屏幕上,联动iptables建立防火墙规则,进行smurf防御;

    程序有三个level,
    level 1只打印出smurf攻击报文;
    level 2打印出攻击报文,并与iptabes联动,建立防火墙规则,阻断与攻击源的通信并对icmp echo request报文的接收频率做出限制,实现阻断smurf攻击;
    level 3,临时禁止icmp报文,即一切icmp报文将不会得到响应,这里只是应急策略,用level 2就足够了。

    浏览器崩了。。图片只能传几张了。。这是我的实验报告上的一张演示图 :
    注:这是防御程序,攻击可以用kali里的hping3    hping3 --icmp --spoof targetip(目标ip) broadcastip(广播地址)
    当攻击开始后,防御程序-l 2时会自动添加iptables规则,并且打印出攻击报文
                                                                       233.PNG
    重点还是iptables规则,这里写了4条规则,第一条是从攻击报文中检测对方的mac地址,将此mac地址的数据包全部丢弃,其余:
    iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP

    INPUT链添加规则,-m指用扩展模块 此条规则对目标地址是广播地址的数据包进行丢弃

    iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP

    INPUT链添加规则,-p匹配数据包中类型,此条规则较上条规则,添加了icmp类型的限制

    iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT

    INPUT链添加规则,对icmp请求应答报文,进行3/s的频率限制
                                                      

    总结
    浏览器有点问题,先写成这样吧,大牛勿喷,有什么error的话请留言,一定会改正

    dh12.PNG

    评分

    参与人数 1魔法币 +5 收起 理由
    小拉拉002 + 5 感谢发布原创作品,i春秋论坛因你更精彩!.

    查看全部评分

    本帖被以下淘专辑推荐:

    http://blog.163.com/sy_butian/欢迎交流
    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    来自 8#
    发表于 2017-4-18 16:28:39
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    50
    都是一些很不错的小技巧,后面的网络入侵检测小程序提供了实际得到程序,写的不错。

    使用道具 举报 回复
    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    沙发
    发表于 2017-4-13 11:07:42
    沙发支持我小叶表哥
    使用道具 举报 回复
    发表于 2017-4-13 11:53:13
    yyyxy 发表于 2017-4-13 11:07
    沙发支持我小叶表哥

    谢谢蛋总
    http://blog.163.com/sy_butian/欢迎交流
    使用道具 举报 回复
    发表于 2017-4-13 13:40:24
    支持楼主,写的不错。
    使用道具 举报 回复
    在补充两条吧,  sudo的使用~~~~还有AIDE的使用,配合ssh规则就比较安全了。
    使用道具 举报 回复
    发表于 2017-4-15 12:50:03
    小拉拉002 发表于 2017-4-15 11:33
    在补充两条吧,  sudo的使用~~~~还有AIDE的使用,配合ssh规则就比较安全了。

    嗯呐,谢谢表哥指点
    http://blog.163.com/sy_butian/欢迎交流
    使用道具 举报 回复
    xiaoye 发表于 2017-4-15 12:50
    嗯呐,谢谢表哥指点

    表弟表弟.....可不敢冒充表哥。。。。。
    使用道具 举报 回复
    发表于 2017-4-19 11:19:24
    很好的文章,学习了
    使用道具 举报 回复
    发表于 2017-4-19 11:52:10
    66666666666
    使用道具 举报 回复
    发表于 2017-4-20 15:48:45
    很好,学习了
    使用道具 举报 回复
    发表于 2017-4-21 20:29:46
    可以得
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册