gpg -c file
gpg -d file.gpg
gpg -o f1 -d file.gpg
centos6:192.168.5.100
gpg --gen-key
gpg --list-key
gpg -a --export -o wang.pubkey
scp wang.pubkey 192.168.5.200:/data
centos7:192.168.5.200
gpg --gen-key
gpg --list-key
gpg --import wang.punkey
gpg --list-key
gpg -e -r wang file
scp file.gpg 192.168.5.100
centos6:
gpg -o file -d file.gpg
centos7:
gpg --delete-key wang
openssl enc -des3 -e -a -salt -in fstab -out fstab.cip
openssl enc -des3 -d -a -salt -in fstab -out fstab.cip
openssl dgst -md5 fstab(md5sum fstab)
openssl rand -hex|-base64 num (生成随机数)
openssl passwd -1(man sslpasswd) 生成用户密码
什么是base64编码:
–base64:A-Z (0-25)
a-z
0-9
+
/
然后将数据转化为对应的ascii,再转化为二进制,将二进制每6位划分为一个字节,该字节转化为对应的base64编码
echo -n “ab”|base64
001101 00
NA=
生成指定长度的随机密码
echo openssl rand -base64 24
|tr -dc “A-Za-z0-9”|cut -c1-5
cat /dev/urandom |tr -dc “/+” |head -c10
生成私钥
openssl genrsa -out test.key -des 1024
可以用base64 -d test.key查看(先把文件描述删掉)
CA:
centos7:
cd /etc/pki/CA
openssl genrsa -out private/cakey.pem 1024
openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem 1024
openssl x509 -in cacert.pem -noout -text(-subjects | -dates)
centos6:
openssl genrsa -out app.key 1024
openssl req -new -key app.key -out app.csr 1024
centos7:
openssl ca -in app.csr -out certs/app.crt -days 365
openssl verify -CAFILE cacert.pem certs/app.crt
vi index.txt.attr (no)同一个申请可以颁发2个证书方法
吊销证书:
openssl ca -revoke newcerts/01.pem
echo 00 > crlnumber
openssl crl -out
openssl ca -gencrl -out crl.pem(更新吊销列表,发到互联网上)
cat index.txt
openssl crl -in /crl.pem -noout -text
ssh:
vi /etc/ssh/sshd_config 更改服务配置文件端口,链接是需指定-p + 端口;vi /etc/ssh/ssh_config 更改客户端端口
cp /etc/ssh/ssh_host_rsa_key.pub .(删掉开头描述和尾部空格);base64 -d ssh_host_rsa_key.pub > pubkey
md5sum pubkey
ssh -X 192.168.5.100 远程打开目标主机的图形工具(目标主机字符界面照样能打开)
ssh-keygen
ssh-copy-id
ssh-keygen -p
ssh-agent bash
ssh-add
!/bin/bash
pass=“majin1”
rpm -q expect &>/dev/null || yum -y install expect
ssh-keygen -t rsa -P “” -f /root/.ssh/id_rsa
while read ip;do
expect <
}
expect eof
EOF
done < iplist.txt
公钥文件格式转换
ssh-keygen -i -f identity.pub
ssh -L 9527:192.168.0.17:22 -Nf 192.168.0.7
telnet 127.0.0.1 9527
ssh -R 9527:192.168.5.133:23 -Nf 192.168.5.100
killall ssh
telnet 192.168.5.200 25
helo a.com
mail from:[email protected]
rcpt to:root
data
subject: test
how are you
.
quit
ssh -L 9527:192.168.5.200:25 -Nfg 192.168.5.134 (A-D)
开启httpd
192.168.5.200:vi /etc/hosts 192.168.5.100 www.goole.com
ssh -D 9527 192.168.5.133 -Nfg
192.168.5.100:iptables -A INPUT -s 192.168.5.200 -j REJECT
192.168.5.200:配置火狐浏览器
192.168.5.134:curl --socks5 192.168.5.200:9527 http://192.168.5.100
sshd端口绑定
vi /etc/ssh/sshd_config
listenaddress 192.168.5.200
centos7默认使用ECDSA算法,centos6默认使用rsa算法
优化ssh链接速度
useDNS no
GSSAPIAuthentication no
登录提示语句
Banner /etc/ssh/ssh.txt
vi ssh.txt(ssh server)
拒绝用户登录
Denyusers majin
systemctl reload sshd
tail /var/log/secure
Allowusers
Allowgroups
Denygroups
建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志
awk ‘/Failed password for root from/{ip[$(NF-3)]++}END{for (i in ip){if(ip[i]>=3)
system(“iptables -A INPUT -s “i” -j REJECT”)}}’ secure
编译安装dropbear
less README
less INSTALL
./configure --help
./configure --prefix=/app/dropbear --sysconfdir=/etc/dropbear
make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp”
make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp” install
vim /etc/profile.d/dropbear(PATH=/app/dropbear/bin:/app/dropbear/sbin)
. /etc/profile.d/dropbear
./dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbear -EFp 2222
ss -ntlp
cat /var/run/dropbear.pid
centos6: ssh 192.168.5.200 -p 2222
链接客户端:dbclient 192.168.5.100
scp /etc/fstab 192.168.5.100;报错,找不到/usr/bin/dropbear ;创建软连接 ln -s /app/dropbear/bin/
dbclient /usr/bin/dbclient
开机启动:vim /etc/rc.local /app/dropbear/sbin/dropbear -p
需要给/etc/rc.d/rc.local 执行权限
清除dropbear
vim /etc/rc.local 删掉dropbear…
killall dropbear
rm -rf /app/dropbear /etc/dropbear
删掉安装包
PATH变量改回去
但是scp不能用, 清空缓存 hash -r
vi /etc/aide.conf
TEST = p+u+g+md5
/data TEST
!/data/f3
aide --init
ls /var/lib/aide.conf
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
aide --check
aide --update
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo:
/etc/sudoers /etc/sudoers.d
格式:majin ip=(root) /bin/cat /etc/shadow
cat wang
wang ip= /bin/cat /etc/shadow
cat mage
mage ip=(wang) ALL
mage:sudo -u wang sudo cat /etc/shadow
visudo -c检查/etc/sudoers
visudo可直接修改并且具有检错功能
export EDITOR=vim ;echo ‘export EDITOR=vim’>/etc/profile.d/test.sh
visudo -f /etc/sudoers.d/majin
majin ALL= sudoedit(授权majin用户能编辑 sudoedit /etc/sudoers)
User_Alias NETADMIN
Cmnd_Alias NETCMD
Run_Alias
Host_Alias
sudo -l
sudo -v 刷新sudo时间
sudo -k 清除时间
-p ”password on %h for user %p:”
wrappers
ldd /PATH/TO/PROGRAM|grep libwrap.so
配置文件:/etc/hosts.allow, /etc/hosts.deny
帮助参考:man 5 hosts_access,man 5 hosts_options
检查顺序:hosts.allow,hosts.deny(默认允许)
注意:一旦前面规则匹配,直接生效,将不再继续
基本语法:
daemon_list@host: client_list [ :options :option… ]
Daemon_list@host格式
单个应用程序的二进制文件名,而非服务名,例如vsftpd
以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
ALL表示所有接受tcp_wrapper控制的服务程序
主机有多个IP,可用@hostIP来实现控制
如:[email protected]
示例:只允许192.168.1.0/24的主机访问telnet和vsftpd服务
/etc/hosts.allow
vsftpd,in.telnetd: 192.168.1.
/etc/host.deny
vsftpd,in.telnetd: ALL
mkdir /data/host.deny
tcp -d in.telnetd 192.168.5.200
PAM:
required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该
模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所
有模块全部执行完毕再将失败结果返回给应用程序。即为必要条件
requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返
回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程
序。是一个必要条件
sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执
行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件
optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,
其返回值一般被忽略
include: 调用其他的配置文件中定义的配置信息