标签: ssh

关于ssh审计的聊天记录

对用户的命令进行审计,并且通过syslog集中管理

r_ip=`who am i`
HISTTIMEFORMAT="$r_ip-$USER %Y-%m-%d %T>"
export PROMPT_COMMAND="history 1|tee -a /tmp/cmd_tmp|logger -t cmd_log -p local3.notice"

添加到/etc/profile 里面去到了

你们怎样对账号进行审计工作的呢?
只要是用户登录了 就会记录下用户的行为
哪怕是ssh su 后都可以追查到,不过对用户编写脚本后无法查看脚本内的具体命令

tee -a /tmp/cmd_tmp 这一段可以不要使用
或者你指定一个位置 将权限设置成222

因为默认是谁创建文件权限就只能属于谁 命令中会在本机保留一份 /var/log/mesages里面保留一份
你也可以设置你的syslog服务器不要保留到/var/log/mesages 直接发送到syslog服务器这样就只能是管理员才能看到了

解决unknown limit item ‘noproc’

这段时间为了对付攻击,看了几天的日志,发现每次看/var/log/secure这个日志的时候,都比上次增加了很多,除了被攻击出现的尝试登陆SSH外,还有一些东西

Apr 27 20:01:06 www crond[9449]: pam_limits(crond:session): unknown limit item ‘noproc’
Apr 27 20:01:06 www crond[9449]: pam_limits(crond:session): unknown limit item ‘noproc’
Apr 27 21:01:03 www crond[9541]: pam_limits(crond:session): unknown limit item ‘noproc’
Apr 27 21:01:03 www crond[9541]: pam_limits(crond:session): unknown limit item ‘noproc’
Apr 27 21:04:04 www sshd[9562]: pam_limits(sshd:session): unknown limit item ‘noproc’
Apr 27 21:04:04 www sshd[9562]: pam_limits(sshd:session): unknown limit item ‘noproc’
就是上边这些东西,占据了日志的大部内容,几乎1分钟就出一堆。”unknown limit item ‘noproc’”意思是未知的限制单位,看样子是关于limit session的,就是限制对话数的最大上限。查了一下资料,这东西归/etc/security/limits.conf这个配置文件管的,打开看了一下,里面有配置说明

# can be one of the following:\r\n
# – core – limits the core file size (KB)\r\n
# – data – max data size (KB)\r\n
# – fsize – maximum filesize (KB)\r\n
# – memlock – max locked-in-memory address space (KB)\r\n
# – nofile – max number of open files\r\n
# – rss – max resident set size (KB)\r\n
# – stack – max stack size (KB)\r\n
# – cpu – max CPU time (MIN)\r\n
# – nproc – max number of processes\r\n
# – as – address space limit (KB)\r\n
# – maxlogins – max number of logins for this user\r\n
# – maxsyslogins – max number of logins on the system\r\n
# – priority – the priority to run user process with\r\n
# – locks – max number of file locks the user can hold\r\n
# – sigpending – max number of pending signals\r\n
# – msgqueue – max memory used by POSIX message queues (bytes)\r\n
# – nice – max nice priority allowed to raise to values: [-20, 19]\r\n
# – rtprio – max realtime priority
看到高亮的部分没,是不是和我们的出错的信息”noproc“这东西很像,应该它就是罪魁祸首了。再往下看这个配置文件

# End of file\r\n
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535

不用我说,你也知道是什么原因了吧,应该把noproc改成nproc,意思就是最大的进程数(对话数)。

按理说原来肯定是没有错的,可能是LNMP一键按装包里有错误,希望作者可以把这个错误修正了,不然广大使用者都不知道错在什么地方。

转自http://www.noisyguy.com/archives/214.html

增强VPS主机安全linux主机使用密匙验证关闭密码认证的方法

注意,此方法未经测试,转自李思思博客,原文链接已不存在。

平时我们登录VPS都是帐号加密码的方式登录,但是这样呢很不安全,知道密码的人就能登录,不知道的还可以无限尝试,也就是被扫描,为了更加安全,所以出了这文章

好了废话少说,简单的说就三步
第一步 生成一对锁匙
密匙有公匙和私匙,形象的说就是钥匙和锁头,虽然这样说不太对,不过为了便于理解,我这里把公匙比喻为锁头,私匙比喻为钥匙
生成这一对锁匙有多种方法,先来最简单的,
我们先密码登录到我们的linux VPS上,键入如下命令
ssh-keygen -t rsa
然后会得到提示 叫你输入密码,如果你不想为这对锁头再加密码就直接输入2次回车即可,如果你为了更加安全希望这对锁匙加密的话可以输入自己的密码,也就是把你的钥匙变成高级的带密码的钥匙
提示画面应该是这样的
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
你得到了2个文件 在/root/.ssh/下面应该有 id_rsa(钥匙)和id_rsa.pub(锁头).
我们需要把锁头id_rsa.pub 改名字为 authorized_keys
(如果你需要这一对钥匙在别的VPS上也可以使用,而不是一个机子一个钥匙的话,可以把锁头和钥匙一起复制下来,在别的机子上直接把authorized_keys上传到/root/.ssh/下面即可)
好了 上面这些就是第一步 生成一对锁匙

第二步其实是因为putty.exe这个东西不能正确识别linux弄出的钥匙才需要的操作,
我们打开puttygen.exe 把我们的
钥匙id_rsa进行一下处理 如图显示

导入以后 点击 Save private key 得到的就是putty能正常使用的钥匙了(如果你前面加了密码需要你输入密码)

现在呢打开putty 尝试密匙登录

在连接那里可以输入自动登录的用户名,就可以免去输入用户名的烦恼
登录的时候会有如下提示
login as: root
Authenticating with public key “imported-openssh-key”
表示密匙登录成功
第三步就是关闭密码登录
远程Linux主机的/etc/ssh/sshd_config配置文件
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes    #======》这里把注释去掉,并改成no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes #========>把注释去掉,并改成no
修改后/etc/init.d/sshd reload #加载修改后的配置文件并生效
如果是debian的话使用 /etc/init.d/ssh reload 来重新加载配置文件
这样其他远程客户端如果没有私钥,那么这些用户连输入密码的机会都没有,就会被本主机直接断开

就这样教程完毕了

附加其他生成密匙的方法,有兴趣的继续看吧
方案一:使用puttygen.exe生成的密匙
1、用puttygen.exe生成一对密匙
1)、打开puttygen.exe,直接点击Generate,鼠标在Key区空白的位置频繁的晃动
加快随机数的产生,这样几秒钟就可以生成我们需要的密匙
2)、点击Save public key->id_rsa.pub(保存密匙)
因为puttygen.exe生成的格式和Linux系统使用的key格式不同,需要对生成的数据作些简单的修改:
比如源数据:
—- BEGIN SSH2 PUBLIC KEY —-
Comment: “rsa-key-gliethttp”
AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o
4vAWjJfOy3i6t2+o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH
2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpKnmCWihqX7rkQdY7xq3mOCJI3ry
Nnfkrh0=
—- END SSH2 PUBLIC KEY —-
修改成:(我使用的Linux主机名为gliethttp)
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o4vAWjJfOy3i6t2+
o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpK
nmCWihqX7rkQdY7xq3mOCJI3ryNnfkrh0= root@gliethttp
(注意:修改后的数据不能有回车换行)
3)、将生成的id_rsa.pub拷贝到远程主机gliethttp的/root/.ssh上
重命名为authorized_keys
[root@gliethttp root]#cd .ssh
[root@gliethttp .sh]#mv id_rsa.pub authorized_keys
这样sshd服务程序当接收到远程客户端的连接申请时会自动匹配.ssh/authorized_keys文件中的密匙
4)、点击Save private key->id_rsa.ppk(保存私钥)
如果安全级别不是很苛刻,可以不设置Key passphrase
2、打开putty.exe
1)、Session –> Host Name (填写服务器地址或者域名)
2)、Connection –> SSH –> Auth (点Browse选择刚生成的id_rsa.ppk)
3)、open
成功打开后出现如下提示:
login as: root
Authenticating with public key “imported-openssh-key”

修改SSH端口

1、最好是本机修改

2、首先查找SSH的配置文件
[root@linux ~]# find / -name ssh* -print
/usr/libexec/openssh/ssh-keysign
/usr/share/man/man8/sshd.8.gz
/usr/share/man/man8/ssh-keysign.8.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man1/ssh-keygen.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/doc/nss_ldap-226/pam.d/ssh
/usr/sbin/sshd
/usr/bin/ssh
/usr/bin/ssh-keygen
/usr/bin/ssh-add
/usr/bin/ssh-keyscan
/usr/bin/ssh-agent
/var/run/sshd.pid
/var/lock/subsys/sshd
/var/empty/sshd
/etc/ssh
/etc/ssh/ssh_config
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_key
/etc/ssh/sshd_config
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/pam.d/sshd
/etc/log.d/scripts/services/sshd2
/etc/log.d/scripts/services/sshd
/etc/log.d/conf/services/sshd2.conf
/etc/log.d/conf/services/sshd.conf
/etc/rc.d/init.d/sshd
[root@linux ~]#

3、修改的是 /etc/ssh/sshd_config 文件(注意不是ssh_config文件)
[root@linux ~]# vi /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 2222 //以前这个前面是有 # 号的,而且默认是 22 ,修改一下就ok了
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

4、重起ssh服务,修改端口才生效
[root@linux ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@linux ~]#

5、为了检验是否正确,可以使用 netstat -an

linux提高ssh安全性的方法

1. 修改sshd服务器的配置文件/etc/ssh/sshd_config,将部分参数参照如下修改,增强安全性。

# Port 5555
系统缺省使用22号端口,将监听端口更改为其他数值(最好是1024以上的高端口,以免和其他常规服务端口冲突),这样可以增加入侵者探测系统是否运行了 sshd守护进程的难度。

# ListenAddress 192.168.0.1
对于在服务器上安装了多个网卡或配置多个IP地址的情况,设定sshd只在其中一个指定的接口地址监听,这样可以减少sshd的入口,降低入侵的可能性。

# PermitRootLogin no
如果允许用户使用root用户登录,那么黑客们可以针对root用户尝试暴力破解密码,给系统安全带来风险。

# PermitEmptyPasswords no
允许使用空密码系统就像不设防的堡垒,任何安全措施都是一句空话。

# AllowUsers sshuser1 sshuser2
只允许指定的某些用户通过ssh访问服务器,将ssh使用权限限定在最小的范围内。

# AllowGroups sshgroup
同上面的AllowUsers类似,限定指定的用户组通过ssh访问服务器,二者对于限定访问服务器有相同的效果。

# Protocol 2
禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。
禁止所有不需要的(或不安全的)授权认证方式。

# X11Forwarding no
关闭X11Forwarding,防止会话被劫持。

# MaxStartups 5
sshd服务运行时每一个连接都要使用一大块可观的内存,这也是ssh存在拒绝服务攻击的原因。一台服务器除非存在许多管理员同时管理服务器,否则上面这 个连接数设置是够用了。
注意:以上参数设置仅仅是一个示例,用户具体使用时应根据各自的环境做相应的更改。

2. 修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。

# chmod 644 /etc/ssh/sshd_config

3. 设置TCP Wrappers。服务器默认接受所有的请求连接,这是非常危险的。使用TCP Wrappers可以阻止或允许应用服务仅对某些主机开放,给系统在增加一道安全屏障。这部分设置共涉计到两个文件:hosts.allow和 hosts.deny。
将那些明确允许的请求添加到/etc/hosts.allow中。如系统仅允许IP地址为192.168.0.15和10.0.0.11的主机使用 sshd服务,则添加如下内容:

# sshd:192.168.0.15 10.0.0.11
将需要禁止使用的信息添加到/etc/hosts.deny中。如对除了在hosts.allow列表中明确允许使用sshd的用户外,所有其他用户都禁 止使用sshd服务,则添加如下内容到hosts.deny文件中:

# sshd:All
注意:系统对上述两个文件的判断顺序是先检查hosts.allow文件再查看hosts.deny文件,因此一个用户在hosts.allow允许使用 网络资源,而同时在hosts.deny中禁止使用该网络资源,在这种情况下系统优先选择使用hosts.allow配置,允许用户使用该网络资源。

4. 尽量关闭一些系统不需要的启动服务。系统默认情况下启动了许多与网络相关的服务,因此相对应的开放了许多端口进行LISTENING(监听)。我们知 道,开放的端口越多,系统从外部被入侵的可能也就越大,所以我们要尽量关闭一些不需要的启动服务,从而尽可能的关闭端口,提供系统的安全性。
通过以上步骤基本上将sshd服务设置上可能出现的漏洞堵上了,不需要投资,只要我们稍微花点时间调整一下配置,就可极大提高系统的安全环境,何乐而不为呢?

安装和使用sz、rz

有了yum,安装就非常简单啦。

yum -y install lrzsz

使用方法(SecureCRT测试)
1、将linux上文件传到PC机上
shell> sz /etc/rc.local
例:
[root@test root]# sz /etc/rc.local
rz
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring rc.local…
100% 464 bytes 464 bytes/s 00:00:01 0 Errors
2、将PC机上文件传到linux上
shell> rz
选择要传送的文件,确定。

Redhat6开启ssh

简要的记两个命令:
永久开启
chkconfig sshd on
重启后失效
service sshd start

检查是否安装ssh服务端软件包
rpm -qa|grep openssh

moper:注意要在防火墙设置开启ssh的端口22。

转载一篇:《chkconfig用法对sshd各种服务应用介绍》

在当前大多数Linux发行版中可能都会包含这两个命令,chkconfig用法为我们控制Linux中的服务(守护进程)提供了很大的方便,先看看这两条命令的帮助:

[root@localhost ~]# service –help
Usage: service < option > | –status-all | [ service_name [ command | –full-restart ] ]

[root@localhost ~]# chkconfig –help
chkconfig 版本 1.3.29 – 版权 (C) 1997-2000 Red Hat, Inc.
在 GNU 公共许可的条件下,本软件可以被自由发行。

chkconfig用法: chkconfig –list [name]
chkconfig –add
chkconfig –del
chkconfig [–level ]

在我的系统上sshd默认不在系统服务列表里边,下面以sshd命令说明他们的用法:

输入service sshd会列出可用的一些操作:

[root@localhost ~]# service sshd
用法:/etc/init.d/sshd {start|stop|restart|reload|condrestart|status}

启动sshd服务:
service sshd start

停止sshd服务:
service sshd stop

将sshd添加到服务列表里边:
chkconfig –add sshd

使sshd可以开机自动运行:
chkconfig sshd on

还可以通过–level具体指定sshd的运行级别。

修改Kloxo登陆端口记录

Kloxo的端口默认是7777和7778,如果密码不够安全,或者遇到扫描,看人很容易被入侵。
怎样更改呢?仅仅是在面板上动动?不行的!

第一步:
进入Kloxo后,拉到最下面找到Advanced,点击里面的Port Config按钮。然后修改端口,Ssl Port指的是带https访问的端口,Plain Port指的是带http访问端口,如果选择Redirect Non Ssl To Ssl是强制使用https访问。

第二步:
这一步也是重点,重启Kloxo使之生效,注意是重启Kloxo,重启VPS或httpd是不生效的。
在SSH执行一下命令重启Kloxo,命令如下
/script/restart

重启后,就可以用新端口登陆,原来的端口被屏蔽。