linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包
Posted XxSec
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包相关的知识,希望对你有一定的参考价值。
搭建CA服务器
CA服务是给服务器发放数字证书,被通信双方信任,独立的第三方机构
国内常见的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服务器创建根证书
共享根证书
[[email protected] pki]# ls
CA ca-trust consumer entitlement java nssdb product product-default rpm-gpg rsyslog tls
[[email protected] ~]# 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(部门,可写可不写)
[[email protected] CA]# touch index.txt(创建证书索引文件,发出去过哪些证书)
[[email protected] CA]# echo 01 > serial(创建发放证书的编号文件)
[[email protected] ~]# cd /etc/pki/CA/private/(进入目录)
[[email protected] private]# man openssl(查看帮助)
[[email protected] private]# openssl genrsa -des3 2048 > ca.key(为CA服务器生成私钥,私钥名字要和配置文件里的一样)
Enter pass phrase:(输入保护私钥的密码)
Verifying - Enter pass phrase:(确认密码)
[[email protected] private]# chmod 600 ca.key (安全起见。设置权限)
[[email protected] ]# cd /etc/pki/CA/(进入CA目录)
[[email protected] 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名)
[[email protected] CA]# ls
certs crl index.txt my-ca.crt newcerts private serial
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# mkdir /var/www/html/ca
[[email protected] ~]# cp /etc/pki/CA/my-ca.crt /var/www/html/ca/(共享根证书)
[[email protected] ~]# /etc/init.d/httpd start ; chkconfig httpd on
[[email protected] ~]# firefox http://192.168.4.10/ca(客户端访问测试)
实例:
配置http+ssl
在网站服务器67上配置https默认监听443端口,实现数据加密传输
网站服务器配置:
创建私钥
使用私钥生成证书请求文件,并把证书请求文件上传给ca服务器
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo web67 > /var/www/html/test.html
[[email protected] ~]# echo hydra > /var/www/html/index.html
[[email protected] ~]# /etc/init.d/httpd start ; chkconfig on
[[email protected] ~]# cd /etc/pki/tls/private/
[[email protected] private]# openssl genrsa 2048 > www.key(生成私钥,不需要输入密码)
[[email protected] 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
[[email protected] ~]# scp www.csr 192.168.4.10:/root/(上传证书给ca服务器)
ca服务器配置:
签发数字证书,并把证书下发给网站服务器
[[email protected] ~]# cat www.csr(查看证书请求文件)
[[email protected] certs]# cd /etc/pki/CA/certs/
[[email protected] certs]# openssl ca -in /root/www.csr > www.crt(签收证书)
[[email protected] certs]# scp www.crt 192.168.4.67:/root/(下发证书)
网站服务器配置:
配置网站服务在运行时加载自己的私钥和数字证书,并重启网站服务
[[email protected] ~]# yum list | grep -i ssl
mod_ssl(需要安装模块)
[[email protected] ~]# yum -y install mod_ssl
[[email protected] ~]# 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(私钥文件路径)
[[email protected] ~]# mv www.crt /etc/pki/tls/certs/(把证书移动到加载目录下)
[[email protected] ~]# vim /etc/httpd/conf.d/ssl.conf(编辑文件)
SSLCertificateFile /etc/pki/tls/certs/www.crt(改证书名字)
SSLCertificateKeyFile /etc/pki/tls/private/www.key(改私钥名字)
[[email protected] ~]# /etc/init.d/httpd restart
[[email protected] ~]# netstat -utnalp | grep http(监听80和443端口)
tcp 0 0 :::80 :::* LISTEN 2600/httpd
tcp 0 0 :::443 :::* LISTEN 2600/httpd
配置网站服务器接收到访问80端口的请求时,转发到443端口
[[email protected] ~]# 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](跳转)
[[email protected] ~]# /etc/init.d/httpd restart
客户端测试:
[[email protected] ~]# firefox http://192.168.4.10/ca(下载根证书)
[[email protected] ~]# firefox http://192.168.4.67/
实例:
配置mail+ssl
需安装postfix、dovecot、cyrus-sasl
相关协议及端口:
smtp 25 +tls/ssl
pop3 110
pop3S 995
imap 143
imaps 993
邮件服务器配置
[[email protected] ~]# cd /etc/pki/tls/private/
[[email protected] private]# openssl genrsa 2048 > mail.key(生成私钥,不需要输入密码)
[[email protected] 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
[[email protected] ~]# scp mail.csr 192.168.4.10:/root/(上传证书给ca服务器)
ca服务器配置:
签发数字证书,并把证书下发给网站服务器
[[email protected] ~]# cat mail..csr(查看证书请求文件)
[[email protected] certs]# cd /etc/pki/CA/certs/
[[email protected] certs]# openssl ca -in /root/mail.csr > mail.crt(签收证书)
[[email protected] certs]# scp mail.crt 192.168.4.12:/root/(下发证书)
邮件服务器配置
[[email protected] ~]# mv mail.csr /etc/pki/tls/certs/(把证书文件移动到目录下)
配置加密发送邮件/etc/init.d/postfix
[[email protected] ~]# yum -y install cyrus-sasl-plain cyrus-sasl cyrus-sasl-lib(需要服务)
[[email protected] ~]# /etc/init.d/saslauthd start(开启服务)
[[email protected] ~]# 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(证书目录)
[[email protected] ~]# /etc/init.d/postfix restart
配置加密接收邮件/etc/init.d/dovecot
[[email protected] ~]# yum -y install dovecot(需安装服务)
[[email protected] ~]# cd /etc/dovecot/conf.d/
[[email protected] conf.d]# vim 10-ssl.conf(更改配置文件)
[[email protected] ~]# cd /etc/pki/tls/certs/
[[email protected] certs]# cp mail.crt /etc/pki/dovecot/certs(拷贝证书)
[[email protected] ~]# cd /etc/pki/tls/private/
[[email protected] 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(私钥名)
[[email protected] ~]# /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
示例:
[[email protected] ~]# tcpdump -A -w /tmp/mail.cap tcp port 110(抓取tcp协议上端口110的包,保存到tmp下)
[[email protected] ~]# tcpdump -r /tmp/mail.cap(读取抓包信息)
wireshark协议分析器
一款网络协议分析软件,前身是著名的etherreal以太网分析器
rhel6光盘中的俩个包
wireshark,wireshark-gnome
以上是关于linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包的主要内容,如果未能解决你的问题,请参考以下文章
windows server 2003搭建CA服务器并启用https(SSL)