加密,gpg加密,ssh三种转发,openssl,pam 题目

加密,gpg加密,ssh三种转发,openssl,pam

一、仅开放本机两个IP地址中的一个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16网络中除了 172.16.0.0/24网络中的主机之外的所有主机,但允许172.16.0.200访问,每次的用户访问都要记录于日志文件 中,注:其中X为学号

/etc/hosts.allow:
    sshd,vsftpd: 172.16.0.0/16 EXCEPT 172.16.0.0/24 EXCEPT 172.16.0.200 :spawn echo `date` login >> /var/log/ssh.log
/etc/hosts.deny:
    sshd,vsftpd:ALL

2、编写脚本/root/bin/checkip.sh,每5分钟检查一次,如果发现通过ssh登录失败次数超过10次,自动将此远 程IP放入Tcp Wrapper的黑名单中予以禁止防问

[[email protected] ~]# echo ‘*/5 * * * * /data/checkip.awk /var/log/secure‘ >> /var/spool/cron/root
[[email protected] ~]# cat /data/checkip.awk
#!/bin/awk -f
/sshd.*Failed password/{ip=$(NF-3); ips[ip]++}
END{
    for (i in ips){
        if(ips[i]>10){
            cmd="echo sshd:"i">>/etc/hosts.deny"; system(cmd)
        }
    }
}

3、gpg加密解密:

交互式加密:会弹出一个框

[[email protected] ~]# gpg -c virtual_machine_reset_5.sh 

交互式解密:

gpg -d virtual_machine_reset_5.sh.gpg

非交互式:

[[email protected] tmp]# echo "cX0BCoWt1+qq9ZeKYCXTtxMQeiI" | gpg -c --no-tty  --batch --passphrase-fd 0 virtual_machine_reset_5.sh
[[email protected] tmp]# gpg --batch --passphrase cX0BCoWt1+qq9ZeKYCXTtxMQeiI virtual_machine_reset_5.sh.gpg 

查看gpg版本:gpg -h

CentOS7的gpg是2.0.22,Ubuntu18.04的gpg是2.2.4

4、非交互式生成密钥

[[email protected] tmp]# ssh-keygen -f ~/.ssh/id_rsa -P ‘‘ -C ‘admin‘

5、ssh_config

1、改端口号
Port  22
2、加主机
[[email protected] tmp]# tail -5 /etc/ssh/ssh_config
Host testbox
    HostName 192.168.38.146
    User root
    Port 2222
    IdentityFile ~/.ssh/id_rsa
就可以直接连了,默认是22端口

6、ssh命令选项

ProxyCommand

    -q      静默模式。大多数警告信息将不输出。

    -W host:port  请求客户端上的标准输入和输出通过安全隧道转发到host:port上,该选项隐含了"-N","-T",ExitOnForwardFailure和ClearAllForwardings选项

    -T      禁止为ssh分配伪终端。
    -N      明确表示不执行远程命令。仅作端口转发时比较有用。

# ProxyCommand ssh -q -W %h:%p gateway.example.com 当跳板机用

ssh当跳板机:

7、本地端口转发:

ssh -L [local_bind_addr:]local_port:remote:remote_port middle_host
[email protected]:~# ssh -L 2222:192.168.38.154:80   192.168.10.134 -fNg

通过这条神奇的命令,现在就可以通过访问192.168.10.135:2222来访问192.168.38.154:80了

其中"-L"选项表示本地端口转发,其工作方式为:host3主机监听2222端口;host3将192.168.38.154:80映射为本地2222;当有人访问192.168.10.135:2222时,本地ssh将此端口的数据包转发给192.168.10.134;192.168.10.134将数据包转发给192.168.38.154:80

再来一个:ssh -L 2222:127.0.0.1:80 127.0.0.1 -fNg

该命令执行后,就把本机2222端口的流量转发给本机80端口了

可以发现,该命令执行后访问的还是本地IP的某一端口,所以叫本地转发

8、远程端口转发

远程端口转发表示的是将远程端口的数据转发到本地。

这个就牛逼了!将远程端口转发到本地,那我岂不是连接远程的端口就可以连接到本地服务器了!

看下面,远程端口转发使用的是-R,注意公网服务器要开启GatewayPorts

[[email protected] ~]# sed -i ‘$a GatewayPorts yes‘ /etc/ssh/sshd_config && systemctl restart sshd #这个必须得开,不然端口监听在127.0.0.1上
[[email protected] ~]# ssh -R 2222:192.168.38.154:22 47.75.136.95 -fNg

其工作方式为:192.168.38.140请求47.75.136.95上的ssh,在47.75.136.95上建立一个套接字监听2222端口,该端口是192.168.38.154:22的映射;当有主机连接47.75.136.95:2222时,此连接中的数据全部通过通过安全隧道转发给192.168.38.154:22

可以通过此方法,将内网搭建的博客网站映射出去,然后就可以通过公网访问了

再来一个:ssh -R 12345:127.0.0.1:22 47.75.136.95 -fNg

[[email protected] ~]# ssh -R 12345:127.0.0.1:22 47.75.136.95 -fNg

将请求转发给自己,该命令执行后,就可以通过47.75.136.95:12345来访问本地的192.168.38.140了

9、动态端口转发(SOCKS代理)

ssh -D [bind_addr:]port remote

ssh支持动态端口转发,由ssh来判断发起请求的工具使用的是什么应用层协议,然后根据判断出的协议结果决定目标端口

可以实现:让内网不能上网的服务器上网:

[[email protected] ~]# ssh -D 1080 127.0.0.1 -fNg

然后192.168.10.135机器将火狐浏览器设置代理到socket代理:192.168.10.134 1080

about:config将network.proxy.socks_remote_dns设置为true,开启远程DNS

工作方式:我是192.168.38.140,我在本地监听1080,所有人都可以把数据转发到我的1080端口,我再把数据通过ssh隧道动态转发出去

10、ssh_config常改选项,优化

UseDNS no       #禁用DNS,解决连接慢
GSSAPIAuthentication no     #不开启GSSAPI认证,解决连接慢
Port 9527       #修改默认端口号
PermitRootLogin yes     #不允许root登陆
PermitEmptyPasswords no  #禁止空密码登陆

ssh_config的使用,将常用主机写到ssh_config或者~/.ssh/config里面,例如

Host testbox
    HostName 192.168.38.146
    User root
    Port 2222
    IdentityFile ~/.ssh/id_rsa
ssh-agent管理密钥

? 生产环境中经常对密钥加密,每次连接都需要输入密码,很麻烦,而且多个私钥时,也不用自己去指定ssh-agent全部管理了

启动ssh-agent

ssh-agent

添加私钥交给ssh-agent管理

ssh-add ~/.ssh/id_rsa

列出ssh-agent管理的密钥

ssh-add -L

注意

? 使用ssh-add失败,提示Could not open a connection to your authentication agent.
执行:ssh-agent bash 再试
? 还有一种情况下比如,主机A需要通过主机B才能访问主机C的情况下,我们可能需要在B上保存私钥才可以,但是如果使用ssh-agent的agent forwarding功能后,就可以使用主机A登陆B和C了,而不用在B上保存私钥

11、pam模块-google验证器

比如google身份验证就是通过pam模块实现的

如何使用:epel源安装google-authenticator

apk:https://www.lanzous.com/i5yl8ad 密码:6666

家目录那个隐藏文件里面放着几个临时密码,防止手机丢了,可以自行在里面加几个密码,一次有效,

参考:http://dwz.win/j5v

12、pam模块学习

以pam_limits模块为例

先man看帮助

NAME
       pam_limits - PAM module to limit resources
SYNOPSIS
       pam_limits.so [conf=/path/to/limits.conf] [debug] [set_all] [utmp_early] [noaudit]
DESCRIPTION
       The pam_limits PAM module sets limits on the system resources that can be obtained in a
       user-session. Users of uid=0 are affected by this limits, too.
       By default limits are taken from the /etc/security/limits.conf config file. Then individual
       *.conf files from the /etc/security/limits.d/ directory are read. The files are parsed one
       after another in the order of "C" locale. The effect of the individual files is the same as
       if all the files were concatenated together in the order of parsing. If a config file is
       explicitly specified with a module option then the files in the above directory are not
       parsed.

? *可以看到,不管哪个用户,哪怕root都受到此限制的影响,且默认情况下,限制文件未/etc/security/limits.conf及/etc/security/limits.conf.d/.conf**

使用limit -a查看当前所有资源限制情况

[[email protected] pam.d]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1779
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1779
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

默认文件打开数太小,不够,生产中必须修改,ubuntu18.04现在默认都改大了,如下:

*   soft nofile 128000
*   hard nofile 256000

root soft nofile 128000
root hard nofile 256000

关于fork弹的避免措施其一就是显示每个用户的进程数,比如

*   soft    nproc   1024
*   hard    nproc   1024

ulimit -n 2000只会临时生效,建议写文件

13、自签证书和CA生成

查看证书到期时间:

[[email protected] ~]# openssl x509 -in /etc/pki/tls/cert.pem -noout -dates | sed -nr ‘s/notAfter=//p‘
Dec 31 09:37:37 2030 GMT
[[email protected] ~]# openssl s_client -host www.taobao.com -port 443 -showcerts </dev/null 2>/dev/null | sed -n ‘/BEGIN CERTIFICATE/,/END CERT/p‘ -n | openssl x509 -noout -text | sed -n ‘s/ *Not After : *//p‘
Nov 13 07:36:08 2019 GMT

原文地址:https://blog.51cto.com/14012942/2435965

时间: 2024-11-05 23:32:29

加密,gpg加密,ssh三种转发,openssl,pam 题目的相关文章

负载均衡array的三种转发模式

array负载均衡设备支持三种转发模式: 1.Reverse Proxy Mode(反向代理模式) Array APV 的反向代理模式是指负载均衡接收到用户的请求后,以代理的方式转发给内部的服务器.因此,与后台服务器建连的源地址为APV的接口地址.反向代理模式下,无需对原有网络进行额外调整,同时结合TCP连接服用技术,对应用性能进行优化,但是不好的地方就是在服务器那里看不到客户端的IP地址,无法分析数据. 2.Transparent Mode (透明模式) Array APV的透明模式是指 Ar

交换机的三种转发模式

下面是交换机6大工作原理: 1.基于源MAC地址学习 2.基于目标MAC地址转发 3.同一接口可以学习到多个MAC地址 4.同一个MAC地址被多个接口学习到,选择后学习到的接口 5.收到广/组播帧, 向本VLAN的其他所有接口转发 6.对于没有目标MAC地址表项的帧,向本VLAN的其他所有接口转发 交换机的三种转发模式: 1.直通式转发: 是指交换机在收到数据帧后,不进行缓存和校验,而是直接转发到目的端口. 2.存储式转发: 交换机首先在缓冲区中存储接收到的整个数据帧,然后进行CRC校验,检查数

jQuery的三种$()(转发)

$号是jQuery“类”的一个别称,$()构造了一个jQuery对象.所以,“$()”可以叫做jQuery的构造函数 1.$()可以是$(expresion),即css选择器.Xpath或html元素,也就是通过上述表达式来匹配目标元素. 比如:$("a")构造的这个对象,是用CSS选择器构建了一个jQuery对象——它选择了所有的<a/>这个标签.如: $("a").click(function(){...}) 就是在点击页面上的任何一个链接时的触发事

C#中的三种 加密解密

刚刚学会的C#的加密与解密(三种)MD5加密/RSA加密与解密/DES加密.也是刚刚申请的blog随便发布一下. (一).MD5加密 MD5 md5 = new MD5CryptoServiceProvider();            byte[] palindata = Encoding.Default.GetBytes(textBox1.Text);//将要加密的字符串转换为字节数组            byte[] encryptdata = md5.ComputeHash(pali

安全与加密之gpg,ssh服务

安全与加密 本章目录 gpg的使用 ssh服务 dropbear aide 1. gpg的使用 GPG是加密和数字签名的免费工具,大多用于加密信息的传递.除了仅用密码加密外,GPG最大的不同是提供了"公钥/私钥"对.利用你的"公钥"别人加密信息不再需要告诉你密码,随时随地都能发送加密信息.而这种加密是单向的,只有你的"私钥"能解开加密.数字签名又是另一大使用方向.通过签名认证,别人能确保发布的消息来自你,而且没有经过修改. 使用gpg实现对称加密

应对加密js的三种方法

经常遇到网页在登录后会对用户输入的帐号和密码通过js进行加密,导致模拟登录这类网站时受到阻碍 这里小记一下当前解决该问题的三种方法 1.利用python实现js同等加密. 2.利用selenium模拟登录. 3.利用pyexecjs来执行js文件 测试站点:http://bbs.125.la/ 登录时通过浏览器F12发现该网站对密码进行了加密 进一步分析和查找,发现是名为md5.js?RFI文件进行了加密 尝试用第一种方法,但是发现此文件内容较多,通过python转换相应程序较为复杂,因此放弃

Java利用 DES / 3DES / AES 这三种算法分别实现 对称加密

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了. 2)编程就是算法和数据结构,算法和数据结构是编程的灵魂. 注意,这可不是我说的,是无数程序员总结的,话说的很实在也很精辟,若想长久可持续发展,多研究算法还是很有必要的,今天我给大家说说加密算法中的对称加密算法,并且这里将教会大家对称加密算法的编程使用.包含

源代码加密软件的三种技术 你了解多少?

所谓源代码加密软件是指以源代码文件为对象,采用数据泄露防护技术,有效防止源代码文件泄露和扩散,它主要起源于传统数据防泄密市场.到目前为止很多人对软件源代码加密技术的了解还不够深,随着技术不断升级软件源代码加密技术经历了传统透明加密技术.边缘沙盒防泄密技术以及革新DSA数据安全隔离数据等,接下来几维安全将为大家详细介绍这三种技术,一起去看看. 传统透明加密技术 透明加密技术典型代表即文档加密软件,其核心在于文档创建时即加密,并与用户.权限相结合.加密后,授权用户正常双击打开使用,非授权用户则显示为

Linux的加密工具以及ssh

1.linux下加密工具有很多,但是最常用的还是openssl openssl 三个组件: openssl 多用途命令行工具 libcrypto 加密解密库 libssl  ssl协议实现 openssl enc, ca, req, ... 对称加密 enc命令:#手动给文件加密一个文件. 加密:openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext 解密:openssl enc -d -des3 -a -salt -in fs