Telnet 与 SSH 主机的设置问题
[root@test
root]# rpm -qa | grep telnet
telnet-server-krb5-1.2.5-1mdk telnet-client-krb5-1.2.5-1mdk # 上面是 Mandrake 9.0 的范例;或底下是 Red Hat 7.2 的范例 telnet-0.17-20 telnet-server-0.17-20 |
[root@test
root]# vi /etc/xinetd.d/telnet
# default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { disable = yes<==就是改这里,将 yes 改成 no 即可! flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID } |
方法一:仅支持
Red Hat 或 Mandrake 系统:
[root@test root]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 方法二:正统的启动方式:
|
[root@test
root]# netstat -tl
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:telnet *:* LISTEN |
step 1: 修改一下
/etc/xinetd.d/telnet 文件:
[root@test root]# vi /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 即可! flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID } step 2: 重新启动
xinet 即可:
|
[root@test
root]# telnet localhost
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Red Hat Linux release 7.2 (Enigma) Kernel 2.4.18 on an i586 login: test <==输入帐号 Password: <==输入密码请注意!密码并不会在屏幕上面显示任何的字眼 Last login: Thu Oct 3 11:59:29 from test_inside <==提示上次登录的地址 You have new mail. <==自上次登录以来,是否信箱内有新信件!? [test@test test]$ <==这里就进入了 telnet 的连接进程当中了! [test@test test]$ exit <==离开这次 telnet 的登录! |
[root@test
root]# vi /etc/xinetd.d/telnet
# This file had been modified by VBird 2002/11/04 # First is about inside the network service telnet { disable = no bind = 192.168.1.2 only_from = 192.168.1.0/24 # 上面这两行说明仅提供内部网域! instance = UNLIMITED nice = 0 flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/telnetd server_args = -a none log_on_failure += USERID } # Second is
about the outside domain's settings
|
[root@test root]# mv /etc/securetty /etc/securetty.bak |
[root @test
/root]# vi /etc/pam.d/login
#%PAM-1.0 #auth required /lib/security/pam_securetty.so # 将上面这一行加上 # 注解掉! auth required /lib/security/pam_stack.so service=system-auth auth required /lib/security/pam_nologin.so account required /lib/security/pam_stack.so service=system-auth password required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth session optional /lib/security/pam_console.so |
/sbin/iptables
-A INPUT -p tcp -i eth0 -s 192.168.0.0/24 --dport 23 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 -s 61.xxx.xxx.xxx --dport 23 -j ACCEPT /sbin/iptables -A INPUT -p tcp -i eth0 --dport 23 -j DROP |
[root@test
root]# vi /etc/hosts.allow
in.telnetd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4, 192.168.0.5: allow [root@test root]#
vi
/etc/hosts.deny
|
[root@test
root]# /etc/rc.d/init.d/sshd start
[root@test root]# service sshd start [root@test root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN |
[root@test
root]# ssh user@hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6e:1a:60:d0:ee:d0:7c:91:df:94:de:09:35:7b:08:ba. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:8 RSA host key for hostname has changed and you have requested strict checking. Host key verification failed. |
sftp 一般连接的使用方式:
[root@test root]# sftp test@test.linux.org test@test.linux.org's password: <==请输入 test 这个用户的密码! sftp> <==等待您输入指令! |
针对远方主机(Server)之行为 | |
变换目录到 /etc/test 或其他目录 | cd /etc/test
cd PATH |
列出目前所在目录下的文件或目录 | ls
dir |
创建目录 | mkdir directory |
删除目录 | rmdir directory |
显示目前所在的目录 | pwd |
更改文件或目录群组 | chgrp groupname PATH |
更改文件或目录拥有者 | chown username PATH |
更改文件或目录的权限 | chmod 644 PATH
其中,644 与权限有关!回去看基础篇! |
创建链接档 | ln oldname newname |
删除文件或目录 | rm PATH |
更改文件或目录名称 | rename oldname newname |
离开远程主机 | exit
bye |
针对本机(Client)之行为(都加上 l, L 的小写 ) | |
变换目录到本机的 PATH 当中 | lcd PATH |
列出目前本机所在目录下的文件名 | lls |
在本机创建目录 | lmkdir |
显示目前所在的本机目录 | lpwd |
文件传输 | |
将文件由本机上传到远程主机 | put [本机目录或文件] [远程]
put [本机目录或文件] 如果是这种格式,则文件会放置到目前远程主机的目录下! |
将文件由远程主机下载回来 | get [远程主机目录或文件] [本机]
get [远程主机目录或文件] 若是这种格式,则文件会放置在目前本机所在的目录当中!可以使用通配符,例如: get * get *.rpm 亦是可以的格式! |
psftp: no hostname
specified; use "open host.name" to connect
psftp> |
psftp: no hostname
specified; use "open host.name" to connect
psftp> open test.linux.org login as: test Using username "test". test@test.linux.org's password: Remote working directory is /home/test psftp> |
# 1. 关于 SSH
Server 的整体设置,包含使用的 port 啦,以及使用的密码演算方式
Port 22 # SSH 缺省使用 22 这个 port,您也可以使用多的 port ! # 亦即重复使用 port 这个设置项目即可! Protocol 2,1 # 选择的 SSH 协定版本,可以是 1 也可以是 2 , # 如果要同时支持两者,就必须要使用 2,1 这个分隔了! #ListenAddress 0.0.0.0 # 监听的主机适配器!举个例子来说,如果您有两个 IP, # 分别是 192.168.0.100 及 192.168.2.20 ,那么只想要 # 开放 192.168.0.100 时,就可以写如同下面的样式: ListenAddress 192.168.0.100 # 只监听来自 192.168.0.100 这个 IP 的SSH连接。 # 如果不使用设置的话,则缺省所有接口均接受 SSH PidFile /var/run/sshd.pid # 可以放置 SSHD 这个 PID 的文件!左列为默认值 LoginGraceTime 600 # 当用户连上 SSH server 之后,会出现输入密码的画面, # 在该画面中,在多久时间内没有成功连上 SSH server , # 就断线!时间为秒! Compression yes # 是否可以使用压缩指令?当然可以啰! # 2. 说明主机的 Private Key 放置的文件,缺省使用下面的文件即可! HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私钥 HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥 HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥 # 2.1 关于 version
1 的一些设置!
# 3. 关于注册表的消息数据放置与
daemon 的名称!
# 4. 安全设置项目!极重要!
# 4.5 登录后的项目:
# 4.6 关于用户抵挡的设置项目:
# 5. 关于 SFTP
服务的设置项目!
|
[test2@test2
test2]$ ssh-keygen -t rsa <==这个步骤在产生
Keys
Generating public/private rsa key pair. Enter file in which to save the key (/home/test2/.ssh/id_rsa): Enter passphrase (empty for no passphrase): <==这里按 Enter Enter same passphrase again: <==再按一次 Enter Your identification has been saved in /home/test2/.ssh/id_rsa. <==这是私钥 Your public key has been saved in /home/test2/.ssh/id_rsa.pub.<==这是公钥 The key fingerprint is: c4:ae:d9:02:d1:ba:06:5d:07:e6:92:e6:6a:c8:14:ba test2@test2.linux.org 注意: -t 指的是『使用何种密码演算方式?』由于我们使用 RSA , 所以直接输入 -t rsa 即可创建两支 Keys ! 此外,创建的两把 Keys 都放置在家目录下的 .ssh 这个目录中! 察看一下这两把 Keys 吧! [test2 @test2
test2]$ ll ~/.ssh
|
1. 先在 Client
端以 sftp 将公钥丢到 test 上面去!
[test2@test2 test2]$ cd ~/.ssh <==切换目录 [test2@test2 .ssh]$ sftp test@test.linux.org<==连到主机上面 Connecting to test.linux.org... test@test.linux.org's password: <==输入 test 的密码 sftp> put id_rsa.pub <==将公钥丢到 Server 上面去! Uploading id_rsa.pub to /home/test/id_rsa.pub sftp> exit 2. 到 Server
上面,将公钥转存到 authorized_keys 文件中!
|
[test2@test2 test2]$ ssh test@test.linux.org |
这三方面来着手进行!底下我们就说一说吧!
- /etc/ssh/sshd_config
一般而言,这个文件的缺省项目就已经很完备了!所以,事实上是不太需要更动他的!但是,如果您有些用户方面的顾虑,那么可以这样修正一些问题呢!
- 禁止 root 的登录:任何时候,不许 root 以远程连接的方式登录,都会是一个好主意!所以这里蛮建议大家直接将 root 的登录权限拿掉吧!所以,可以修改 /etc/ssh/sshd_config 这个文件的内容为:
如此一来,以后 root 就不能以 ssh 登录啰!这样还是比较好的啦! ^_^
[root@test root]# vi /etc/ssh/sshd_config
PermitRootLogin no <==将他改成 no 啦!
[root@test root]# /etc/rc.d/init.d/sshd restart
- 不许某个群组登录:有些特殊情况中,我们想要让用户只能使用 sendmail, pop3, ftp 等,但是不希望他可以远程连接进来,那么您可以这样做:
1. 将这些用户都归纳在某一个特殊群组之下,例如 nossh 这个群组好了;
2. 在 /etc/ssh/sshd_config 当中加入这一行:『DenyGroups nossh』
3. 重新启动 sshd : /etc/rc.d/init.d/sshd restart
这样就OK啦!
- 不许某个用户登录:跟 DenyGroups 类似,使用 DenyUsers 即可!参考 sshd_config 的设置喔!
- /etc/hosts.allow 及 /etc/hosts.deny :
这东西也是很简单的啦!直接参考: 简易防火墙架设 一文啰!当然,简单的方法就是:
[root@test /root]# vi /etc/hosts.allow
sshd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4, 192.168.0.5: allow[root@test /root]# vi /etc/hosts.deny
sshd : ALL : spawn (/bin/echo Security notice from host `/bin/hostname`; \
/bin/echo; /usr/sbin/safe_finger @%h ) | \
/bin/mail -s "%d -%h security" root@localhost & \
: twist ( /bin/echo -e "\n\nWARNING connectin not allowed. Your attempt has been logged. \n\n\n警告您尚未允许登录,您的连接将会被纪录,并且作为以后的参考\n\n ". )- iptables
多几层保护也很好的!所以也可以使用 iptables 喔!参考:简易防火墙架设 一文啰!
基本上, SSH 还蛮安全的,只要取消 root 的登录权限,那么问题应该就会比较小一点啦!所以,虽然可以不用设置 iptables ,但是建议针对几个网域设置一下 /etc/hosts.allow 与 /etc/hosts.deny !加油啰!