标签:严格 secure lis 相同 多少 login 机器 通过 沟通
ssh端口转发:
本地转发:(客户端请求开启通道)
ssh -L localport(本地主机通过该端口访问管道):remotehost(目的主机IP):remotehostport (目的主机被访问端口)sshserver(内部主机充当服务端开启ssh服务22端口)
ssh -L 9527:目的主机IP:目的服务端口号 -fN 服务端IP
搭建telnet服务器
在所要访问的机器上设定防火墙策略(iptables -A -INPUT -s IP -j REJECT),查看telnet服务23端口是否开启
iptables -L(查看防火墙策略)
开启telnet服务
yum install telnet-server(安装服务端)
systemctl start telnet.socket
ss -ant 查看23端口是否开启
ssh (搭建隧道(-L 9527:192.168.37.17)模拟telnet直链接到)
telnet链接,输入用户名密码(root用户不能登录)
主机A执行 ssh -L 12345:172.16.128.30:23 172.16.130.17
A:端口情况(12345端口可通过127.0.0.1访问)主机A通过60636端口访问主机B的22端口
(服务端)B:端口情况
C:端口情况
A:执行telnet 127.0.0.1 12345之后
端口情况
(服务端)B:端口情况(127.0.0.1端口访问环)
C:端口情况(主机B访问主机C)
(启动.service后缀的服务)
127.0.0.1:9527(该端口只允许本机链接(监听)) *:22(改端口允许任何人链接(监听))
远程转发:(客户端请求开启通道)
由外向内的链接被防火墙阻隔,则通过从内向外申请建立ssh链接,借此生成管道,完成外部主机与内部主机的沟通。
ssh -R sshserverport(指定远程主机通过该端口号访问管道):remotehost:remotehostport(目的主机被访问的端口号) sshserver(开启ssh服务22端口的主机)
data ? ? localhost:9527(外部客户端主机端口) ? ? localhost:XXXXX ? ? sshsrv:22(防火墙内部主机的22端口) ? ?
sshsrv:YYYYY ? ? telnetsrv:23
ssh -R (防火墙只允许内向外,不允许外向内发送信息)
Data ? ? sshsrv:9527 ? ? sshsrv:22 (外部主机充当服务端,开启22端口用于ssh链接)? ? localhost:XXXXX(内部主机充当客户端随机开启端口与外部主机建立隧道) ? ?
localhost:YYYYY ? ? telnetsrv:23
ssh -R 9527:目的ip:目的服务端口号 -fN 服务端ip(外部主机充当服务端)
通过B向A申请建立ssh链接,建立隧道后:
主机B执行命令:ssh -R 12345:172.16.128.30(主机C):23 172.16.128.29(主机A)
B:通过端口54796与外部主机22端口建立链接
(服务端)A:12345端口被127.0.0.1监听
C:23端口还未被访问
主机A执行命令:telnet 127.0.0.1 12345(12345端口只能通过127.0.0.1访问)
(服务端)A:端口状态(telnet只允许普通用户链接,不允许root用户链接登录)
(127.0.0.1端口访问环)
B:端口状态
C:端口状态(主机B访问主机C)
动态端口转发:
ssh -D 12345(指定本机端口) 跳板主机ip -fN
字符界面设置代理访问
-g(不加g只能允许本机127.0.0.1访问该端口,-g后可使任意ip访问该端口,其他主机可以使用该主机进行跳板)
ssh -g 9527(指定本机端口号):目的主机IP:目的服务端口 -fN 服务端IP(外部主机充当服务端)
(本机Aip172.16.128.29)ssh -D 12345 172.16.130.17 -fNg
(只要访问A主机的12345端口就通过管道找到跳板机(172.16.130.17))
需指定代理--socks5 172.16.128.29:12345
访问
配置 -g (gateway) 网关后9527端口可任意ip链接访问
只拒绝tcp服务80端口
设定自己连自己(-Dg)-g(gateway)
端口链接情况
SSHD服务端配置:
ListenAddress:监听地址。若为某个ip则只能通过该ip使用ssh服务链接。
修改网络地址(ubuntu)
tail -f /var/log/secure (ssh日志)lastb(记录所有失败的登录)
修改ListenADDress值 必须为主机上有的ip
修改完sshd的配置文件后可以使用sshd -t 检查语法是否有误。
编译安装dropbear
前端监听端口
AIDE:
aide --init 初始化对比数据库(第一次生成数据库后执行命令:
mv aide.db.new.gz aide.db.gz,否则aide --check 命令不识别**.new.gz文件)
aide --check 进行文件检测并输出
aide --update 升级数据库
升级后会在/var/lib/aide目录下生成新的数据库,将aide.dv.gz删除,再将aide.db.new.gz重命名为aide.db.gz
sudo:
配置文件:/etc/sudoers /etc/sudoers.d/(将语法格式相同的语句写到文本中)
时间戳文件: /var/db/sudo
日志文件:/var/log/secure
user host=(runas) command
user:运行命令者的身份
host:通过哪些主机
(runas):以哪个用户的身份
command:运行哪些命令
visudo -c(格式检查) -f(配置文件) /etc/sudoers.d/su1
sudo -V 查看sudo命令的相关详细信息
当用户su2如下图配置后:
执行sudo命令应使用 sudo -u su1 sudo cat /etc/shadow
sudo visudo(自带语法检测)
vim(visudo) /etc/sudoers 命令格式 用户 主机=(获取该用户的权限) 命令
编辑/etc/sudoers 和/etc/suders.d (将格式相同的文件放在该目录下)
在配置文件中使用通配符时需注意,/var/log/message* 需写成类似于:/usr/bin/cat /var/log/message*,!/usr/bin/cat /var/log/message*(空格)*
man sudoers
su -l username 显示登陆信息
使用sudo时取消密码输入过程,在command前面加上NOPASSWD:
sudoedit命令修改
visudo -f 文件
配置文件中使用别名(必须遵循严格的格式)
别名有四种类型:User_Alias, Runas_Alias, Host_Alias ,Cmnd_Alias
TCPWrappers:
%c 客户端信息
%s 服务端信息
%d 守护进程的PID
%% 表示%
基于libwrap.so
先检查hosts.allow(满足条件的生效,内部规则先后顺序也影响实际效果,先执行的先生效,后续出现的则不予匹配,不满足条件就查询deny文件) -> hosts.deny(满足deny则生效,若仍没有满足条件,则默认允许)->默认生效(端口监听ip)
添加到hosts.deny:192.168.37.0/24 192.168.1. 拒绝网段
若allow和deny有条目冲突,allow优先级高。
man 5 hosts_access
spawn:在本机触发指定程序
sshd::172.16.128.29:spawn echo /bin/echo "%c atemp to %s,%d">>/var/log/sshd.log
twist:(ssh -v)在客户端触发指定程序。
PAM:(Pluggable Authentication Modules)
认证机制:
1 、认证库:文本文件,MySQL,NIS,LDAP等
2 、PAM 是关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开
3 、使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序
4、 一种认证框架,自身不做认证
认证原理:
1、 PAM认证一般遵循这样的顺序 Service(服务)——>PAM(配置文件)——>pam_*.so
2 、PAM认证确定哪一项服务 加载相应的PAM的配置文件(位于/etc/pam.d下) 调用认证文件(位于/lib/security下)进行安全认证
PAM认证过程:
1.、使用者执行/usr/bin/passwd程序,并输入密码
2.、passwd开始呼叫PAM模块,PAM模块会搜寻passwd程序的PAM相关设定文件; 这个设定文件一般是在/etc/pam.d/里边的与程序同名的文件; 即PAM会搜寻/etc/pam.d/passewd这个设置文件;
3.、经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.、将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
pam模块存放位置:/lib64/security/*.so
通用主要配置文件:/etc/pam.conf ,默认不存在,(将全部服务配置文件写到该配置文件中,文件很繁琐,默认不存在)
较大的模块配置文件存放位置:/etc/security/*.conf
专用pam模块的服务配置文件:/etc/pam.d/相关服务
若服务支持PAM模块需调用libpam.so
配置文件格式:
1、application(服务名) 2、type(模块类型) 3、control(PAM库如何处理与该服务相关的PAM模块的成功或失败情况) 4、module-path(指明本模块对应的程序文件的路径名) 5、arguments(用来传递给该模块的参数)
type(模块类型)
Auth:账号的认证和授权
Account:与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如用户只能从控制台登录)
Passwd:用户修改密码是密码复杂度检查机制等功能
Session:用户获取到服务之前或使用服务完成之后需要进行一些附加的操作;如打开/关闭数据的信息,见识目录等
-type:表示因缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
control(PAM库如何处理。。。)
required:本模块必须返回成功才能通过认证,但如果返回失败,等同一type中所有模块执行完毕再将失败结果返回给应用程序。必要条件。
repuisite:该模块必须返回成功才能通过认证,但一旦该模块返回失败,将不再执行同一type内任何模块,直接将控制权返还给应用程序。
sufficient:只要该模块返回成功则通过身份验证,不再执行同一type内其他模块。
optional:本模块可选。
include:调用其他的配置
pam_shells.so 编辑使用该模块的服务的配置文件 vim /etc/pam.d/**.conf
查看shell cat /etc/shells
/var/log/secure 安全日志
修改用户shell
然后修改配置文件/etc/pam.d/login加入 auth required pam_shells.so,vim /etc/shells 将新建用户的shell在其中注释掉
pam_securetty.so
root允许登录的模块cat /etc/securetty在/etc/pam.d/remote 中注释掉 auth required pam_securetty.so 或在 /etc/securetty文件中加入对应的终端号
pam_nologin.so
建立/etc/nologin 或/var/log/nologin 该模块就自动生效不允许普通用户登录
ulimit 命令
ab命令,,压力测试
pam_limits.so模块限制资源
ulimit -a
pgrep -u 用户名 查看指定用户开启进程情况
vim /etc/secure/pam_limits.conf该配置文件中不仅可以定义用户也可定义服务进程的使用的资源。(该模块有自己单独的配置文件)
生产案例
* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
* soft memlock 32000
* hard memlock 32000
* soft msgqueue 8192000
* hard msgqueue 8192000
标签:严格 secure lis 相同 多少 login 机器 通过 沟通
原文地址:https://www.cnblogs.com/FightMG/p/11296144.html