第7章内容回顾•应用层代理和网络层防火墙具有不同的实现原理和应用场合•在Linux系统中内核提供包过滤防火墙功能,使用squid服务器可实现代理服务器功能•iptables命令是对Linux内核包过滤防火墙的主要管理工具•通过防火墙策略的配置,Linux主机可实现包过滤和NAT功能•squid服务器的主要功能是代理和缓存Page1/39网络安全管理第8章本章目标•掌握SSH服务器管理和客户端的使用•掌握TCPWrappers的配置管理Page3/39本章结构Page4/39网络安全管理SSH远程登录服务SSH的起源与原理OpenSSH的基本配置管理OpenSSH的基本应用在Windows下使用SSH客户端软件TCPD的概念hosts.deny和hosts.allow设置文件TCPWrappersTCPWrappers配置实例TCPWrappers的基本概念•TCPWrappers的功能•TCPWrappers是大多数Linux发行版本中都默认提供的功能•TCPWrappers的主要执行文件是“tcpd”•tcpd程序可以将其他的网络服务程序“包裹”起来,从而进行集中的访问控制设置•RHEL4系统中缺省安装了TCPWrappers#rpm-qtcp_wrapperstcp_wrappers-7.6-37.2Page5/39TCPWrappers的设置文件•TCPWrappers使用两个设置文件•“hosts.allow”和“hosts.deny”两个文件的用于保存TCPWrappers基于主机地址的访问控制策略#ls/etc/hosts.*/etc/hosts.allow/etc/hosts.deny•“hosts.allow”文件用于保存允许访问的策略•“hosts.deny”文件用于保存拒绝访问的策略•“hosts.allow”和“hosts.deny”文件中保存的设置是即时生效的Page6/39TCPWrappers设置文件的格式2-1•设置文件的格式•“hosts.allow”和“hosts.deny”文件中具有相同格式的配置记录服务程序列表:客户机地址列表[:动作]•文件中每行为一个设置记录•“服务程序列表”字段的表示•ALL代表所有的服务程序•单个服务的名称,例如in.telnetd代表telnet服务器程序,vsftpd代表vsftpd服务器程序•多个服务程序名称可以组成列表,中间用逗号分隔,例如“in.telnetd,vsftpd”Page7/39TCPWrappers设置文件的格式2-2•“客户机地址列表”字段的表示•ALL代表所有的客户机地址•LOCAL代表本机地址•KNOW代表可解析的域名•UNKNOW代表不可解析的域名•以句点“.”开始的域名代表该域下的所有主机,例如“.ltest.com”代表“ltest.com”域中的所有主机•对某个子网中的所有主机使用“子网/掩码”的形式表示•对于网络中的某个主机可直接使用IP地址表示•“动作”字段使用“allow”表示允许,使用“deny”表示拒绝Page8/39TCPWrappers配置实例4-1•配置要求•使用TCPWrappers对vsftpd服务和telnet服务进行基于主机的访问控制•vsftpd服务器和telnet服务器所在主机的地址为“192.168.1.2”•对于vsftpd服务只允许IP地址为“192.168.1.100”至“192.168.1.199”的主机进行访问•由于telnet服务相对不是很安全,因此只允许IP地址为“192.168.1.122”的客户机访问Page9/39TCPWrappers配置实例4-2•telnet服务器的安装•RHEL4系统中默认不安装telnet服务器•telnet-server软件包在第4张安装光盘,需要手工进行安装rpm-ivh/media/cdrom/RedHat/RPMS/telnet-server-0.17-30.i386.rpm•telnet服务由xinetd调度启动•telnet在xinetd服务中的启动配置文件/etc/xinetd.d/telnet•telnet服务默认不启动,需手工设置#chkconfigtelneton#servicexinetdrestartPage10/39TCPWrappers配置实例4-3•使用telnet命令登录telnet服务器•telnet命令是telnet服务的客户端程序#telnet192.168.1.2•用户telnet登录的过程中会提示输入用户名和用户口令•telnet服务的安全性•telnet服务使用明文传输所有的内容(包括用户登录口令),因此存在安全隐患•应尽量使用SSH服务替代telnet服务Page11/39TCPWrappers配置实例4-4•TCPWrappers策略配置•hosts.deny文件in.telnetd,vsftpd:ALL•hosts.allow文件in.telnetd:192.168.1.122vsftpd:192.168.1.1??•采取先“全部禁止”再“逐个开放”的策略设置方法,可以较好的实现“只允许……”的访问策略Page12/39阶段总结TCPWrappers是各Linux发行版本中必备的功能通过tcpd服务程序可以对其他的网络服务程序实现访问控制通过在hosts.allow和hosts.deny两个文件中设置访问控制策略,可以实现对TCPWrappers的控制在hosts.allow和hosts.deny文件中的设置是即时生效的Page13/39阶段练习查看hosts.allow和hosts.deny文件的缺省设置内容在hosts.deny文件中增加禁止指定的客户机进行telnet登录的访问控制记录Page14/39SSH的起源与原理•SSH(SecureSHell),实现了与Telnet服务类似的远程登录功能•SSH协议在网络中使用密文传输数据•SSH服务器中还支持使用scp和sftp等客户端程序进行远程主机的文件复制Page15/39SSH的认证方式•SSH协议提供两种用户认证方式•基于口令的安全认证•与telnet类似,提供正确的用户口令后可以登录远程服务器•基于密钥的安全认证•使用公钥和私钥对的方式对用户进行认证Page16/39SSH密钥认证的原理•SSH服务中使用密钥进行用户认证Page17/39每个用户都需要生成自己的公钥和私钥对文件用户的公钥文件需要保存在SSH服务器主机中用户私钥文件保存在SSH客户端主机中OpenSSH服务器•OpenSSH是著名的开源软件项目•OpenSSH是SSH协议的免费实现版本•OpenSSH可应用于大多数UNIX系统•绝大多数Linux发行版本都采用OpenSSH作为SSH服务器Page18/39OpenSSH的软件包组成•RHEL4系统中OpenSSH服务器和客户端软件是默认安装的•openssh软件包是实现ssh功能的公共软件包•openssh-server软件包实现了SSH服务器的功能•openssh-clients软件包中包含了SSH服务的客户端程序•openssh-askpass和openssh-askpass-gnome只有在Linux的图形界面下使用SSH服务时才需要Page19/39OpenSSH服务的启动与停止•OpenSSH的服务程序名称是sshd•sshd服务程序的启动脚本/etc/init.d/sshd•sshd服务程序缺省状态为自动启动•sshd服务的启动与停止•启动服务程序servicesshdstart•停止服务程序servicesshdstopPage20/39OpenSSH服务的配置文件•配置目录•OpenSSH服务器和客户机的所有配置文件都保存在同一目录中/etc/ssh/•服务器配置文件•SSH服务器的配置文件是sshd_config/etc/ssh/sshd_config•客户机配置文件•SSH客户程序的配置文件是ssh_config/etc/ssh/ssh_configPage21/39OpenSSH的典型用户登录•使用ssh命令登录SSH服务器#sshroot@192.168.1.2•首次登录SSH服务器•为了建立加密的SSH连接需要用户在客户端确认服务器发来的RSA密钥(输入yes)•用户认证•每次登录SSH服务器都需要输入正确的用户口令•SSH登录使用的是SSH服务器主机中的用户帐号Page22/39SSH的用户目录•“.ssh”目录•在SSH客户主机的用户宿主目录中,使用名为“.ssh”的目录保存用户的SSH客户端信息~/.ssh/•“.ssh”目录在用户首次进行SSH登录后自动建立•“known_hosts”文件•“known_hosts”文件位于“.ssh”目录中•“known_hosts”文件用于保存当前用户所有登录过的SSH服务器的RSA密钥Page23/39基于密钥的SSH用户认证4-1•设置密钥认证的一般步骤1.在SSH客户端生成用户的公钥和私钥对文件2.将SSH客户的公钥添加到SSH服务器中用户的认证文件中3.验证密钥的认证Page24/39基于密钥的SSH用户认证4-2•在SSH客户端生成用户的公钥和私钥对•使用ssh-keygen命令生成密钥对$ssh-keygen-trsa•公钥和私钥文件•ssh-keygen命令将在“.ssh”目录中生成公钥和私钥文件•id_rsa是私钥文件,内容需要严格保密•id_rsa.pub是公钥文件,可发布到SSH服务器中Page25/39基于密钥的SSH用户认证4-3•复制公钥文件•将客户端中的用户公钥文件复制到SSH服务器中•公钥文件的复制可使用软盘、U盘或网络•将公钥内容追加到authorized_keys文件•authorized_keys文件保存在SSH服务器中用户目录的“.ssh”子目录中•authorized_keys用于保存所有允许以当前用户身份登录的SSH客户端用户的公钥内容•使用“”重定向符将用户公钥追加到authorized_keys文件中catid_rsa.pub~/.ssh/authorized_keysPage26/39基于密钥的SSH用户认证4-4•基于密钥的用户认证过程•用户使用ssh命令登录SSH服务器时,将使用客户机中的私钥与服务器中的公钥进行认证,认证成功后将允许用户登录•密钥的认证过程是ssh命令与SSH服务器自动完成的•用户登录过程中将不再提示输入用户口令Page27/39禁止root用户的SSH登录•为了提高Linux服务器的安全性,可以禁止root用户进行SSH登录•设置sshd_config文件#vi/etc/ssh/sshd_config//添加设置行PermitRootLoginno•重新启动sshd服务程序#servicesshdrestart•再次登录SSH服务器时将不能使用root帐号进行登录Page28/39ssh命令的基本使用•ssh命令的两种格式•格式1:sshusername@sshserver•格式2:ssh-lusernamesshserver•两种命令格式具有相同的功能•ssh命令中需指定登录的用户名和SSH服务器地址•不指定用户名的ssh命令•ssh命令中如果不指定用户名,将使用SSH客户机中当前用户的名字登录SSH服务器#ssh192.168.1.2Page29/39通过SSH运行服务器中的窗口程序•运行服务器中的图形程序是SSH的重要应用•ssh命令需要在图形界面虚拟终端下运行•命令格式:ssh-Xusername@sshserverPage30/39xlock是运行在SSH服务器中,而显示在SSH客户机中的窗口程序sftp的使用•SSH服务器对sftp的支持•sftp是SSH服务器中的子系统•在SSH服务器中需要存在对sftp的配置#grepsftp/etc/ssh/sshd_configSubsystemsftp/usr/libexec/open