zoukankan      html  css  js  c++  java
  • linux远程登录(Telnet、SSH)

    系统:RHEL 5.5 64位,使用CentOS的yum源并作更新处理

    参考书目《Linux兵书》/电子工业出版社/刘丽霞,细节之处稍有变动。

    一、Telnet(远程登录推荐SSH)

    1、安装、启动Telnet

    1.1、安装和启动一般需要两个包:

         telnet-client提供客户端程序

         telnet-server提供服务器端程序

    1.2、安装之前,确定是否已经安装Telnet

    [root@localhost Server]# rpm -qa|grep telnet
    telnet-server-0.17-39.el5
    telnet-0.17-39.el5

    说明已经安装,若未安装,可挂载RHEL5.5的DVD光盘镜像,在Server文件夹下找到并安装下面三个包:

    [root@localhost Server]# rpm -ivh xinetd-2.3.14-10.el5.x86_64.rpm    #先安装这个包

    [root@localhost Server]# rpm -ivh telnet-

    telnet-0.17-39.el5.x86_64.rpm telnet-server-0.17-39.el5.x86_64.rpm   #这两个包的安装顺序是从左到右依次安装

    1.3、启动:

    方法一:

    用# setup命令,选择系统服务,在里面找到Telnet,用空格键选中(前面加*),然后用Tab键选择确定,退出。

                                    

    方法二:xinetd启动

    # vim /etc/xinetd.d/telnet

    修改后文件如下:

    # default: on
    # description: The telnet server serves telnet sessions; it uses 
    # unencrypted username/password pairs for authentication.
    service telnet
    {
    #disable = no            这里将no改为yes
    disable = yes
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    }
    View Code

    重启服务

    [root@localhost Server]# service xinetd restart              #这种方式在这里有问题哈。。。。。
    bash: service: command not found
    [root@localhost Server]# /etc/init.d/xinetd restart          #用这个吧
    停止 xinetd:                                              [失败]
    启动 xinetd:                                              [确定]

    2、配置Telnet

    2.1、设置端口

    # vim /etc/services ,修改默认23端口为未使用的端口号,如22182:
    telnet          22183/tcp
    telnet          22183/udp
    [root@localhost Server]# /etc/init.d/xinetd restart    #重启服务

    2.2、Telnet服务限制

    Telnet用明文传送口令和数据,有时有必要对其服务范围进行限制

    # vim /etc/xinetd.d/telnet修改文件如下:

    # default: on
    # description: The telnet server serves telnet sessions; it uses 
    #       unencrypted username/password pairs for authentication.
    service telnet
    {
            disable = no
            #disable        = yes
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/sbin/in.telnetd
            log_on_failure  += USERID
            bind            =192.168.111.23  #主机地址
            only_from       =192.168.0.0/16  #只允许192.168.0.0-192.168.255.255网段之间的计算机登录
            #only_from       = .edu.cn        #只允许教育网接入
            #no_access        =210.45.160.{115,116}   #这两个IP地址不可用
            #access_times    =7:00-12:00 15:00-23:00  #每天这两个时间段开放服务
    }
    View Code

    2.3、Telnet的root用户登录

    Telnet默认不允许root登录,若要root登录,方法如下:

    方法一:

      # vim /etc/pam.d/login

    找到下面一行,注释掉:

    #account    required     pam_nologin.so   将这一行加上注释

    方法二:

    # mv /etc/securetty /etc/securetty_bankup

    注意:非特殊情况,请勿这样操作

    3、Telnet的会话示例:

    登陆命令(只须提供登陆的主机名和用户):

    telnet  [-l user ]  [-a]   host-name   [port]

    [root@localhost Server]# telnet 127.0.0.1
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    Red Hat Enterprise Linux Server release 5.5 (Tikanga)
    Kernel 2.6.18-194.el5 on an x86_64 
    login: vnc
    Password: 
    Last login: Wed May  6 17:59:20 on :0
    [vnc@localhost ~]$ su
    口令:
    [root@localhost vnc]# exit
    exit
    [vnc@localhost ~]$ exit
    logout
    
    Connection closed by foreign host.
    [root@localhost Server]# 
    View Code

    注意:需要关闭防火墙,或直接打开22183端口,

    (参考文档:http://blog.sina.com.cn/s/blog_866c5a5d0101ckr1.html

    # vim /etc/sysconfig/iptables

    添加下面一行代码:

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22183 -j ACCEPT

    用Xshell打开截图如下:

                         

    二、SSH

    SSH优点:传输的数据经过加密,有效防止“中间人”攻击、DNS和IP欺骗;传输数据经过压缩,传输速度快。

    SSH有很多功能,既可代替Telnet,又可为FTP、POP、甚至PPP提供安全通道

    注意:有两个不兼容的版本1.x和2.x;

            OpenSSH是SSH的免费替代软件,应用较广泛;

            若准备使用SSH,一定要应用到所有服务器上,如9台安全的服务器和一台不安全的服务器配在一起是没安全性可言的。

    1、安装启动SSH

    1.1、查看有无安装SSH

    [root@localhost Server]# rpm -qa|grep ssh
    openssh-4.3p2-41.el5
    openssh-server-4.3p2-41.el5
    openssh-clients-4.3p2-41.el5
    openssh-askpass-4.3p2-41.el5

    如无安装,挂载系统镜像,安装下列软件:

    [root@localhost Server]# rpm -ivh openssh-
    openssh-4.3p2-41.el5.x86_64.rpm          openssh-clients-4.3p2-41.el5.x86_64.rpm
    openssh-askpass-4.3p2-41.el5.x86_64.rpm  openssh-server-4.3p2-41.el5.x86_64.rpm
    View Code

    1.2、启动

    三种方式:

    # service sshd start    方法一
    启动 sshd:                                                [确定]
    # /etc/rc.d/init.d/sshd restart    方法二
    停止 sshd:                                                [确定]
    启动 sshd:                                                [确定]

    方法三(开机启动):

    #setup,在系统服务中找到sshd,前面加上*,确定,退出即可

    2、简单测试使用SSH

    测试SSH提供的安全登录功能:

    ssh  -l  [your accountname on the remote host]  [address of the remote host]

    例子:

    # ssh -l root 127.0.0.1
    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is 76:b3:02:d2:35:18:60:e6:c7:99:a3:01:08:fa:24:85.
    Are you sure you want to continue connecting (yes/no)? ye
    Please type 'yes' or 'no': yes
    Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
    root@127.0.0.1's password: 
    [root@localhost ~]# who
    vnc      :0           2015-05-06 17:59
    vnc      pts/1        2015-05-06 17:59 (:0.0)
    root     pts/2        2015-05-06 20:08 (localhost.localdomain)
    [root@localhost ~]# who am i
    root     pts/2        2015-05-06 20:08 (localhost.localdomain)
    [root@localhost ~]#
    View Code

    3、两个配置文件

    /etc/ssh/ssh_config 为OpenSSH系统范围内的配置文件
     1 [root@localhost ~]# cat /etc/ssh/ssh_config 
     2 #       $OpenBSD: ssh_config,v 1.21 2005/12/06 22:38:27 reyk Exp $
     3 
     4 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
     5 # Host *                               #只对能够匹配后面字符串的计算机有效,*代表所有主机
     6 #   ForwardAgent no
     7 #   ForwardX11 no
     8 #   RhostsRSAAuthentication no         #是否用RSA算法的基于rhosts的安全验证
     9 #   RSAAuthentication yes              #是否用RSA算法进行安全验证
    10 #   PasswordAuthentication yes         #是否用口令验证
    11 #   HostbasedAuthentication no
    12 #   BatchMode no
    13 #   CheckHostIP yes                    #设置SSH是否查看连接到服务器的主机的IP地址,以防止DNS欺骗
    14 #   AddressFamily any
    15 #   ConnectTimeout 0
    16 #   StrictHostKeyChecking ask
    17 #   IdentityFile ~/.ssh/identity       #设置从哪个文件读取用户的RSA安全验证标识
    18 #   IdentityFile ~/.ssh/id_rsa
    19 #   IdentityFile ~/.ssh/id_dsa
    20 #   Port 22                       #设置连接到远程主机的端口
    21 #   Protocol 2,1
    22 #   Cipher 3des                   #设置加密用的密码
    23 #   Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
    24 #   EscapeChar ~                  #设置escape字符
    25 #   Tunnel no
    26 #   TunnelDevice any:any
    27 #   PermitLocalCommand no
    28 Host *
    省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    View Code
    /etc/ssh/sshd_config 为OpenSSH的配置文件,关键词忽略大小写。(参数说明,参考:http://blog.sina.com.cn/s/blog_59e866610100aulb.html
    [root@localhost ~]# cat /etc/ssh/sshd_config 
    省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    #Port 22                                #设置sshd监听的端口号
    #Protocol 2,1
    Protocol 2                              #指定ssh支持的通信协议版本
    #AddressFamily any
    #ListenAddress 0.0.0.0                  #设置sshd服务器绑定的IP地址
    #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
    
    # Lifetime and size of ephemeral version 1 server key
    #KeyRegenerationInterval 1h
    #ServerKeyBits 768                     #定义服务器秘钥的位数
    
    # Logging
    # obsoletes QuietMode and FascistLogging
    #SyslogFacility AUTH
    SyslogFacility AUTHPRIV
    #LogLevel INFO
    
    # Authentication:
    
    #LoginGraceTime 2m             #设置如果用户不能成功登陆,在切断连接之前服务器需要等待的时间(以秒为单位)
    #PermitRootLogin yes           #是否允许root登陆
    #StrictModes yes
    #MaxAuthTries 6                #限制用户错误登陆次数
    
    #RSAAuthentication yes
    #PubkeyAuthentication yes
    #AuthorizedKeysFile     .ssh/authorized_keys
    
    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    #RhostsRSAAuthentication no
    # similar for protocol version 2
    #HostbasedAuthentication no
    # Change to yes if you don't trust ~/.ssh/known_hosts for
    # RhostsRSAAuthentication and HostbasedAuthentication
    #IgnoreUserKnownHosts no
    # Don't read the user's ~/.rhosts and ~/.shosts files
    #IgnoreRhosts yes
    
    # To disable tunneled clear text passwords, change to no here!
    #PasswordAuthentication yes
    #PermitEmptyPasswords no
    PasswordAuthentication yes                   #是否允许口令验证
    
    # Change to no to disable s/key passwords
    #ChallengeResponseAuthentication yes
    ChallengeResponseAuthentication no
    
    # Kerberos options
    #KerberosAuthentication no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    #KerberosGetAFSToken no
    
    # GSSAPI options
    #GSSAPIAuthentication no
    GSSAPIAuthentication yes
    #GSSAPICleanupCredentials yes
    GSSAPICleanupCredentials yes
    
    省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    #UsePAM no
    UsePAM yes
    
    # Accept locale-related environment variables
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
    AcceptEnv LC_IDENTIFICATION LC_ALL
    #AllowTcpForwarding yes
    #GatewayPorts no
    #X11Forwarding no
    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    #PrintMotd yes
    #PrintLastLog yes
    #TCPKeepAlive yes
    #UseLogin no
    #UsePrivilegeSeparation yes
    #PermitUserEnvironment no
    #Compression delayed
    #ClientAliveInterval 0   #指定服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.如ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了
    #ClientAliveCountMax 3   #使用默认值3即可,表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
    #ShowPatchLevel no
    #UseDNS yes
    #PidFile /var/run/sshd.pid
    #MaxStartups 10
    #PermitTunnel no
    #ChrootDirectory none
    
    # no default banner path
    #Banner /some/path
    
    # override default of no subsystems
    Subsystem       sftp    /usr/libexec/openssh/sftp-server
    View Code

     4、SSH的秘钥管理

    SSH的秘钥管理主要包括两方面:生成公钥/私钥对和公钥的分发

    4.1、生成用户自己的密钥对

    4.1.1、好处:

    (1)、可以防止“中间人”这种攻击方式

    (2)、可以只用一个口令就登陆到所有用户想登陆的服务器上

    4.1.2、生成密钥:

    # ssh-keygen                                            #1.x版本,若为2.x版本用 # ssh-keygen -d
    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:
    

    此时,用户有一对密钥:公钥要发布到所有用户想用SSH登陆的远程主机上去;私钥要妥善保管,防止他人知晓

    查看/root/.ssh/目录下相应文件的访问权限,必须是“-rw------"

    4.2、分发公用密钥

    在每一个用户需要用SSH连接的远程服务器上,用户在自己的主目录下创建一个 .ssh 的子目录,把用户的公用密钥 id_rsa.pub复制到此目录下,并重命名为

    authorized_keys,然后执行如下命令:

    # chmod 644 .ssh/authorized_keys 

    若除了用户还有他人知对此文件有写的权限,SSH就不会工作。

    若用户想从不同的计算机登陆到远程主机,authorized_keys 文件也可以有多高公用密钥,此时必须重新生成一对密钥,然后把id_rsa.pub复制到远程主机的

    authorized_keys里。另外,新的计算机上用户必须有一个账号,而且密钥是用口令保护的。

    SSH安全攻略:

    1、关闭无关端口

    为避免被扫描到,除必要端口外全部关掉,建议关闭icmp端口,并设置规则,丢弃icmp包。

    丢弃icmp包可在iptables里加入下列代码:

    -A INPUT -p icmp -j DROP 

    2、更改SSH端口

    将默认端口22更改为10 000以上,以降低端口被扫描到的概率,方法如下:

    # vim /etc/ssh/ssh_config 
    # vim /etc/ssh/sshd_config 

    将端口均更改为:

    Port 22
    Port 18438    #加入新的Port值,

    重启ssh服务:

    # service sshd restart

    注意:

      <1>此处设置两个SSH端口,主要是为防止出错导致SSH无法登陆,登陆成功后则须编辑上面两个配置文件删除22端口

      <2>登陆成功后须在在iptables里删除22端口,添加新配置的18438端口

      <3>若SSH登陆的是弱密码,则可以设置一个复杂密码

    3、限制IP登陆

    /etc/hosts.allow 和 /etc/hosts.deny 文件时tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。

    这两个配置文件的格式如下:

    # 服务进程名:主机列表:当规则匹配时可选的命令操作 server_name:hosts-list[:commond]

     /etc/hosts.allow 控制可以访问本机的IP地址,/etc/hosts.deny 控制禁止访问本机的IP地址。若两者配置有冲突,以/etc/hosts.allow 为主。

    为便于理解和管理,将允许进入的写入 /etc/hosts.allow当中,将不允许的写入 /etc/hosts.deny 当中

    例子1:

    # vim /etc/hosts.allow   #添加以下内容:
    ALL:127.0.0.1           #允许本机访问本地所有服务
    sshd:192.168.75.130     #允许192.168.75.130登录
    smbd:192.168.0.0/255.255.255.0 #允许 192.168.0.0网段的IP访问smbd服务
      (举例说明:192.168.6.100代表一个主机,192.168.6.代表整个网段。同理,test.com代表一台主机,.test.com代表test.com域内所有主机。)
    # vim /etc/hosts.deny #添加以下内容:
    sshd:all:deny   #不允许所有IP登录sshd,hosts.allow优先级大于hosts.deny
    in.telnet:ALL
    ALL:ALL EXCEPT 192.168.0.1/255.255.255.0,192.168.2.21,   #不允许的IP
    202.10.5.0/255.255.255.0

    注意:service_name必须与xinetd或/etc/rc.d/init.d/*里面的程序名称相同:

    例子2:

    (1)只允许140.116.44.0/255.255.255.0和140.116.79.0/255.255.255.0这两个网域,以及140.116.141.99这个主机进入Telnet服务器

    (2)其他IP全部拦截

    首先,# vim /etc/hosts.allow ,添加以下内容:

    telnet: 140.116.44.0/255.255.255.0 :allow  #允许
    telnet: 140.116.79.0/255.255.255.0 :allow  #允许
    telnet: 140.116.141.99                     #允许

    其次,# vim /etc/hosts.deny, 设置为全部拦截:

    telnet: ALL : deny

    ALL代表全部,更安全的设置是:当有人扫描Telnet端口时,就记住其IP,作为查询与认证之用。修改如下:

    # vim /etc/hosts.deny,内容为:

    #telnet: ALL : deny
    telnet: ALL : spawn (echo Security notice fromo host '/bin/hostname'; 
    echo; /usr/sbin/safe_fingetr @%h) | 
    /bin/mail -s "%d-%h security" root & 
    :twist ( /bin/ehco -e "
    
    WARNING connection not allowed.Your attempt has been logged.
    #警告您尚未允许登录,您的联机将会被记录,并且作为以后的参考

    注意:

           <1>root可以写成个人账号或其他E-mail。

           <2>某些没有安装tcp_wrappers的套件的distribution中,由于没有safe_finger等程序,无法执行相关的功能。

    
    
    
    
     
  • 相关阅读:
    overflow:hidden三个作用
    git提交代码步骤以及创建issue事项
    Vue3.0中setup函数的使用
    样式rpx
    js函数
    数据类型
    进制转换
    事件绑定
    微信小程序基础
    “AI+”改变世界!不同领域的5大人工智能趋势
  • 原文地址:https://www.cnblogs.com/chinas/p/4484409.html
Copyright © 2011-2022 走看看