美文网首页
Linux 安全工具

Linux 安全工具

作者: 单纯小码农 | 来源:发表于2020-03-23 21:52 被阅读0次

    Linux 安全工具

    主机|端口扫描

    nmap

    https://nmap.org/

    主要功能:

    1. 主机发现
    2. 端口扫描
    3. 版本检测
    4. OS猜测

    主机发现

    类似于ping,发送探测包到指定主机,如果得到回复则说明主机在线

    nmap -sn IP|CIDR
    

    原理:

    • 内网

      • 发送arp广播
        Address Resolution Protocol 地址解析协议
    • 外网

      • 发送ICMP echo request

      • 发送tcpSYN443

      • 发送tcpACK80
        Why ACK to 80 and SYN to 443?
        提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。

      • 许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文,除非 连接目标是那些公开的服务器像公司网站或者邮件服务器。 这可以阻止其它进入组织的连接,同时也允许用户访问互联网。 这种无状态的方法几乎不占用防火墙/路由器的资源,因而被硬件和软件过滤器 广泛支持。当这样的无状态防火墙规则存在时,发送到关闭目标端口的SYN ping探测 (-PS) 很可能被封锁。这种情况下,ACK探测格外有闪光点,因为它正好利用了这样的规则。

        另外一种常用的防火墙用有状态的规则来封锁非预期的报文。 这一特性已开始只存在于高端防火墙,但是这些年类它越来越普遍了。 SYN探测更有可能用于这样的系统,由于没头没脑的ACK报文 通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS又指定-PA来即发送SYN又发送ACK。

      • 发送ICMP timestamp request

    只要获取到一个回应包,就认为此主机在线

    端口扫描

    nmap -sS -SU IP|CIDR -p T:TCP-PORT,U:UDP-PORT
    
    image

    原理:

    • TCP SYN 扫描 (-sS):TCP半开放扫描,不建立完整的TCP连接。向目标端口发送SYN,如果收到SYNACK回复,认为端口开放(open);如果收到RST,认为端口关闭(closed);如果无回应,认为端口被防火墙屏蔽(filtered)。
    • UDP扫描(-sU):向目标端口发送探测包,如果收到ICMP port unreachable,则说明端口未开放;如果无回应,则端口可能开放或被拦截(open|filtered)。

    -p PORT-RANGE

    --top-ports NUM

    版本检测

    nmap -sV IP|CIDR -p PORT 
    

    OS猜测

    不同OS对tcp/IP协议的实现方式可能有些许差异,nmap就利用这一点,向目标主机发送精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。

    而nmap有一个常见OS指纹特征数据库,将获取到的指纹进行对比,如果匹配就直接返回OS信息,如果无匹配就会进行猜测。

    当目标主机至少存在一个开放端口和一个关闭端口时,OS猜测才能正常进行。

    nmap -O IP|CIDR
    

    防火墙

    iptables

    CentOS 7及之后默认安装了firewalld替代iptables作为防火墙工具。

    个人习惯换回iptables:

    systemctl stop firewalld
    systemctl disable firewalld
    systemctl mask firewalld
    
    yum -y install iptables-services
    systemctl enable iptables
    systemctl restart iptables
    

    Linux系统中真正实现防火墙功能的是系统的netfilter框架,而不论是firewalld还是iptables-services都只是一个类似于用户代理的身份,方便用户使用它向内核管理规则。

    table

    根据规则功能的不同可分为四表:

    1. raw:控制数据包是否被追踪
    2. mangle:修改数据包的类型、TTL等
    3. nat:网络地址转换
    4. filter:过滤数据包

    CHAIN

    默认有5个Chain:INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING

    match

    • 基本:源ip地址(source ip,-s)、目标ip地址(destination ip,-d)
    • 扩展:源端口(--sport)、目标端口(--sport)
    • 协议:-p {tcp|udp|all|icmp ...}

    TARGET

    1. ACCEPT:放行

    2. DROP:丢弃

    3. REJECT:拒绝

      ...

    iptables命令

    iptables OPTIONS [CHAIN_NAME]查看(某个chain)的规则

    -L 显示规则列表,如果后面接CHAIN_NAME则表示只查看某个chain的

    -n 禁用域名解析

    --line或--line-numbers 显示序号

    -v 显示更多信息

    -t 查看某个表,默认filter

    iptables {-I|-A} [number] [-s|-d ipaddress] [-p {tcp|udp|all}] [--dport|sport port] -j {ACCEPT|DROP...}

    在每条Chain中,遵循从上到下的顺序进行匹配,因此顺序是非常重要的

    iptables -D {rule_details | number}

    使用iptables进行的规则操作都是临时的,重启或reload都会丢失当前配置的规则。要永久生效需要保存规则到/etc/sysconfig/iptables

    iptables-save打印配置到屏幕,配合重定向>即可保存到文件

    口令破解

    John the Ripper

    破解加密密码

    Linux下用户和密码存储在/etc/shadow/etc/passwd下,采用SHA-512加密,同时采用了salt盐值,保证相同的密码其加密后的字符串也不同。

    john --single

    john --wordlist=password.lst

    hydra

    [图片上传失败...(image-9de074-1584971513588)]

    密码爆破工具。

    • 可对多种服务的账号及密码进行爆破,如web登录、SSH、数据库、FTP、RDP(Windwos远程桌面)等等。
    • 支持多线程。

    SSH安全

    [图片上传失败...(image-e162f9-1584971513588)]

    fail2ban

    介绍

    基于认证日志工作,通过扫描日志中的关键字,来更新防火墙规则,从而在指定时间内拒绝某ip的连接。

    配置

    配置目录/etc/fail2ban/

    主配置文件/etc/fail2ban/jail.conf

    自定义配置文件目录/etc/fail2ban/jail.d/

    jail.conf可能会随着版本更新被覆盖。
    因此建议把自定义的配置放置在jail.d下,而不是直接修改jail.conf。
    jail.d下的配置(*.local或*.conf)会覆盖jail.conf的相关配置。

    过滤器目录/etc/fail2ban/filter.d

    动作配置文件目录/etc/fail2ban/action.d

    fail2ban日志/var/log/fail2ban.log

    fail2ban能够降低暴力破解的速度,但不能减弱弱口令的风险。

    在SSH上的应用

    自定义配置文件/etc/fail2ban/jail.d/sshd.local

    [sshd]
    enabled = true
    port = 22
    findtime = 60
    maxretry = 10
    bantime = 120
    filter = sshd
    banaction = iptables-allports
    ignoreip = 127.0.0.1/8 192.168.0.0/16
    logpath = /var/log/secure
    

    使用systemctl restart fail2ban 运行fail2ban服务

    修改配置后,使用systemctl reload fail2ban 重载配置

    fail2ban通过向iptables内添加规则来达到效果,如果重启了iptables,fail2ban添加的规则会消失(因为这些规则并未持久化到iptables规则文件中),fail2ban便会失效,因此重启iptables后也需要重启fail2ban服务

    fail2ban-client命令

    fail2ban-client status 当前运行的jail

    fail2ban-client reload

    fail2ban-client status JAIL_NAME 某个jail的状态

    会显示当前时间段内失败的次数,以及被ban掉的ip

    fail2ban-client set JAIL_NAME banip IPADDR 手动ban掉某个ip

    fail2ban-client set JAIL_NAME unbanip IPADDR 手动unban某个ip

    fail2ban-client set JAIL_NAME addignoreip IPADDR 将某个ip加到白名单内(重启失效)

    fail2ban-client set JAIL_NAME delignoreip IPADDR 从白名单内删除某个ip

    fail2ban-client get JAIL_NAME ignoreip 查看白名单

    在nginx上的应用

    一个非常简单的示例:限制某个ip在单位时间内的请求次数,防止某些攻击

    1. 新建过滤器 /etc/fail2ban/filter.d/nginx-test-limit.conf

      [Definition]
      failregex = <HOST>.*HTTP/1.1
      

      使用正则表达式来匹配

    2. 新建jail /etc/fail2ban/jail.d/nginx-test-limit.local

      [nginx-test-limit]
      enabled = true
      port = http,https
      findtime = 60
      maxretry = 10
      bantime = 20
      logpath = /data/log/nginx_access.log
      banaction = iptables-allports
      

      jail名需要与过滤器文件名相同

    沙箱

    firejail

    介绍

    https://firejail.wordpress.com/

    firejail为不受信任的应用程序提供有限的运行环境和资源。

    安装

    wget https://phoenixnap.dl.sourceforge.net/project/firejail/firejail/firejail-0.9.60-1.x86_64.rpm && yum localinstall firejail-0.9.60-1.x86_64.rpm
    

    使用

    • firejail 启动一个bash沙箱

    • firejail COMMAND 在沙箱里运行指定的命令

    • firejail [OPTIONS] COMMAND

      --help                    https://firejail.wordpress.com/features-3/man-firejail/
      
      --blacklist=filename  将某文件/路径加到黑名单,使沙箱程序不能访问
      --whitelist=filename  将某文件/路径加到白名单(只有程序指定的路径能被加到白名单)
      --env=name=value      配置环境变量
      --private                 禁止沙箱读取home下的文件,创建一个新的空的home目录,家目录中的文件会在沙箱退出后被删除
      --get=name|pid filename   从沙箱中提取某个文件
      --put=name|pid src-filename dest-filename
                            向沙箱里发送文件
      --name=name               命名
      --list
      --join=name|pid           连接到沙箱       
      --net=none                禁止此沙箱联网
      --shutdown=name|pid       关闭某个沙箱
      

    配置

    目录 /etc/firejail下有很多(约800+)配置文件,对应不同的命令沙箱配置

    配置文件man页面

    漏洞扫描

    nessus

    官网: http://www.nessus.org/

    免费版:最多扫描16个ip

    相关文章

      网友评论

          本文标题:Linux 安全工具

          本文链接:https://www.haomeiwen.com/subject/psbgyhtx.html