zoukankan      html  css  js  c++  java
  • linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包

    搭建CA服务器
    CA服务是给服务器发放数字证书,被通信双方信任,独立的第三方机构

    也免费的ca证书:https://certbot.eff.org

    国内常见的CA机构
    中国金融认证中心(CFCA)
    中国电信安全认证中心(CTCA)
    北京数字证书认证中心(BJCA)

    PKI公钥基础设施
    一套标准的密钥管理平台
    通过公钥加密,数字证书技术确保信息安全

    PKI体系的基本组成
    权威认证机构(CA)
    数字证书库,密钥备份及恢复系统
    证书作废系统,应用接口

    ——————————————————————————————————————————————
    OpenSSL加密工具

    实现ssl/tls协议及各种加密应用
    创建并管理私钥,公钥,证书,证书服务
    使用公钥加解密
    使用各种算法进行加解密
    计算信息摘要

    对称加密:
    enc 算法 -e -in 输入文件 -out 输出文件(-e加密)
    enc 算法 -d -in 输入文件 -out 输出文件(-d解密)

    实例:
    在ceshiji(192.168.4.10)上部署ca服务器
    思路:
    配置ca签署环境
    为ca服务器生成私钥
    为ca服务器创建根证书
    共享根证书
    [root@ceshiji pki]# ls
    CA ca-trust consumer entitlement java nssdb product product-default rpm-gpg rsyslog tls
    [root@ceshiji ~]# vim /etc/pki/tls/openssl.cnf(配置ca签署环境)
    40 [ CA_default ]
    42 dir = /etc/pki/CA(ca签署工作目录)
    43 certs = $dir/certs(发出去的证书存放处)
    44 crl_dir = $dir/crl
    45 database = $dir/index.txt(证书索引文件,默认在目录下没有)
    50 certificate = $dir/my-ca.crt(根证书存放位置及名字,名字自定义,)
    51 serial = $dir/serial(证书编号文件,默认在目录下没有)
    55 private_key = $dir/private/ca.key(私钥存放处和私钥名字,名字可以自定义)
    84 [ policy_match ](申请的证书请求是否一样,match必须,supplied可选)
    85 countryName = match(国家)
    86 stateOrProvinceName = match(省/州)
    87 organizationName = match(公司名)
    88 organizationalUnitName = optional
    89 commonName = supplied
    128 [ req_distinguished_name ]
    129 countryName = Country Name (2 letter code)
    130 countryName_default = CN(国家)
    131 countryName_min = 2
    132 countryName_max = 2
    135 stateOrProvinceName_default = beijing(省份)
    138 localityName_default = beijing(市)
    141 0.organizationName_default = hydra(单位)
    148 organizationalUnitName_default = ope(部门,可写可不写)
    [root@ceshiji CA]# touch index.txt(创建证书索引文件,发出去过哪些证书)
    [root@ceshiji CA]# echo 01 > serial(创建发放证书的编号文件)

    [root@ceshiji ~]# cd /etc/pki/CA/private/(进入目录)
    [root@ceshiji private]# man openssl(查看帮助)
    [root@ceshiji private]# openssl genrsa -des3 2048 > ca.key(为CA服务器生成私钥,私钥名字要和配置文件里的一样)
    Enter pass phrase:(输入保护私钥的密码)
    Verifying - Enter pass phrase:(确认密码)
    [root@ceshiji private]# chmod 600 ca.key (安全起见。设置权限)

    [root@ceshiji ]# cd /etc/pki/CA/(进入CA目录)
    [root@ceshiji CA]# openssl req -new -x509 -key /etc/pki/CA/private/ca.key -days 365 > my-ca.crt(创建根证书,名字也要和配置文件里的一样)
    Enter pass phrase for /etc/pki/CA/private/ca.key:(输入私钥密码)
    Common Name (eg, your name or your server's hostname) []:www.Anonymous.net(ca名)
    [root@ceshiji CA]# ls
    certs crl index.txt my-ca.crt newcerts private serial

    [root@ceshiji ~]# yum -y install httpd
    [root@ceshiji ~]# mkdir /var/www/html/ca
    [root@ceshiji ~]# cp /etc/pki/CA/my-ca.crt /var/www/html/ca/(共享根证书)
    [root@ceshiji ~]# /etc/init.d/httpd start ; chkconfig httpd on
    [root@158 ~]# firefox http://192.168.4.10/ca(客户端访问测试)

    实例:
    配置http+ssl
    在网站服务器67上配置https默认监听443端口,实现数据加密传输

    网站服务器配置:
    创建私钥
    使用私钥生成证书请求文件,并把证书请求文件上传给ca服务器
    [root@67 ~]# yum -y install httpd
    [root@67 ~]# echo web67 > /var/www/html/test.html
    [root@67 ~]# echo hydra > /var/www/html/index.html
    [root@67 ~]# /etc/init.d/httpd start ; chkconfig on
    [root@67 ~]# cd /etc/pki/tls/private/
    [root@67 private]# openssl genrsa 2048 > www.key(生成私钥,不需要输入密码)
    [root@67 private]# openssl req -new -key www.key > /root/www.csr(生成证书)
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:hydra
    Organizational Unit Name (eg, section) []:ope
    Common Name (eg, your name or your server's hostname) []:www.Anonymous.net
    [root@67 ~]# scp www.csr 192.168.4.10:/root/(上传证书给ca服务器)

    ca服务器配置:
    签发数字证书,并把证书下发给网站服务器
    [root@ceshiji ~]# cat www.csr(查看证书请求文件)
    [root@ceshiji certs]# cd /etc/pki/CA/certs/
    [root@ceshiji certs]# openssl ca -in /root/www.csr > www.crt(签收证书)
    [root@ceshiji certs]# scp www.crt 192.168.4.67:/root/(下发证书)

    网站服务器配置:
    配置网站服务在运行时加载自己的私钥和数字证书,并重启网站服务
    [root@67 ~]# yum list | grep -i ssl
    mod_ssl(需要安装模块)
    [root@67 ~]# yum -y install mod_ssl
    [root@67 ~]# grep -v -E '^#|^$' /etc/httpd/conf.d/ssl.conf(查看文件)
    LoadModule ssl_module modules/mod_ssl.so(实现加密传输加载的模块)
    Listen 443(监听443端口)
    <VirtualHost _default_:443>(虚拟主机)
    SSLEngine on(on启用加密功能)
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt(证书文件路径)
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key(私钥文件路径)
    [root@67 ~]# mv www.crt /etc/pki/tls/certs/(把证书移动到加载目录下)
    [root@67 ~]# vim /etc/httpd/conf.d/ssl.conf(编辑文件)
    SSLCertificateFile /etc/pki/tls/certs/www.crt(改证书名字)
    SSLCertificateKeyFile /etc/pki/tls/private/www.key(改私钥名字)
    [root@67 ~]# /etc/init.d/httpd restart
    [root@67 ~]# netstat -utnalp | grep http(监听80和443端口)
    tcp 0 0 :::80 :::* LISTEN 2600/httpd
    tcp 0 0 :::443 :::* LISTEN 2600/httpd

    配置网站服务器接收到访问80端口的请求时,转发到443端口
    [root@67 ~]# vim /etc/httpd/conf/httpd.conf
    <IfModule ssl_module>(地址重写模块,默认没有,要添加)
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    </IfModule>
    RewriteEngine on(启用地址重写)
    RewriteCond %{SERVER_ROOT} !^443$(规则)
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R](跳转)
    [root@67 ~]# /etc/init.d/httpd restart
    客户端测试:
    [root@158 ~]# firefox http://192.168.4.10/ca(下载根证书)
    [root@158 ~]# firefox http://192.168.4.67/

    实例:
    配置mail+ssl
    需安装postfix、dovecot、cyrus-sasl
    相关协议及端口:
    smtp 25 +tls/ssl
    pop3 110
    pop3S 995
    imap 143
    imaps 993
    邮件服务器配置
    [root@mail ~]# cd /etc/pki/tls/private/
    [root@mail private]# openssl genrsa 2048 > mail.key(生成私钥,不需要输入密码)
    [root@mail private]# openssl req -new -key mail.key > /root/mail.csr(生成证书)
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:hydra
    Organizational Unit Name (eg, section) []:ope
    Common Name (eg, your name or your server's hostname) []:www.mail.net
    [root@mail ~]# scp mail.csr 192.168.4.10:/root/(上传证书给ca服务器)

    ca服务器配置:
    签发数字证书,并把证书下发给网站服务器
    [root@ceshiji ~]# cat mail..csr(查看证书请求文件)
    [root@ceshiji certs]# cd /etc/pki/CA/certs/
    [root@ceshiji certs]# openssl ca -in /root/mail.csr > mail.crt(签收证书)
    [root@ceshiji certs]# scp mail.crt 192.168.4.12:/root/(下发证书)

    邮件服务器配置
    [root@mail ~]# mv mail.csr /etc/pki/tls/certs/(把证书文件移动到目录下)
    配置加密发送邮件/etc/init.d/postfix
    [root@mail ~]# yum -y install cyrus-sasl-plain cyrus-sasl cyrus-sasl-lib(需要服务)
    [root@mail ~]# /etc/init.d/saslauthd start(开启服务)
    [root@mail ~]# vim /etc/postfix/main.cf
    smtpd_use_tls = yes(开启tls加密,默认没有。要手动写)
    smtpd_tls_key_file = /etc/pki/tls/private/mail.key(私钥目录)
    smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt(证书目录)
    [root@mail ~]# /etc/init.d/postfix restart

    配置加密接收邮件/etc/init.d/dovecot
    [root@mail ~]# yum -y install dovecot(需安装服务)
    [root@mail ~]# cd /etc/dovecot/conf.d/
    [root@mail conf.d]# vim 10-ssl.conf(更改配置文件)
    [root@mail ~]# cd /etc/pki/tls/certs/
    [root@mail certs]# cp mail.crt /etc/pki/dovecot/certs(拷贝证书)
    [root@mail ~]# cd /etc/pki/tls/private/
    [root@mail private]# cp mail.key /etc/pki/dovecot/private(拷贝私钥)
    ssl = yes(去掉注释)
    ssl_cert = </etc/pki/dovecot/certs/mail.crt(证书名)
    ssl_key = </etc/pki/dovecot/private/mail.key(私钥名)
    [root@mail ~]# /etc/init.d/dovecot restart(查看端口)
    tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 4608/dovecot
    tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 4608/dovecot

    客户端测试(在邮件软件里设置收发邮件时使用的协议)

    —————————————————————————————————————————————————————————————————————

    扫描与抓包
    为什么要扫描?
    以获取一些公开数据/非公开数据信息为目的
    检测潜在的风险
    查找可攻击目标
    收集设备/主机/系统/软件信息
    发现可利用的安全漏洞

    典型的扫描方式
    Scan,主动探测
    Sniff,被动监听/嗅探
    Capture,数据包获取(抓包)

    常见的安全分析工具
    扫描器:nmap
    嗅探器:ettercap
    协议分析:tcpdump,wireshark

    nmap简介
    一款强大的网络探测工具,支持多种探测技术
    ping扫描
    多端口扫描
    tcp/ip指纹效验
    基本用法:
    nmap [扫描类型] [选项] <扫描目标>
    常用的扫描类型
    -sS:tcp syn扫描(半开)
    -sT:tcp 连接扫描(全开)
    -sU:udp扫描
    -sP:icmp扫描
    -A:目标系统全面分析(是一个复合选项,相当于-O os检测,-sV 版本检测,-sC 脚本检测 traceroute跟踪)

    当要检测的web服务器多,可以写成脚本
    并把down掉的服务器发邮件给管理员
    #!/bin/bash
    dtime=`date +%F-%T`
    for ip in 67 10 12 158
    do
    status=`nmap -p 80 192.168.4.$ip | grep open`
    if [ ! -z "$status" ] ;then
    echo "192.168.4.$ip web-server starting"
    else
    echo "192.168.4.$ip dtime web-server down"
    echo "192.168.4.$ip web-server down" > /tmp/ip.txt
    mail -s "192.168.4.$ip web-server down" root < /tmp/ip.txt
    fi
    done

    检测主机在不在线
    #!/bin/bash
    x=0
    for((host=1;host<=254;host++))
    do
    nmap -sP 192.168.4.$host | grep -q 'is up'
    if [ $? -eq 0 ] ;then
    echo "host 192.168.4.$host is on line"
    else
    x=`expr $x + 1`
    fi
    done
    echo "no line $x "

    tcpdump抓包工具
    一款提取tcp数据包的命令行工具
    基本用法:
    tcpdump [选项] [过滤条件]
    常见监控选项
    -i:指定监控的网络接口
    -A:转换为ACSⅡ码,以方便阅读
    -w:将数据包信息保存到指定文件
    -r:从指定文件读取数据包信息
    过滤条件
    类型:host,net,port,porteange
    方向:src,dst
    协议:tcp,udp,ip,wlan,arp
    组合:and,or,not
    示例:
    [root@67 ~]# tcpdump -A -w /tmp/mail.cap tcp port 110(抓取tcp协议上端口110的包,保存到tmp下)
    [root@67 ~]# tcpdump -r /tmp/mail.cap(读取抓包信息)

    wireshark协议分析器
    一款网络协议分析软件,前身是著名的etherreal以太网分析器
    rhel6光盘中的俩个包
    wireshark,wireshark-gnome

  • 相关阅读:
    208. Implement Trie (Prefix Tree)
    97. Interleaving String
    314. Binary Tree Vertical Order Traversal
    windows获取IP和MAC地址【Qt】
    阳历阴历转换
    getDat(char *val)获得某一天是这一年中的第几天
    int位数的获取及int类型转char *
    以二进制形式输出char *数据
    char类型变量二进制形式输出
    int类型变量以二进制形式输出
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7522295.html
Copyright © 2011-2022 走看看