系统: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-.el5.x86_64.rpm telnet-server-0.17-.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
}

重启服务

[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          /tcp
telnet /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/ #只允许192.168.0.-192.168..255网段之间的计算机登录
#only_from = .edu.cn #只允许教育网接入
#no_access =210.45..{,} #这两个IP地址不可用
#access_times =:-: :-: #每天这两个时间段开放服务
}

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.-.el5 on an x86_64
login: vnc
Password:
Last login: Wed May :: on :
[vnc@localhost ~]$ su
口令:
[root@localhost vnc]# exit
exit
[vnc@localhost ~]$ exit
logout Connection closed by foreign host.
[root@localhost Server]#

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

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

# vim /etc/sysconfig/iptables

添加下面一行代码:

-A RH-Firewall--INPUT -m state --state NEW -m tcp -p tcp --dport  -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-.3p2-.el5
openssh-server-.3p2-.el5
openssh-clients-.3p2-.el5
openssh-askpass-.3p2-.el5

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

[root@localhost Server]# rpm -ivh openssh-
openssh-.3p2-.el5.x86_64.rpm openssh-clients-.3p2-.el5.x86_64.rpm
openssh-askpass-.3p2-.el5.x86_64.rpm openssh-server-.3p2-.el5.x86_64.rpm

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 :b3::d2::::e6:c7::a3:::fa::.
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 : -- :
vnc pts/ -- : (:0.0)
root pts/ -- : (localhost.localdomain)
[root@localhost ~]# who am i
root pts/ -- : (localhost.localdomain)
[root@localhost ~]#

3、两个配置文件

/etc/ssh/ssh_config 为OpenSSH系统范围内的配置文件
  [root@localhost ~]# cat /etc/ssh/ssh_config
# $OpenBSD: ssh_config,v 1.21 // :: reyk Exp $ 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
# Host * #只对能够匹配后面字符串的计算机有效,*代表所有主机
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no #是否用RSA算法的基于rhosts的安全验证
# RSAAuthentication yes #是否用RSA算法进行安全验证
# PasswordAuthentication yes #是否用口令验证
# HostbasedAuthentication no
# BatchMode no
# CheckHostIP yes #设置SSH是否查看连接到服务器的主机的IP地址,以防止DNS欺骗
# AddressFamily any
# ConnectTimeout
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity #设置从哪个文件读取用户的RSA安全验证标识
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port #设置连接到远程主机的端口
# Protocol ,
# Cipher 3des #设置加密用的密码
# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
# EscapeChar ~ #设置escape字符
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
Host *
省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
/etc/ssh/sshd_config 为OpenSSH的配置文件,关键词忽略大小写。(参数说明,参考:http://blog.sina.com.cn/s/blog_59e866610100aulb.html
[root@localhost ~]# cat /etc/ssh/sshd_config
省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#Port #设置sshd监听的端口号
#Protocol ,
Protocol #指定ssh支持的通信协议版本
#AddressFamily any
#ListenAddress 0.0.0.0 #设置sshd服务器绑定的IP地址
#ListenAddress :: # HostKey for protocol version
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key # Lifetime and size of ephemeral version server key
#KeyRegenerationInterval 1h
#ServerKeyBits #定义服务器秘钥的位数 # Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO # Authentication: #LoginGraceTime 2m #设置如果用户不能成功登陆,在切断连接之前服务器需要等待的时间(以秒为单位)
#PermitRootLogin yes #是否允许root登陆
#StrictModes yes
#MaxAuthTries #限制用户错误登陆次数 #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
#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
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval #指定服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.如ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了
#ClientAliveCountMax #使用默认值3即可,表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups
#PermitTunnel no
#ChrootDirectory none # no default banner path
#Banner /some/path # override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server

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  .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
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 "\n\nWARNING connection not allowed.Your attempt has been logged.
#警告您尚未允许登录,您的联机将会被记录,并且作为以后的参考

注意:

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

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


 

linux远程登录(Telnet、SSH)的更多相关文章

  1. Windows、Linux -- 远程登录、文件传输、文件共享

    Linux  <--->  Linux 远程登录: ssh服务 ssh root@10.20.62.124 文件传输: scp服务 上传  scp /home/xxx.txt root@1 ...

  2. Linux远程登录ssh免密码配置方法(仅供参考)

    这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下(http://www.0834-3659999.com) 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ss ...

  3. Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)

    Linux课程---3.Linux远程登录和传输(操作Linux服务器软件) 一.总结 一句话总结: xshell:Xshell是一个强大的安全终端模拟软件 Xshell是一个强大的安全终端模拟软件, ...

  4. Linux 远程登录

    Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这事我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...

  5. Linux 忘记密码解决方法,Linux 远程登录

    一.Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步 ...

  6. Linux 远程登录——(九)

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  7. 五、Linux 远程登录

    Linux 远程登录 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ss ...

  8. 吴裕雄--天生自然Linux操作系统:Linux 远程登录

    Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...

  9. 如何用linux远程登录windows计算机

    大家可能试过用windows远程登录另一个windows pc机,今天大家将会学到如何用 linux远程登录你的windows系统. 首先大家要做到得救是将自己linux和windows操作机的IP地 ...

随机推荐

  1. 【BZOJ 4547】【HDU 5157】小奇的集合

    http://www.lydsy.com/JudgeOnline/problem.php?id=4547 本蒟蒻并不会矩乘求Fibonacci数列前缀和,所以果断分块打表,常数竟然比矩乘要小! PS: ...

  2. poj1182 带权并查集

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60225   Accepted: 17656 Description ...

  3. shell 题

    (1)有一推主机地址:a.baidu.com.....z.baidu.com如何从这些数据中提取出.baidu.com之前的字母,如:a b...z? #cat f1.txt | while read ...

  4. Java面试知识的认知描述

    连接池:同时操作连接数据库,创建一个连接池,池子里创建一万个数据库链接.根据系统运行情况关闭链接.高峰期链接达到最大MAX进行排队,对在用的链接实现失效时间.有几种:tomcat请求服务器(serve ...

  5. 代理、通知、KVO的应用

    实现下图效果,每点击一次cell的“加号”或者“减号”,就可以让“底部view”的总价进行对应的增加或者减少. 下图是实际运行效果图: 图(1) 因为“底部UIView”需要一直显示在底部.如果把底部 ...

  6. 【BZOJ-1787&1832】Meet紧急集合&聚会 倍增LCA

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 2259  Solved: 1023[Submit] ...

  7. Mono开发环境搭建(Windows)

    一.下载 1.登录http://www.mono-project.com/下载 2.开发工具Xamarin Studio(好像是免费) http://www.monodevelop.com/downl ...

  8. phpize报cannot find autoconf

    突然想往php种增加个模块,可是又不想重新编译php,因为真的比较费时间. phpize就可以解决这个问题. 遇到的问题: Configuring for: PHP Api Version: Zend ...

  9. Oracle 数据库对象

    数据库对象是数据库的组成部分,常常用CREATE命令进行创建,可以使用ALTER命令修改,用DROP执行删除操作.前面已经接触过的数据库对象有表.用户等. 今天将学习更多的Oracle数据库对象: 同 ...

  10. HDU 5908 Abelian Period(暴力+想法题)

    传送门 Description Let S be a number string, and occ(S,x) means the times that number x occurs in S. i. ...