海运的博客

Linux下使用GPG加密文件保安全

发布时间:July 3, 2012 // 分类:网络安全 // No Comments

GPG是免费的加密和数字签名软件,Linux下自带,可以对文件、电子邮件进行加密,确保文件完整、安全性。
GPG分私钥和公钥,公钥可对外公开用以验证私钥加密的文件,公钥加密的文件同样可使用私钥验证完整性。
生成gpg密钥和公钥:

gpg --gen-key --expert 
#无密码生成
#--expert可选择ecc
gpg --pinentry-mode loopback --passphrase '' --gen-key 
#自定义生成,可选择加密算法和过期时间
gpg --pinentry-mode loopback --passphrase '' --full-gen-key 

用快捷方式生成,当指定加密算法时只生成主证书,上面生成方法默认生成主证书和加密证书:

gpg --pinentry-mode loopback --passphrase '' --quick-generate-key "haiyun (Comment) <admin@haiyun.me>" rsa4096 default never

列出当前证书:

#公钥
gpg --list-keys --keyid-format LONG
#私钥
gpg --list-secret-keys --keyid-format long
#--keyid-format long 显示子证书的指纹或使用--with-subkey-fingerprint
#--list-keys可简写为-k
#--list-secret-keys为-K

添加子证书,加密、验证、签名,5998C993622730CC831A2A7023584E37147F6CBE为刚生成的主证书指纹。

gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 encr never
gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 auth never
gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 sign never

将公钥上传到公开key服务器,在其它机器上可导入,默认服务器keys.openpgp.org过滤用户名和邮箱,使用其它keyserver。

#上传到服务器,当本地证书改变时重新提交
gpg --keyserver keyserver.ubuntu.com --send-keys 5998C993622730CC831A2A7023584E37147F6CBE
gpg --keyserver keyserver.ubuntu.com --search-keys 5998C993622730CC831A2A7023584E37147F6CBE
gpg --keyserver keyserver.ubuntu.com --recv-keys 5998C993622730CC831A2A7023584E37147F6CBE
#重新提交后其它机器更新key
gpg --keyserver keyserver.ubuntu.com --refresh-keys 5998C993622730CC831A2A7023584E37147F6CBE
#其它机器使用公钥加密始终信任key
gpg -e -r admin@haiyun.me --trust-model always file

导出密钥:

gpg --export -a admin@haiyun.me > gpg.pub #导出公钥
gpg --export-secret-keys -a admin@haiyun.me > gpg.pri #导出私钥

吊销证书:

#生成吊销证书
gpg -o 5998C993622730CC831A2A7023584E37147F6CBE.rev --gen-revoke admin@haiyun.me
#导入后证书被吊销,如有上传的服务器需重新send-keys
gpg --import 5998C993622730CC831A2A7023584E37147F6CBE.rev

吊销子密钥证书:

gpg --edit-key haiyun
  
gpg > list
gpg > key AA8C0103E7B6CB52
gpg > revkey
gpg > save

加密和签名文件:

gpg -s -u admin@haiyun.me file #使用指定公钥签名文件,输出二进制原文和签名到file.gpg,可使用-o指定输出文件
gpg -s -u admin@haiyun.me -a file #将二进制原文和签名输出为ASCII格式到file.asc
gpg -s -u admin@haiyun.me --clearsign file #输出明文原文和签名到file.asc
gpg -e -r admin@haiyun.me file #加密文件
gpg -s -u admin@haiyun.me -e -r admin@haiyun.me file #加密并签名,保存为一个文件
echo 'haiyun' | gpg -e -r admin@haiyun.me -s -u admin@haiyun.me -a #加密并签名文本消息
gpg -a -b -s -u admin@haiyun.me file.gpg #使用指定公钥签名文件且证书单独保存为file.gpg.asc

解密文件:

gpg -d file

如使用数字签名可检验文件完整性:

gpg --verify file.asc

注:签名和加密区别,关心数据完整性使用数字签名,关心数据保密性使用加密,加密和签名可同时进行。

gpg aes非对称加密文件:

#查看支持的加密和hash算法
gpg --version
#加密文件
gpg -c --pinentry-mode loopback --passphrase 123456 --cipher-algo AES256 -o file.gpg file 
#解密文件
gpg -d --pinentry-mode loopback --passphrase 123456 --cipher-algo AES256 -o file file.gpg
#--pinentry-mode loopback也可替换为--batch,相比batch提示交互操作
#类似于openssl pbkdf2
#--s2k-mode=3 --s2k-digest-algo=SHA256 --s2k-count=10000 --s2k-cipher-algo=AES256 
#--compress-algo 2 #0不压缩 1 zip 2 zlib 3 bzip2

查看加密文件详情:

gpg --list-packets --pinentry-mode loopback --passphrase 1234 file.gpg 

https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html
https://segmentfault.com/a/1190000041007717
https://zhuanlan.zhihu.com/p/137801979
https://www.ietf.org/rfc/rfc4880.txt
https://security.stackexchange.com/questions/15632/what-is-purpose-of-s2k-gnupg-options

Centos5.8安装集中自动化管理工具Puppet

发布时间:July 3, 2012 // 分类:Puppet // No Comments

Puppet以C/S方式运行,客户端连接读取服务器端的配置并在本机执行,极大方便多服务器情况下的重复管理工作。
安装Puppet的主机要有完整的域名,可设置主机名或DNS,多服务器同步对时钟要求严格,最好安装ntp自动对时。
Puppet服务器端安装:

yum install puppet-server ntp
hostname master.www.haiyun.me
ntpdate pool.ntp.org
/etc/init.d/puppetmaster start
chkconfig puppetmaster on

Puppet客户器端安装:

yum install puppet ntp
hostname node1.www.haiyun.me
ntpdate pool.ntp.org
/etc/init.d/puppet start
chkconfig puppet on
echo "192.168.1.2 master.www.haiyun.me" >> /etc/hosts

服务器端如有开启Iptables需开启puppet端口:

iptables -A INPUT -p tcp -dport 8140 -j ACCEPT

客户端与服务器端同步SSL证书:

puppetd --server master.www.haiyun.me --test

服务器端签核证书:

puppetca --list
puppetca -s node1.www.haiyun.me
#puppetca -s -a 签核所有证书请求

可配置特定主机名自动通过认证:

echo "*.www.haiyun.me" >> /etc/puppet/autosign.conf

服务器端新建配置同步到客户端执行测试:

vim /etc/puppet/manifests/site.pp
node default {
        file {
                "/tmp/test.txt": content => "hello, puppet",
                 owner => root,
                 group => root,
                 mode => 644;
        }
}

客户端同步测试:

puppetd --server master.www.haiyun.me --test

查看/tmp目录,有新建test.txt文件,权限644,用户root。

ls -a /tmp/
-rw-r--r--  1 root root      12 07-03 16:54 test.txt

注:如果服务器端配置文件错误,客户端执行后可能会锁定进程并提示:

notice: Run of Puppet configuration client already in progress; skipping 

解决:

rm /var/lib/puppet/state/puppetdlock

Vim快捷键图片详解

发布时间:July 3, 2012 // 分类:Vim // No Comments

高清大图,可设置为桌面。
vim.png

SSH常用命令妙用

发布时间:July 2, 2012 // 分类:常用软件,Linux基础 // No Comments

之前有介绍Putty工具Plink应用,Linux下ssh同样可实现很多妙用。
1.动态socks5端口转发,可用于代**理上网

ssh -NfD 0.0.0.0:7070 root@haiyun.me
-D #动态转发端口

2.转发本地端口到远程服务器:

#转发本机8080端口到google.com 80端口
ssh -N -f -L <0.0.0.0>:8080:google.com:80 root@haiyun.me
-N #仅转发端口,不执行命令
-f #后台运行
-L #监听地址端口,-L [bind_address:]port:host:hostport

3.转发远程服务器端口到本地端口,远程服务器监听指定地址查看:https://www.haiyun.me/archives/1010.html

ssh -N -f -R 0.0.0.0:8080:localhost:80 root@haiyun.me
#转发远程服务器8080端口到本地80端口

4.登录服务器并执行文本内的命令:

ssh user@server "`cat test.txt`"

5.测试两台服务器的带宽:

yes | pv | ssh user@server "cat > /dev/null"

6.登录到远程服务器screen窗口,如断开、连接不受影响。

ssh -t user@server /usr/bin/screen -xRR

Vimtutor中文乱码解决

发布时间:July 2, 2012 // 分类:Vim // No Comments

Vimtutor中文编码为GB2312,如果shell环境为UTF-8会显示乱码,可转换编码GB2312到UTF-8解决。

yum install enca
enca -L zh_CN -x UTF-8 /usr/share/vim/vim70/tutor/tutor.zh.euc 

也可使用iconvl转换:

cd /usr/share/vim/vim70/tutor/
mv tutor.zh.euc tutor.zh.euc.back
iconv -f GB2312 -t UTF-8 tutor.zh.euc.bak >tutor.zh.euc
分类
最新文章
最近回复
  • nono: 修改光猫型号是做啥子用的
  • 960: root账号默认密码hg2x0 不对哇
  • rer: 感谢分享!~
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
归档