发送冒充邮件
首先telnet 到 邮件服务器的25端口
EHLO(有些需要输入)
mail from:
rcpt to:
data 邮件正文
subject 标题
. 邮件结束
quit 退出
查询邮件服务器地址
dig -t mx magedu.com
通过抓包,可以抓到数据,所以学好wireshark
黑掉http服务,使其资源耗尽,拒绝服务 flood_connect.c
对称算法 DES 3DES AES
非对称算法 RSA DSA
单向散列 md5: 128bits、sha1: 160bits、sha1sum sha224sum sha256sum sha384sum sha512sum
常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V
我们也可以用 对称秘钥或非对称秘钥 来对文件进行加密
gpg工具 可以用来加密文件,可以用对称或非对称算法来加密文件
对称加密file文件
gpg -c file ls file.gpg
在另一台主机上解密file
gpg -o file -d file.gpg
计算机安装的时候一般会安装了 一些大厂的根CA,这些证书可是要掏钱的啊,所以有些公司内部为了使用,节约成本没必要掏钱买证书,可以企业内部自建CA,
https底层依赖 tls协议
http+tls=https
ftp+tls=ftps
而OpenSSL 就是tls的具体实现的组件
openssl
三个组件:
openssl:多用途的命令行工具,包openssl
libcrypto:加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
openssl ? //显示所有子命令
加密: openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher 解密: openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
//使用MD5算法 对这个文件做哈希运算
生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos
生成随机数:
帮助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制, 出现的字符数为NUM*2
base64是一种编码方式,用64个字符,表示数据,既把原来的ASCII编码(8位),改成(6位)编码,
利用openssl 生成 rsa的 公钥私钥
生成密钥对儿:man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa –out test.key –des 2048) //-des 选项就是 使用对称算法対生成的私钥加密
openssl rsa -in test.key –out test2.key 将加密key解密
从私钥中提取出公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
openssl rsa –in test.key –pubout –out test.key.pub
利用openssl 搭建CA体系 CA模式分为 私有CA 公有CA,私有CA是给企业内部用的,公有CA是面向互联网的。私有CA的申请证书时有三项都要填写一样
作为CA 生成私钥的文件名叫什么 私钥公钥文件分别放在什么地方,颁发证书的时候,每个证书的编号是几,这么都需要事先准备好,而这些准备存放在openssl的配置文件:/etc/pki/tls/openssl.cnf
根据CA配置文件 在对应的位置生成对应的文件
1。建立CA,首先要自己有一个证书,所以首先自己生成公私钥,先生成私钥,根据私钥生成公钥。Linux下生成的证书文件是.pem
(umask 077;openssl genrsa -out private/cakey.pem 4096)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 <<EOF
CN
beijing
beijing
magedu
devops
ca.magedu.com
admin@magedu.com
EOF
touch /etc/pki/CA/index.txt
echo 0F > /etc/pki/CA/serial //存放下一个证书编号,以十六进制,必须是整字节
查看证书
2 申请证书
(umask 066;openssl genrsa -out app.key 1024 )
openssl req -new -key app.key -out app.csr //根据自己的私钥,生成申请文件
scp /data/app/app.csr CAServer:/data/ //将自己的申请文件,传给CA。
3 颁发证书
openssl ca -in /data/app.csr -out /etc/pki/CA/certs/app.crt -days 100 //根据客户的申请文件,生成客户对应的证书,然后再给客户就可以了
针对于一个申请文件 是不能多次申请证书的,对于index.txt.attr 设置了唯一性,修改为no时,就可以允许多个了
index.txt文件存放的就是 证书发放的信息(文本数据库),
吊销证书: openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
openssl ca -status SERIAL 查看指定编号的证书状态 V是正常,R是吊销
撤销证书 本质是生成CRL吊销列表,也是有个文件要去指定下一个吊销列表的编号
指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表 openssl ca -gencrl -out /etc/pki/CA/crl.pem
ssh
两种方式的用户登录认证:
基于password
基于key
客户端组件:
ssh, 配置文件:/etc/ssh/ssh_config
StrictHostKeyChecking no 首次登录不显示检查提示
服务端组件 /etc/ssh/sshd_config sshd
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub (CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接
ssh服务基于密钥登录验证
前期工作就这两步,把自己的公钥拷贝过去就OK了,后面就不用了密码了,把公钥给那个机器,你就可以访问到那个机器
ssh-keygen //对于ssh服务生成自己的公私钥 就是在 /root/.ssh/生成 id_rsa id_rsa.pub
然后把公钥拷贝过去,传过去也行
ssh-copy-id -i /home/wang/.ssh/id_rsa root@192.168.37.6 //这里是把公钥拷贝过去,但是你如果写错成私钥,也没关系,人家考的还是公钥,这里本质就是公钥文件 id_rsa.pub的内容复制到 远程机器的 /root/.ssh/authorized_keys 中
你把 公钥给了谁 你就可以远程登录谁 但是这种方式你如果私钥被别人拿走了,那人家就可以伪装你 也可以访问那个机器了
修改 root的密码
expect 实现自动基于秘钥登录的脚本,可以让一个机器,不用登录密码,管理多个主机
PASS=magedu
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null && echo "ssh key is created" //生成自己的公钥私钥,-t指定加密算法 -P 指定密码 -f 指定生成的文件
rpm -q expect &> /dev/null || yum -y install expect &> /dev/null
while read IP ;do
expect <<EOF
set timeout 20
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP
expect {
"yes/no" { send "yes ";exp_continue }
"password" { send "$PASS " }
}
expect eof
EOF
echo $IP is ready
done < hosts.txt
我们上面讲的都是Linux ssh Linux ,我们更多的是在Windows中 用xhell,去ssh Linux的,所以Xhell也是可以基于key登录的,我们在Xhell中生成公私钥,把公钥拷到Linux中,我们在Windows中使用私钥就可以直接登录到Linux中,这个时候你只要有私钥就可以登录到Linux,你可以随身携带私钥,在任何一台电脑都可以连接Linux中。Xhell生成公私钥 在工具中
SCP
scp [options] /sourcefile [user@]host:/destpath
- -C 压缩数据流
- -r 递归复制 就是拷贝文件夹
- -p 保持原文件的属性信息
- -q 静默模式
- -P PORT 指明remote host的监听的端口
scp /data/dpt 192.168.37.1:/data //把我这个文件拷贝到 另外一台电脑的data目录下
scp 192.168.37.1:/data/opt . //把远程主机上的这个文件拷贝到自己电脑上