init.d文件夹init.d 下没有httpdsshd怎么办

在机器上直接登录,问题显示如下: /var/empty/sshd must be owned by root and not group or world-writable. 问题: Linux上的SSH无法启动 报告/var/empty/sshd must be owned by root and not group or world-writable. 解决办法: 首先通过物理终端进入到linux上,手工检查ssh发现没运行 -bash-2.05b# /etc/init.d/sshd sta
在机器上直接登录,问题显示如下: /var/empty/sshd must be owned by root and not group or world-writable. 问题: Linux上的SSH无法启动 报告/var/empty/sshd must be owned by root and not group or world-writable. 解决办法: 首先通过物理终端进入到linux上,手工检查ssh发现没运行 -bash-2.05b# /etc/init.d/sshd sta
VPS是3个人合租共用的,不知道谁操作了什么导致SSH启动失败,一直连接不上刚开始以为系统坏了呢,后面通过VPS终端登陆上去发现SSH服务没在运行,于是尝试运行SSHD发现出现如下错误: Starting sshd: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
一、安装 Zlib 1、下载最新版本 Zlib Zlib 官方网站:http://www.zlib.net/ # cd /usr/local/src # wget -c http://www.zlib.net/zlib-1.2.3.tar.gz 2、编译安装 Zlib # tar xzvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 # ./configure --prefix=/usr/local/zlib # make # make install 这样,就把 zli
ProFTPd是一套可配置性强的开放源代码的FTP伺服器软件,名称最後的d字是因为在Linux中是用daemon来称呼。ProFTPd与Apache的配置方式类似,因此十分容易配置和管理,下面小编在使用proftpd碰到无法启动问题了,下面我们一起来看解决办法. 在CentOS 6 32bit系统的Xen VPS中安装Webmin后,发现proftpd服务未启动。 使用Putty输入 service proftpd restart 屏幕提示 Shutting down proftpd: [FAI
防火墙有助于过滤出入端口和阻止使用暴力法的登录尝试.我倾向于使用CSF(Config Server Firewall)这个强力防火墙.它使用了iptables,易于管理,而且对于不擅于输入命令的用户提供了web界面. 要安装CSF,先登录到服务器,切换到这个目录下: 代码如下: cd /usr/local/src/ 然后以root权限执行下面命令: 代码如下: wget /csf.tgz tar -xzf csf.tgz cd c
一.系统环境: Centos6.4 x86_64 192.168.6.171
192.168.6.173
二.关闭selinux 和 iptables(我这里是测试环境,也可以增加puppet端口8140) 代码如下: setenforce 0 /etc/init.d/iptables stop && chkconfig iptables off 三.更改主机名.使用host解析 代码如下: [root@test ~]
问题: 当我尝试使用SSH的X11转发选项连接到远程主机时, 我在登录时遇到了一个 "X11 forwarding request failed on channel 0" (X11 转发请求在通道0上失败)的错误。 我为什么会遇到这个错误,并且该如何修复它? 首先,我们假设你已经正确启用了SSH的X11转发。 如果你在登录时遇到"X11 forwarding request failed on channel 0" (X11 转发请求在通道0上失败),这里可能有不同的原因,解决的方法也不同。
自从使用php-syslog-ng监控日志信息后,经常发现一些过去会忽略的报错信息,目前正逐一解决中.其中一个报错发生在,我使用密钥通过ssh登陆到服务器的时候,日志信息显示: Nov 19 10:32:20 printserver auth 10:32:20 pam_loginuid[9691]: set_loginuid failed opening loginuid Nov 19 10:32:20 printserver auth 10:32:20 remote(pam_unix)[969
今天小编在iphone越狱时出现 DFU Mode Failed ,(如下图)因为这个错误,我在所有能查询的地方都找了,找不到答案,要不是就是什么你按住POWER的时间久了,要不是就是你电脑安装iTunes了没有?要不是就.....反正就都是一堆废话不解决实际问题的... 现在照我下面说的做,要严格按照步骤来, * 到“please make sure your device is both OFF and ........” 这一步的时候,先按着电源键,滑动关机。手全部放开。 * 确认关机后,
现在笔记本开如越来越多的使用SSHD混合硬盘,SSHD固态混合硬盘到底怎么样?优势在哪里?本文将为大家带来SSHD混合硬盘的详细介绍。 一、什么是SSHD混合硬盘? 混合硬盘顾名思义,就是机械硬盘与固态硬盘的结合体,混合硬盘采用了容量较小的闪存颗粒来存储常用文件,容量通常在8到16GB之间。即HDD内置闪存记忆体高速缓存的硬盘(SSD)。固态混合硬盘在传统硬盘的基础上添加了一小部分快速的、可支付的NAND闪存。而磁盘才是最为重要的存储介质,闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻
一、什么是SSHD混合硬盘? 混合硬盘顾名思义,就是机械硬盘与固态硬盘的结合体,混合硬盘采用了容量较小的闪存颗粒来存储常用文件,容量通常在8到16GB之间。即HDD内置闪存记忆体高速缓存的硬盘(SSD)。固态混合硬盘在传统硬盘的基础上添加了一小部分快速的、可支付的NAND闪存。而磁盘才是最为重要的存储介质,闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻道时间,提升效率。集传统硬盘和固态硬盘之所长:速度快、容量大、预算合理。固态混合硬盘(SSHD)技术的出现为用户获得更高设备性能、更丰富
电脑提示installer integrity check has failed一般是由以下情况导致的: 1.内存不兼容或其他硬件不兼容 2.下载程序已损坏 解决方法如下: 使用NCRC命令跳过installer检查具体步骤如下: 找到安装程序(如SETUP.EXE,具体的安装文件请自行按软件判断),右键创建快捷方式 右键点击刚刚创建的快捷方式,单击属性 在目标栏中的目标后按一个空格后输入/NCRC,输入好后运行快捷方式就可以安装了 如果成功即可进入安装程序。 出现错误,则说明文件损坏,需要重新
现在笔记本开如越来越多的使用SSHD混合硬盘,SSHD固态混合硬盘到底怎么样?优势在哪里?小编将给大家做个详细介绍。 一、什么是SSHD混合硬盘? 混合硬盘顾名思义,就是机械硬盘与固态硬盘的结合体,混合硬盘采用了容量较小的闪存颗粒来存储常用文件,容量通常在8到16GB之间。即HDD内置闪存记忆体高速缓存的硬盘(SSD)。固态混合硬盘在传统硬盘的基础上添加了一小部分快速的、可支付的NAND闪存。而磁盘才是最为重要的存储介质,闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻道时间,提升效率。
进程文件: sshd or sshd.exe 进程名称: Cygwin OpenSSH Secure Shell Daemon 进程类别:存在安全风险的进程 英文描述: sshd.exe is a process belonging to the Cygwin OpenSSH Secure Shell Daemon which offers a encrypted and secure shell across the Internet. f you dont know why OpenSSH
初学linux,把今天遇到问题的解决方法贴出来 环境:Centos 5.5 + MySQL-server-5.5.24-1.linux2.6.x86_64.rpm 遇到的问题: [root@sh158-xen data]#rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm error: Failed dependencies: MySQL conflicts with mysql-5.0.77-4.el5_4.2.x86_
本文章来给大家介绍在使用nginx报错 "readv() failed (104: Connection reset by peer)" 错误的解决办法。 错误提示 [error] readv() failed (104: Connection reset by peer) while reading upstream, client: x.x.x.x, server: host.tld, request: "POST /script.php, ... 解决办法 php-fp
故障现象: 关于笔记本使用的混合硬盘SSHD的简单介绍 解决方案: 一、什么是SSHD混合硬盘? 混合硬盘顾名思义,就是机械硬盘与固态硬盘的结合体,混合硬盘采用了容量较小的闪存颗粒来存储常用文件,容量通常在8到16GB之间。即HDD内置闪存记忆体高速缓存的硬盘(SSD)。固态混合硬盘在传统硬盘的基础上添加了一小部分快速的、可支付的NAND闪存。而磁盘才是最为重要的存储介质,闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻道时间,提升效率。集传统硬盘和固态硬盘之所长:速度快、容量大、预算合
电脑出现这个问题的截图: 1 问题具体描述 只有这个问题,其他方面都没问题。而且通过360安全卫士,QQ管家之类的软件卸载软件都没问题。但是控制面板里面的“添加与删除程序”打开就会出现这个问题,其他文件都有打开试一下,现在没有发现其他问题。 2 出现这个问题的原因 Value creation failed "at line 451意思是在451行变量创建错误!这是在卸载软件的时候发生错误,对于你的系统没任何影响。个人建议可以无视它,反正就“添加与删除程序”不能用而已不影响系统其他方面的使用。现
VMWare出现文件未能锁定(Failed to lock the file)的解决方法 问题出现的原因: 虚拟磁盘(.vmdk)本身有一个磁盘保护机制,为了防止多台虚拟机同时访问同一个虚拟磁盘(.vmdk)带来的数据丢失和性能削减方面的隐患,每次启动虚拟机的时候虚拟机会使用扩展名为.lck(磁盘锁)文件对虚拟磁盘(.vmdk)进行锁定保护。当虚拟机关闭时.lck(磁盘锁)文件自动删除。但是可能由于您非正常关闭虚拟机,这时虚拟机还没来得及删除您系统上的.lck(磁盘锁)文件,所以当下次您启动虚拟谁动了我的sshd(消失的sshd,诡异)(+真相) - Bash @ Linux - ITeye技术网站
博客分类:
消失的sshd
  上午一直登录在一台远程Linux服务器上,想拿一份最新的数据库数据来,于是用 mysqldump 导出并打包成 tar.gz;在本地的一台Linux服务器上执行 sftp,诡异的事情发生了。
[root@liunx0918 shtools]# sftp xxx.xxx.xxx.xxx
Connecting to xxx.xxx.xxx.xxx...
ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
Couldn't read packet: Connection reset by peer
[root@liunx0918 shtools]#
也就是说,这台服务器并没有启动 sshd 服务,这怎么可能呢,我不是还 ssh 在上面吗?
赶快上去看一下(因为一直登录在上面,还是可以操作的),发现少了 /usr/sbin/sshd 进程。
[root@www mysql]$ ps -ef|grep sshd
00:00:00 sshd: root@pts/0
0 15:05 pts/0
00:00:00 grep sshd
[root@www mysql]$
正常的系统是这样的:
[root@www mysql]$ ps -ef|grep sshd
00:00:00 sshd: root@pts/0 root
00:00:00 /usr/sbin/sshd
00:00:00 sshd: root@pts/1
0 15:05 pts/0
00:00:00 grep sshd
[root@www mysql]$
当时的第一想法是,赶快把 sshd 启动起来。紧张啊
[root@www mysql]$ service sshd start
sshd: 未被识别的服务
[root@www mysql]$
在 /etc/init.d/ 下没有找到 sshd 脚本
[root@www mysql]$ ls /etc/init.d/sshd
ls: /etc/init.d/sshd: 没有那个文件或目录
[root@www mysql]$
发现 openssh-server 包不翼而飞
[root@www mysql]$ rpm -qa | grep ssh
openssh-clients-4.3p2-82.el5
openssh-4.3p2-82.el5
[root@www mysql]$
正常的系统肯定有,不然怎么 ssh 登录。
[root@liunx0918 backup]# rpm -qa | grep ssh
openssh-4.3p2-36.el5
openssh-clients-4.3p2-36.el5openssh-server-4.3p2-36.el5
[root@liunx0918 backup]#
幸好,还有一个终端连在上面,赶快安装一下:
[root@www mysql]$ yum install -y openssh-server
然后重启 sshd 服务
[root@www mysql]$ service sshd start
这样终于可以从远程登录和下载文件了。松了一口气
关键的问题是:这个 sshd 为什么会不见了呢???黑客?!
在 .bash_history 文件中找到了这样的信息
yum remove tcp_wrappers
yum remove tcp_wrappers.i386 0:7.6-40.7.el5
在 /var/log/yum.log 中找到了如下信息
Jun 11 10:24:43 Erased: openssh-server
Jun 11 10:24:43 Erased: tcp_wrappers
Jun 11 11:46:05 Installed: tcp_wrappers-7.6-40.7.el5.i386
Jun 11 11:46:05 Installed: openssh-server-4.3p2-82.el5.i386
后面两条是我操作的,前面两条不是我操作的,而是别人真的把openssh-server给删了
后面问了一下,原来是云主机提供方帮助我们解决“无法远程访问某个服务”的问题,上去做了一些操作,没想到他会干出这样的事情来
不过还好,(1)发现得及时;(2)并非黑客所为;
可见:服务器的登录权限管控一定要做好,不然都不知道怎么死的。
codingstandards
浏览: 1791295 次
来自: 上海
不错,谢谢!
declare -p var,这个只有在var被赋值的情况下才 ...
博主加油哇!你坚持写,我们坚持看!
说的很有道理
详细.mark下java项目做好后,最终部署时,通常是通过SecureCRT(或其它终端)连接linux上传war包来进行。学几个基本的linux命令还是必要的。
一、CentOS上的SSH设置
1.1 终端窗口下,以root身份登录,修改hosts.allow,允许用户远程连接vi /etc/hosts.allow按 i 键切换到 insert模式,在最后一行加一句sshd:ALL然后按ESC返回命令模式,然后再按:进行末行模式,最后输入x 保存退出(注:如果保存时,提示文件只读,可以尝试 chmod +w hosts.allow 赋于写权限),可以用 tail /etc/hosts.allow 查看验证下文件内容是否正确
1.2 重启sshd
/etc/rc.d/init.d/sshd restart
重启完成后,应该就允许远程连接了
二、mac 机上 ssh 连接 CentOS
mac终端命令行,输入
ssh username@server-ip
注:这里username根据实际情况换成 相对的用户名,server-ip指centos的ip地址
三、mac机 ssh localhost
mac机上的SSH服务默认没开,如果ssh localhost,会提示22端口拒绝连接
3.1.启动sshd服务:sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
3.2.停止sshd服务:sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
3.3查看是否启动:sudo launchctl list | grep ssh
如果看到下面的输出表示成功启动了:---------------&0&com.openssh.sshd
3.4.最后ssh localhost 成功
四、windows环境中利用SeceureCRT连接 CentOS
全图形界面,地球人都懂
4.1 上传文件
4.2 下载文件
注:sz/rz命令如果未安装,cent os/linux下,可通过 sudo yum install -y lrzsz 安装
如果无法上网,可以将安装光盘加载到系统,然后在Package目录下,
通过命令 ls lrzsz* 可以查到安装包rpm文件
lrzsz-0.12.20-27.1.el6.x86_64.rpm
再以root身份安装
rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm
rz/sz命令,另一个常用的telnet命令也是采用类似的方式安装
在Package目录下,ls *telnet* 能查到二个文件
telnet-0.17-47.el6.x86_64.rpm& (这是telnet-client客户端)telnet-server-0.17-47.el6.x86_64.rpm (这是telnet-server服务端)
如果要安装telnet客户端
rpm -ivh telnet-0.17-47.el6.x86_64.rpm
4.3 查看目录
ls -l (也可以简写成 ll)
阅读(...) 评论()查看: 5941|回复: 4
注册时间最后登录在线时间1121 小时阅读权限90积分90966帖子主题精华0UID11131
小运维——知我罪我,其惟UNIX-like
956注册时间最后登录在线时间1121 小时阅读权限90积分90966帖子主题精华0UID11131
本帖最后由 lnfsddy 于
16:05 编辑
如果需要远程访问计算机并启用了 Secure Shell (SSH) 连接,黑客就会尝试突破您的防线并控制您的计算机,您必须接受这个事实。尽管不能保证计算机不会被 “黑客” 占领,但是一些简单的解决方案有助于保护 SSH,可以让攻击困难一些。本文讨论三种技术:
常用缩写词
API: 应用程序编程接口DNS: 域名系统IETF: Internet 工程工作小组LDAP: 轻量级目录访问协议RFC: 请求注解TCP: 传输控制协议UDP: 用户数据报协议
把 SSH 的标准端口改为不常用的值并增强 SSH 配置,从而挡住最简单的攻击。定义有限的用户列表,只允许这些用户登录。完全隐藏允许 SSH 访问的事实,要求根据特殊的 “敲门” 序列识别有效用户。
要想应用这些技术,需要能够访问根账户。另外,可能必须安装一些包,需要配置防火墙和路由器(如果有路由器的话),打开和关闭特定的端口并把数据包转发到您的计算机。
加强保护“隐匿产生安全” 这个概念尽人皆知而且受到大家的嘲笑,因为采用隐匿的方式,希望没人了解您的方法,这只是一厢情愿的想法。但是,在某些场景中,隐匿一点儿会有帮助。尽管简单的措施无法阻止下定决心的黑客,但是至少能够挡住那些 “脚本小子”,他们的脚本往往水平很一般。
人人都知道 SSH 连接的标准端口是 22。因此,为了让计算机更安全,应该采取的第一个措施是把端口改为另一个不常用的非标准端口号,比如 2 以上的号码通常都可以使用,但是应该查阅参考资料以避免导致问题。这一修改对您的影响仅仅是必须使用下面的命令连接计算机:
ssh -p 22960 your.machine.url
为了实现这个小措施,只需在 /etc/ssh/sshd_config 文件中做简单的修改。编辑此文件(必须作为根用户),寻找 Port 22 行,把端口号改为您选择的号码(如果这一行以镑符 [#] 开头,表示它被注释掉了,那么应该取消注释标志)。保存文件,用 /etc/init.d/sshd restart 命令重新启动 SSH。应该在防火墙上打开您选择的端口并关闭端口 22。
但是,还可以更进一步。编辑配置文件,在其中包含
所示的行。注意,其中一些行可能已经存在,但是可以把它们注释掉。
清单 1. 通过修改 SSH 配置文件简便地增强安全性
& && && && && && && && && && &&&Port 22960 LoginGraceTime 30 MaxAuthTries 3 Protocol 2 PermitRootLogin no
LoginGraceTime 允许一次登录花费 30 秒;如果用户花费的时间超过 30 秒,就不允许他访问,必须重新登录。MaxAuthTries 把错误尝试的次数限制为 3 次,3 次之后拒绝登录尝试。上面的 Protocol 2 行禁止使用比较弱的协议。最后一行不允许任何人作为根用户登录,这会让黑客攻击更困难。还可以使用 DenyUsers、AllowUsers、DenyGroups 和 AllowGroups 选项实现其他限制。这些修改不会显著增强计算机的安全性,但是只尝试强力攻击标准端口 22 的一般脚本会失败,不会造成损害。无论如何,这是向正确的方向迈出了第一步。在本文后面,我们将使用更安全的方法,不仅修改端口号,而且完全隐藏它。
谁可以进入?对于大多数人,PAM 是一种罐装的烹调油。但是作为 Linux(R) 安全术语,PAM 代表可插入身份验证模块(Pluggable Authentication Modules)。这些模块提供额外的身份验证规则,保护对计算机的访问。
首先讨论一个基本问题:究竟为什么要使用 PAM?如果每个程序不得不定义自己的身份验证逻辑,就会很混乱。如何确定所有应用程序都实现了相同的测试和检查?如果需要额外的控制手段,那么怎么办?难道要重新编写所有程序吗?在计算机科学领域,有时候可以用额外的一层解决所有问题,至少在安全方面是这样。如果一个程序需要验证用户的身份,它可以调用 PAM API。这个 API 负责执行在 PAM 配置文件中指定的所有检查。这种方法还允许方便地修改身份验证规则,所有感知 PAM 的程序都会自动地应用新规则,不需要修改它们的代码。如果希望使用某种生物学检查(比如虹膜扫描器或指纹采集器),而且生产商提供了 PAM,就可以方便地设置它。在配置文件中包含模块调用,所有应用程序就可以使用这个设备了。
配置 PAMPAM 提供四个安全领域的特性,但是应用程序不太可能同时需要所有这些方面。例如,passwd 命令只需要下面列表中的第三组:
account 处理账户限制。对于有效的用户,允许他做什么?auth 处理用户识别 — 例如,通过输入用户名和密码。password 只处理与密码相关的问题,比如设置新密码。session 处理连接管理,包括日志记录。
在 /etc/pam.d 目录中为将使用 PAM 的每个应用程序创建一个配置文件,文件名与应用程序名相同。例如,login 命令的配置文件是 /etc/pam.d/login。
必须定义将应用哪些模块,创建一个动作 “堆”。PAM 运行堆中的所有模块,根据它们的结果允许或拒绝用户的请求。还必须定义检查是否是必需的。最后,other 文件为没有特殊规则的所有应用程序提供默认规则。
optional 模块可以成功,也可以失败;PAM 根据模块是否最终成功返回 success 或 failure。required 模块必须成功。如果失败,PAM 返回 failure,但是会在运行堆中的其他模块之后返回。requisite 模块也必须成功。但是,如果失败,PAM 立即返回 failure,不再运行其他模块。sufficient 模块在成功时导致 PAM 立即返回 success,不再运行其他模块。
配置文件的结构很简单。可以包含注释,注释以散列符 (#) 开头;通过在换行处加上反斜杠 (\),可以把长的行分为多行。行有三个字段:领域 (account、auth、password 或 session)、控制标志(optional、required、requisite 或 sufficient)、将运行的模块的路径和参数。注意,第二个字段可以更复杂;更多信息见 。另外,可以使用 include 规则以包含其他文件中的规则,比如 auth include common-account。 特殊的 /etc/pam.d/other 文件是 “默认的” 配置文件(见 ),其中的规则自动地应用于没有自己的配置文件的所有应用程序。为了确保安全,应该快速检查 /etc/pam.d 目录,把您不使用的所有配置文件改为其他名称(这样就会使用 other 配置)。如果认为确实需要某个应用程序,那么只需把配置文件改回原来的名称。默认配置通常拒绝所有请求(通过使用 pam_deny.so 模块)并警告管理员(通过 pam_warn.so 模块),让管理员解决问题。 标准的 “other” 配置文件为没有自己的配置文件的所有应用程序提供安全的默认规则(拒绝所有请求)。
清单 2. 标准的 “other” 配置文件
& && && && && && && && && && &&&account required pam_deny.so auth required pam_deny.so auth required pam_warn.so password required pam_deny.so password required pam_warn.so session required pam_deny.so
如果把 pam_deny.so 替换为 pam_unix.so,就应用标准的身份验证方法(输入用户名和密码)。如果您不关心安全性,那么使用 pam_permit.so,这会允许任何请求!
一些可用方法 尽管没有标准的模块列表,但是所有发行版都包含以下模块中的大多数。请检查驻留模块的 /lib/security 或 /usr/lib/security 目录。对于 64 位操作系统,用 lib64 替换 lib。如果需要更多信息,可以尝试执行 man the.name.of.the.module,而不要直接执行它;PAM 不是可执行的二进制代码。
pam_access 根据 /etc/security/access.conf 文件允许或拒绝访问。稍后将使用此模块决定允许哪些用户登录。pam_cracklib 和 pam_pwcheck 检查新密码的强度。pam_deny 和 pam_permit 是基本模块,分别拒绝或允许访问。pam_echo 向用户显示指定文件的内容。pam_lastlog 向用户显示他上一次登录的日期和时间。pam_ldap.so 让用户根据 LDAP 服务器进行身份验证,提供跨网络的集中式身份验证。pam_limits 模块允许指定系统资源限制,限制在 /etc/security/limits.conf 文件中定义。pam_listfile 提供根据一个文件的内容允许或拒绝服务的另一种方法。pam_mail 检查用户是否有未处理的邮件。pam_motd 向用户显示 “message of the day” 文件。如果 /etc/nologin 文件存在,pam_nologin 阻止所有登录。pam_rootok 允许根用户访问,不执行进一步检查。/etc/pam.d/su 中常常包含这个模块;必需的行是 auth sufficient pam_rootok.so。根用户可以作为任何用户操作,不需要提供密码。pam_succeed_if 检查账户的特定属性,比如是否是某个组的成员。pam_time 可以根据 /etc/security/time.conf 中的规则限制对服务的访问。pam_unix(或 pam_unix2)提供基于 /etc/passwd 和 /etc/shadow 文件的传统 UNIX(R) 身份验证。pam_userdb 根据一个 Berkeley 数据库执行身份验证。pam_warn 在系统日志中记录信息。pam_wheel 只向 wheel 组的成员提供根访问权;必需的行是 auth required pam_wheel.so。
关于其他模块和编写自己的模块的信息,请查阅 。现在,使用 PAM 决定谁可以登录您的计算机。 用 PAM 限制访问现在,我们来使用 PAM 限制谁可以连接您的服务器。必须编辑 /etc/pam.d/sshd 文件,让它像清单 3 这样。
清单 3. 在 sshd PAM 文件中添加 pam_access.so
& && && && && && && && && && &&&#%PAM-1.0 account include common-account account required pam_access.so auth include common-auth auth required pam_nologin.so password include common-password session include common-session
在 sshd PAM 文件中添加 pam_access.so,就可以轻松地定义谁可以使用 SSH 连接您的计算机。pam_access.so 模块实现基于 /etc/security/access.conf 文件的安全控制,见清单 4。
清单 4. 通过使用 pam_access.so,定义谁可以或不可以使用 SSH
& && && && && && && && && && &&&+ : ALL : 192.168.1. + : jack : ALL + : jill : ALL - : ALL : ALL
第一行允许任何用户 (ALL) 从内部网络登录。后两行允许用户 jack 和 jill 从任何地方访问服务器。最后一行拒绝其他任何用户从其他任何地方访问。允许多个用户访问的另一种方法是使用 pam_listfile.so,这需要创建一个允许访问的用户列表(例如 /etc/ssh_users)。在 /etc/pam.d/sshd 文件中添加以下行:
auth required pam_listfile.so item=user sense=allow& & file=/etc/ssh_users onerr=fail
这还没有完。必须修改 /etc/ssh/sshd_config 文件,让它使用 PAM。在此文件中添加 UsePAM yes 行,重新启动 sshd 守护进程,这样就行了!
究竟是否有门?即使应用了前两节中的方法,无论您怎么预防,黑客仍然会尝试穿越您系统中任何开放的门户。改变 SSH 端口号对于经验丰富的黑客只能造成小小的麻烦。限制允许访问的用户会有帮助,但前提是没有用户落入黑客或社会工程攻击的圈套而泄露密码。无论如何,只要您的系统中有门,就会吸引黑客。
增强计算机安全性的最后一种方案是最激进的:关闭打开的端口,这会让任何攻击都无法攻破您的计算机。只向能够提供 “秘密敲门暗号” 的用户开放所需的端口,让用户能够输入密码并访问计算机。
这种技术称为端口敲门,适用于需要访问不向公众开放的服务器的用户。服务器可以关闭所有端口,直到用户提供一个秘密的敲门序列 (序列很容易实现,而且需要的资源不多)。
打开秘密端口之后,应用常用的安全机制(比如密码或证书)。只需在防火墙级上提供一个额外的安全层,需要秘密端口的所有服务就会正常工作。
这种方法的要点在于关闭所有端口并监视外部连接尝试。当识别出预定义的尝试序列(称为敲门序列 )时,可以执行打开端口等操作,让外部的用户能够进来。敲门序列的复杂程度由您决定,从简单的列表(比如依次尝试 TCP 端口 7000、UDP 端口 7100 和 TCP 端口 7200)到一次性序列集合都可以。(按密码学术语来说,一次性序列与 “一次一密” 相似,这是已知最安全的加密方法。)外面的用户必须知道使用 SSH 所需的端口号和密码,还必须知道打开端口并启用密码所需的敲门序列。如果没有这个序列,连接尝试就会静悄悄地失败。
这为什么是非常安全的方案?因为有 65,535 个端口(见 )。即使考虑到已经分配的端口,仍然有超过 60,000 个可用端口。如果敲门序列只包含四次 “敲门”,黑客要想通过强力攻击猜出序列,就必须测试大约 13,000,000,000,000,000,000 个序列(13 后面 18 个零)。这样的攻击显然不太可能奏效!当然,强力攻击或胡乱猜测并不是猜出正确序列的惟一方法。因此,不要只使用单一安全方法;而是使用一系列安全层来增加攻击的难度。 必须安装敲门守护进程 knockd;它监视敲门序列,当发现有效的序列时执行相应的操作。如果愿意,可以从头构建它,但是大多数(如果不是所有的话)发行版中都有这个包。最好使用包管理工具安装它。例如,在 OpenSUSE 中,可以使用 Yast2 或通过执行 sudo zypper install knockd 安装它。在 Ubuntu 中可以使用 sudo apt-get install knockd,在 Debian 中使用 sudo aptitude install knockd。用发行版的软件安装工具搜索 knockd 往往能够找到它。
安装这个包之后,必须编辑 /etc/knockd.conf 文件以指定端口敲门规则,然后启动守护进程。为了完成所需的设置,必须了解您的防火墙的工作方式。例如,在 OpenSUSE 中,可以使用
这样的设置。
清单 5. 针对 OpenSUSE 防火墙设计的示例配置文件
& && && && && && && && && && &&&[opencloseSSH]& &sequence= 00& &tcpflags= syn& &seq_timeout= 15& &cmd_timeout= 30& &start_command= /usr/sbin/iptables -s %IP% -I input_ext 1 -p tcp --dport 22960 -j ACCEPT& &stop_command= /usr/sbin/iptables -s %IP% -D input_ext -p tcp --dport 22960 -j ACCEPT
这个示例在用户依次在端口
和 9000 上敲门之后启用 SSH 访问。
在启动 knockd 之前,关闭端口 22960 并尝试远程登录。这个尝试应该会失败,见清单 6。
清单 6. 如果禁用 SSH 访问而且不启动敲门守护进程,登录尝试会失败
& && && && && && && && && && &&&& ssh the.url.for.your.site -p 22960 -o ConnectTimeout=15 ssh: connect to host the.url.for.your.site port 22960: Connection timed out
现在,使用 sudo /etc/init.d/knockd start 或 sudo knockd -d 启动端口敲门守护进程(这两个命令是等效的),然后再试一下;端口敲门序列要求在端口
和 9000 上敲门。必须在 15 秒内完成这个序列。识别出序列之后端口打开,必须在 30 秒内登录。否则,端口再次关闭。
为了检验这个过程,回到您的远程机器上并登录。这一次提供所需的敲门序列,见 。注意,在安装 knockd 时通常也会安装 knock 命令。如果不是这样,只需用发行版的包管理工具搜索它。
清单 7. 提供所需的敲门序列之后登录成功
& && && && && && && && && && &&&& knock the.url.for.your.site 7000 & knock the.url.for.your.site 8000 & knock the.url.for.your.site 9000 & ssh the.url.for.your.site -p 22960 -o ConnectTimeout=10 Password:
如果提供了错误的敲门序列(或根本没有敲门),会收到 “Connection timed out” 消息,SSH 端口仍然完全关闭,看不出它是存在的。
如果您处于路由器后面如果您的服务器通过路由器连接 Internet,就必须修改它的配置。具体细节因路由器和防火墙类型而异,但是一般来说应该:
打开敲门端口并把数据包转发到您的计算机,让 knockd 能够识别并处理它们。把端口 22960(SSH 连接使用的端口)上的数据包转发到您计算机上的端口 22960。配置您计算机的防火墙,让它拒绝对端口 22960 和敲门端口的连接。
尽管路由器会打开一些端口,但是对它们的所有访问都会到达您计算机的防火墙。访问会被阻止,除非探测到正确的端口敲门序列。
敲门配置/etc/knockd.conf 文件有一个一般选项小节 options,希望使用的每个敲门序列各有一个小节。选项可以是大写、小写或大小写混合形式。
在默认情况下,knockd 监视 eth0 接口。要想使用另一个接口(例如 eth1),可以包含 Interface=eth1 行。注意,只使用设备名而不是设备的完整路径。如果希望启用日志记录,可以通过包含 useSyslog 行使用标准的 Linux 日志文件,也可以通过包含 LogFile=/the/full/path/to/your/file 使用自己的文件。但是,应该认识到日志记录是一个漏洞;如果黑客获得了日志,入侵者就会掌握端口敲门序列。如果希望能够检查 knockd 是否仍然在运行,那么包含 PidFile=/the/full/path/to/a/PID/file。这个守护进程的进程 ID (PID) 将存储在这个文件中。应该通过一个 cron 任务定期检查 knockd 是否仍然在运行并在需要时重新启动它。注意,当这个守护进程停止运行时,系统是安全的;所有端口关闭,不可访问。在守护进程重新启动之前,用户无法登录。
可以让 knockd 监听多个序列并以不同方式响应各个序列。在前面的示例中,让 knockd 打开 SSH 端口;可以简单地启用 HTTP 端口,让用户能够访问 web 服务器,也可以运行特定的进程。在配置文件中,每个序列都有相应的小节。
使用 sequence 定义敲门序列,比如 00。在默认情况下,敲门使用 TCP,但是可以添加 UDP 以增加复杂性,比如 :udp,9000。除了使用固定的序列之外,还可以指定一个包含 “一次性序列” 的文件,这些序列在使用之后就会删除,不能再次使用。指定这种序列的方法如下: one_time_sequences=/the/full/path/to/a/sequences/file
使用任何文本编辑器创建此文件;其中每行包含一个序列(按照上面所示的格式)。应该在远程计算机上保存此文件的拷贝以便记住如何登录。可以指定应该扫描哪些到达的 TCP 数据包,丢弃不与 ACK、FIN、PSH、RST、SYN 或 URG 标志匹配的数据包。对于 SSH 连接,应该使用 TCPFlags=SYN。可以用 Seq_Timeout=seconds.to.wait 指定完成一个序列的最大时间。如果在此时间内没有输入完整的序列,就不会识别出它,访问被拒绝。可以用 Cmd_Timeout=seconds.to.wait 指定在识别出序列之后用户执行第二个命令的最大时间。如果提供了敲门序列的用户没有快速地输入下一个命令(例如登录),端口会再次关闭。最重要的参数是 Start_mand.to.execute,它指定成功地识别出敲门序列之后要执行的命令或脚本。如果需要引用敲门者的 IP 地址(例如为了允许从他的计算机连接您的计算机),可以使用 %IP%。在运行时,它会替换为正确的值。在上面的示例中指定: /usr/sbin/iptables -s %IP% -I input_ext 1 -p tcp --dport 22960 -j ACCEPT
iptables 向提供敲门序列的 IP 地址上的用户开放端口 22960。另一个重要的参数是 Stop_mand.to.execute;当超过 Cmd_timeout 时间之后,执行它指定的命令或脚本。
在这里,因为只希望打开或关闭端口 22960,所以使用单一命令就够了。如果需要更复杂的操作,可以通过调用脚本执行所需的任何操作 — 操作甚至可以完全不涉及打开端口。可以触发任何操作,比如运行进程或执行备份。当然,了解要使用的命令可能有点儿难度。例如,因为我运行 OpenSUSE,它提供自己的防火墙前端,所以我不得不通过查看 iptables -l 的输出了解应该执行哪个命令来打开或关闭端口 22960。
对于 knockd 本身,有几个选项需要考虑:
-c:允许指定默认配置文件 /etc/knockd.conf 之外的另一个配置文件-d:让 knockd 作为后台守护进程运行,这是标准运行方式-D:提供输出调试消息-h:提供关于语法和选项的帮助-i:允许指定默认的 eth0 接口之外的其他接口-l:为日志项启用 DNS 查找 — 这是一种不好的做法,因为这强迫计算机使用 DNS 通信流,会产生漏洞-v:提供更详细的消息和解释-V:提供程序的版本号
最后,可以使用多种方法产生敲门序列本身,编写 knock 命令是最简单的方法。
以下命令在 TCP 端口 7000 上敲门:
knock the.url.for.your.site 7000
以下命令在 UDP 端口 8000 上敲门:
knock the.url.for.your.site -u 8000
knock the.url.for.your.site 8000:udp
-h 参数提供这个命令的帮助。
结束语您看到了三种保护 SSH 访问的方法:修改 sshd 的配置参数,通过 PAM 限制可以登录的用户,以及使用端口敲门序列隐藏存在 SSH 访问的事实。尽管没有任何方法能够完全保护任何计算机,但是采取这三个措施会让您的服务器安全一些。
关于作者Federico Kereki 是一名来自乌拉圭的系统工程师,拥有超过 20 年的开发、咨询和大学教学的经验。目前,他正在与各种各样的缩略词打交道:SOA、GWT、Ajax、PHP,当然还有 FLOSS!
天道酬勤——UNIX真美!GNU/Linux更美!
子曰:君子务本,本立而道生!
注册时间最后登录在线时间404 小时阅读权限90积分73727帖子主题精华0UID192
注册时间最后登录在线时间404 小时阅读权限90积分73727帖子主题精华0UID192
挺好,顶一下
注册时间最后登录在线时间398 小时阅读权限90积分25513帖子主题精华0UID3082
注册时间最后登录在线时间398 小时阅读权限90积分25513帖子主题精华0UID3082
不错,学习了。
注册时间最后登录在线时间219 小时阅读权限70积分8688帖子主题精华0UID74
金牌会员, 积分 8688, 距离下一级还需 1312 积分
注册时间最后登录在线时间219 小时阅读权限70积分8688帖子主题精华0UID74
本帖最后由 nginxman 于
23:50 编辑
PAM很有学问:
编辑 /etc/pam.d/sshd,在最前面加入
& & auth& &&&required& && &pam_tally2.so deny=2 lock_time=60
如果输入密码两次错误就锁定60秒以后才可登陆。
工作太忙,不上QQ/MSN,但每天会上LinuxTone学习!
注册时间最后登录在线时间306 小时阅读权限50积分1398帖子主题精华4UID1049
高级会员, 积分 1398, 距离下一级还需 602 积分
注册时间最后登录在线时间306 小时阅读权限50积分1398帖子主题精华4UID1049
支持楼主的务实精神,真要是超级黑客想搞你,想防住很难很难,只有千日做贼,哪有千日防贼的。
我们的安全策略就很简单,隔离:
1,核心节点搭建VPN服务器,只开放来自VPN服务器的SSH访问请求;
2,其他节点只接收来自北京机房和公司IP的SSH请求;
Medal No.10
Medal No.9
IT运维专家网感谢您的支持
合作联系: QQ:/MSN:/mail:netseek@linuxtone.org </s
Powered by}

我要回帖

更多关于 init.d 没有mysql 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信