配置安全的ssh服务器(转:http://hi.baidu.com/9812658/blog/item/32d3a8d37c9bd4d8572c8413.html)

配置安全的ssh服务器





一、了解RSA

二、什么是SSH


三、SSH协议的内容


四、SSH协议的安全验证


五、SSH的应用



六、开始配置SSH服务器

1、首先确认系统已经安装了以下两个包

[root@localhost ~]# rpm -qa | grep "zlib-[0-9]"(zlib包至少为1.1.4版本)
[root@localhost ~]# rpm -qa | grep "openssl-[0-9]"(openssl包至少为0.9.6版本)


2、下载并安装openssh安装包


1)下载OpenSSH
(1)官方网:www.openssh.org
(2)下载当前最新版:OpenSSH 5.3/5.3p1
[root@localhost ~]# wget ftp://mirror.mcs.anl.gov/pub/openssh/portable/openssh-5.3p1.tar.gz

2)安装OpenSSH具体看OpenSSH.tar.gz包中的INSTALL文件)
[root@localhost ~]# tar -zxvf openssh-5.3p1.tar.gz; cd openssh-5.3p1
[root@localhost openssh-5.3p1]# touch run.sh; chmod u+x run.sh

然后在run.sh文件中输入以下几行内容:

[root@localhost openssh-5.3p1]# ./run.sh && make && make install
[root@localhost openssh-5.3p1]# cp contrib/redhat/sshd.pam /etc/pam.d/sshd
注意:一定不要忘记拷贝sshd.pam到/etc/pam.d目录下,并改名为sshd,要不然用户就不能通过SSH服务器的 ”基于口令的安全验证” 方式,从而不能登录SSH服务器
[root@localhost ~]# echo "/usr/local/openssh/sbin/sshd &" >> /etc/rc.local
注意:安装完以后,把sshd服务启动加入到rc.local脚本中,从而实现系统时,自动启动该服务
[root@localhost openssh-5.3p1]# cp /usr/local/openssh/share/man/man1/* /usr/local/share/man/man1/
[root@localhost openssh-5.3p1]# cp /usr/local/openssh/share/man/man5/* /usr/local/share/man/man5/
[root@localhost openssh-5.3p1]# cp /usr/local/openssh/share/man/man8/* /usr/local/share/man/man8/
注意:把帮助文件拷贝到/usr/local/share/man/下面,已便用man命令查看帮助
[root@Mylinux ~]# useradd ruanxi; passwd ruanxi
[root@Mylinux ~]# useradd crsky; passwd crsky
[root@Mylinux ~]# groupadd SSHadmin
[root@Mylinux ~]# vi /etc/group
把用户ruanxi加入到组SSHadmin中,修改/etc/group中的内容:SSHadmin:x:503:ruanxi

注意:这里把用户加入SSHadmin组中的目的是:让ruanxi能够登录SSH服务器,而用户crsky没有加入到SSHadmin组中,也就无法登录SSH服务器了,因为一般系统管理员的人数不会很多,所以我们只让系统管理员有权登录SSH服务器,其他人员禁止登录,这样能让服务器更安全(具体还得配置sshd_config文件)


3)修改配置文件


(1)安装完openssh后,会生成以下几个配置文件
(注意:这些
生成的配置文件具体要放在哪个位置?这是由 --sysconfigdir参数指定的)
moduli          #ssh服务器的Diffie-Hellman密钥文件
ssh_config    #ssh客户端配置文件
sshd_config    #ssh服务器配置文件
ssh_host_dsa_key          #ssh服务器dsa算法私钥
ssh_host_dsa_key.pub   #ssh服务器dsa算法公钥
ssh_host_rsa_key          #ssh服务器rsa算法私钥
ssh_host_rsa_key.pub   #ssh服务器rsa算法公钥


(2)编辑ssh服务器配置文件(sshd_config)
[root@localhost ~]# vi /usr/local/openssh/ssh_config

#默认使用的监听端口: 22 ,将监听端口更改为其他值(最好是在1024以上的高位端口号)
#
以免与其他常规服务端口相冲突,这样就可以增加入侵者探测系统是否运行了sshd守护进程的难度
Port 2222

#指定sshd应当使用哪种地址族,any表示使用: IPv4IPv6
AddressFamily any

#如果SSH服务器上安装了多个网卡或者配置多个IP地址时, 我们可以设置sshd只在其中
#
一个指定的接口地址上监听,这样的好处是可以减少sshd的入口,增加安全性,降低入侵的可能性
ListenAddress 192.168.1.100

#禁止使用SSHv1协议, 因为其存在设计缺陷, 不安全
Protocol 2

#主机私钥文件的位置
#HostKey /usr/local/openssh/ssh_host_rsa_key
#HostKey /usr/local/openssh/ssh_host_dsa_key

#设置日志消息通过哪个日志子系统facility发送,默认是AUTH
#
: 当有人使用SSH登入系统的时,SSH会记录资讯到/var/log/secure文件中
SyslogFacility AUTH

#设置记录登录sshd的日志等级, INFO表示记录任何日志
LogLevel INFO

#当使用者连接上SSH Sever之后, 会出现输入密码的画面
#
在该画面中, 如果在2分钟内没有成功的连接上SSH Server,那么就断线
LoginGraceTime 2m

#不允许直接使用root账号来登录sshd服务器,增强系统的安全
PermitRootLogin no

#要求sshd在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查
StrictModes yes

#指定每个连接最大允许的认证次数为6
#
如果失败认证的次数超过这个数值的一半3,那么连接将被强制断开,且生成额外的失败日志消息
MaxAuthTries 6

#指定每个网络连接允许打开会话的最大数目为10
MaxSessions 10

#允许公钥论证
#PubkeyAuthentication yes

#存放该用户可以用来登录的RSA/DSA公钥,即: SSH服务器用来验证用户密码的文件
#AuthorizedKeysFile      .ssh/authorized_keys

#设置是否使用~/.ssh/rhosts/etc/hosts.equiv并配合RSA算法进行安全验证,建议设置成"no"值,因为不安全
HostbasedAuthentication no

#RhostsRSAAuthentication HostbasedAuthentication过程中
#
不忽略家目录内的 ~/.ssh/known_hosts这个档案所记录的主机内容
IgnoreUserKnownHosts no

#RhostsRSAAuthentication HostbasedAuthentication过程中
#
忽略~/.ssh/.rhosts~/.ssh/.shosts文件进行认证
IgnoreRhosts yes

#允许使用基于密码的认证
#PasswordAuthentication yes

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
01-01 08:11:27.038 E/StrictMode( 2641): Tried to access the API:ViewConfiguration which needs to have proper configuration from a non-UI Context:com.android.camera.app.CameraApp@32d9eff The API:ViewConfiguration needs a proper configuration. Use UI contexts such as an activity or a context created via createWindowContext(Display, int, Bundle) or createConfigurationContext(Configuration) with a proper configuration. 01-01 08:11:27.038 E/StrictMode( 2641): java.lang.IllegalAccessException: Tried to access the API:ViewConfiguration which needs to have proper configuration from a non-UI Context:com.android.camera.app.CameraApp@32d9eff 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.StrictMode.assertConfigurationContext(StrictMode.java:2296) 01-01 08:11:27.038 E/StrictMode( 2641): at android.view.ViewConfiguration.get(ViewConfiguration.java:521) 01-01 08:11:27.038 E/StrictMode( 2641): at android.view.View.<init>(View.java:5321) 01-01 08:11:27.038 E/StrictMode( 2641): at android.widget.ImageView.<init>(ImageView.java:181) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.PhotoItem.getView(PhotoItem.java:127) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.CameraFilmstripDataAdapter.getView(CameraFilmstripDataAdapter.java:151) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.widget.FilmstripView.buildViewItemAt(FilmstripView.java:850) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.widget.FilmstripView.reload(FilmstripView.java:1827) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.widget.FilmstripView.access$1300(FilmstripView.java:58) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.widget.FilmstripView$3.onFilmstripItemLoaded(FilmstripView.java:1567) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.CameraFilmstripDataAdapter.replaceItemList(CameraFilmstripDataAdapter.java:276) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.CameraFilmstripDataAdapter.access$700(CameraFilmstripDataAdapter.java:39) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.CameraFilmstripDataAdapter$QueryTask.onPostExecute(CameraFilmstripDataAdapter.java:447) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.camera.data.CameraFilmstripDataAdapter$QueryTask.onPostExecute(CameraFilmstripDataAdapter.java:379) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.AsyncTask.finish(AsyncTask.java:771) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.AsyncTask.access$900(AsyncTask.java:199) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.Handler.dispatchMessage(Handler.java:106) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.Looper.loopOnce(Looper.java:201) 01-01 08:11:27.038 E/StrictMode( 2641): at android.os.Looper.loop(Looper.java:288) 01-01 08:11:27.038 E/StrictMode( 2641): at android.app.ActivityThread.main(ActivityThread.java:7870) 01-01 08:11:27.038 E/StrictMode( 2641): at java.lang.reflect.Method.invoke(Native Method) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 01-01 08:11:27.038 E/StrictMode( 2641): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值