您的位置:首页 > 理论基础 > 计算机网络

Linux下进行简单网络安全管理

2009-08-15 22:21 351 查看
环境介绍:两台Linux客户机(一台用做服务器,一台客户机测试),一台XP系统同样也是测试用
TCP Wrappers的概念
TCP Wrappers是大多数Linux发行版本中都默认提供的功能,在RHEL4中的TCP Wrappers程序的软件包名称是tcp_wrappers



在tcp_wrappers软件包中包括了TCP Wrappers的主要执行文件tcpd,tcpd程序可以将其它的网络服务程序“包裹”起来,从而进行集中的访问控制设置



TCP Wrappers和iptables防火墙既有相同点也有不同点,主要体现在以下方面
Netfilter/iptables属于包过滤防火墙,处理的对象是IP数据包,因此对网络服务具有普遍的适用性
TCP Wrappers是使用tcpd程序对其它网络服务程序进行“包裹”,不能适用于所有网络服务
iptables具有复杂的命令格式和严谨的策略设置,管理的难度较大
TCP Wrappers只使用hosts.allow 和hosts.deny两个文件进行访问控制的设置,比较容易掌握
TCP Wrappers只能针对服务程序和主机地址进行访问控制策略的设置,而不能指定网络解析等其它的属性
在hosts.allow和hosts.deny两个文件中保存的访问控制记录是即时生效的,不需要重新启动任何服务程序,配置过程比较方便
在Linux系统中TCP Wrappers和iptables防火墙是同时生效的,就像是护卫Linux系统的两道屏障,想要实现正常的网络通信需要同时符合TCP Wrappers和iptables两者的设置策略
hosts.deny和hosts.allow设置文件
在Linux系统的/etc/目录下,有名为hosts.allow和hosts.deny的两个文件,这两个文件是TCP Wrappers的策略设置文件



hosts.allow和hosts.deny两个文件都用于保存TCP Wrappers基于主机地址的访问控制策略
hosts.allow和hosts.deny用于保存允许访问策略
hosts.allow和hosts.deny文件中具有相同格式的配置记录,记录的格式如下:
示:<服务程序>:<客户机地址列表>[:动作]
服务程序列表字段可以有如下形式的表示:
ALL代表所有的服务程序
单个服务的名称,例如in.telnetd代表telnet服务器程序,vsftpd代表vsftpd服务器程序
多个服务程序名称可以组成列表,中间用逗号分隔例如:in.telnetd,vsftpd
客户机地址列表可以有如下形式表示:
ALL代表本机的客户机地址
LOCAL代表本机地址
KNOW代表可解析的域名
UNKNOW代表不可解析的域名
以“.”开始的域名代表该域下的所有主机,例如:.yunjing.com代表yunjing.com域中的所有主机
对某个子网的所有主机使用子网/掩码的形式表示,例如172.16.0.0/255.255.0.0表示子网172.16.0.0/16中的所有主机,但是策略记录中不接受172.16.0.0/16的子网表示形式
对于网络中的某个主机可直接使用IP地址表示,例如:172.16.1.126代表主机地址
动作字段可以使用allow表示允许,使用deny表示拒绝。 在hosts.allow文件中默认的策略是allow,可以省略不写。在hosts.deny文件中默认的策略是deny,可以省略不写
TCP Wrappers应用配置
为测试结果我们我们这里安装telnet
系统默认没有安装telnet 服务,需要管理员手动安装
RHEL4的第4张光盘中包括了telnet服务器的安装包,文件名是telnet-server-0.17-30.i386.rpm
使用rpm命令可以将该软件包安装到系统中



telnet服务安装后由xinetd超级服务器负责其启动运行,该服务在xinetd.d中的启动设置文件为/etc/xinetd.d/telnet
telnet-server软件包安装到系统后,telnet服务的默认状态为禁用,需要使用chkconfig命令启用telnet服务,并重新启动xinetd服务程序









测试:



远程登录成功
设置TCP_Wrappers策略
在vsftpd服务器的配置文件vsftpd.conf中默认包括tcp_wrappers=YES的配置行,并允许通过TCP_Wrappers机制对vsftpd服务进行访问控制,这里我们将vsftpd和telnet两个服务进行访问控制的设置
在hosts.deny文件中设置默认策略
在hosts.deny文件中添加对in.telnetd和vsftpd两个服务程序拒绝所有客户机的策略
示:vi /etc/hosts.deny



在hosts.allow文件中开放允许访问的策略
在hosts.allow文件分别对in.telnetd和vsftpd两个服务程序开放访问策略
示:vi /etc/hosts.allow



采取先“全部禁止”再“逐个开放”的策略设置方法,可以较好的实现“只允许……”的访问策略
对访问策略的验证
在完成对hosts.allow和hosts.deny文件的策略设置后,访问策略将立即生效
除IP地址为172.16.103.2以外的任何一台主要使用telnet命令登录172.16.31.110服务器都将被拒绝访问



TCP Wrappers在依据hosts.allow和hosts.deny文件中的策略拒绝某个客户机的访问后,会在/var/log/messages日志文件中保存该拒绝事件的记录



若除172.16.103.2以外的主机访问此FTP服务器,在其vsftpd服务器的日志文件vsftpd.log中会记录拒绝客户端主机FTP访问的事件
SSH远程登录服务
SSH(Secure Shell)实现了与telnet服务类似的远程登录功能,可以实现字符界面的远程登录管理。SSH采用密文的形式在网络中传输数据,因此可以实现更高的安全级别是telnet服务的安全替代品
注:http://www.ssh.com/
SSH是标准的网络协议,可应用于大多数的UNIX操作系统,但是最早的SSH服务器是商业版本的,需要付费使用
SSH协议在网络中传输的任何数据都进行了加密处理,其中也包括了用户登录时输入的用户口令,而telnet协议的用户登录口令是以明文形式进行网络传输的,相比之下SSH要比telnet安全许多
SSH提供了口令和密钥两种用户验证方式,既可像telnet一样通过输入用户名和口令进行用户登录,也可以使用密钥进行用户登录,两种用户验证方式可以灵活地应用到不同的场合
SSH协议中除了具有登录的功能外,还提供了远程文件复制的功能,使用scp和sftp客户端软件可以在本地主机和远程主机之间进行安全的文件传输,是rcp和ftp服务的安全模式
注:rcp是用于UNIX系统主要之间进行远程文件复制的网络服务,由于rcp协议本身存在着一定的安全隐患,Linux系统中已经很少使用了
SSH服务可以采用基于口令的安全验证和基于密钥的安全验证
OpenSSH是著名的开源软件项目,是SSH协议的免费版本,最早应用于OpenBSD,现在可运行在大多数的UNIX操作系统,当然也包括Linux的各种发行版本
注:http://www.openssh.com/
OpenSSH的基本配置管理
OpenSSH的软件包组成
在RHEL4系统中OpenSSH服务器和客户端软件是默认安装的,因此不需要用户手动安装



RHEL4中所有与OpenSSH服务相关的软件包都包括在第2张安装光盘中,管理员可以在需要时使用rpm命令重新安装相关的软件包
为了实现OpenSSH的服务器和客户机功能必需安装以下软件包
openssh软件包是实现SSH功能的公共软件包,是OpenSSH服务器和客户机程序运行所必需的
openssh-server软件包实现了SSH服务器的功能
openssh-clients软件包中包含了SSH服务的客户端程序
openssh-askpass和openssh-askpass-gnome只有在Linux的图形界面下使用SSH服务时才需要,因此只在字符界面工作时可不安装这两个软件包
OpenSSH服务的启动与停止



注:与其它独立运行的服务程序类似,OpenSSH服务器的启动脚本保存在目录/etc/init.d/中,脚本文件名称是sshd。请不要在SSH登录的连接中停止sshd服务程序,否则会立即中断与SSH服务器的网络连接
OpenSSH服务的配置文件
在RHEL4中,与OpensSSH服务相关的配置文件都保存在目录/etc/ssh/中,其中包括SSH服务器和SSH客户机的配置文件



SSH服务器的配置文件是sshd_config,sshd服务程序启动时会按照此配置文件的内容设置
SSH客户机的配置文件是ssh_config,当作为客户使用ssh命令远程登录SSH服务器时,ssh命令将按照该配置文件的内容进行设置
Openssh用户登录方式
示:在Linux中使用 ssh命令可以登录SSH服务器,命令格式如下:
ssh username(登录名)@sshserver(服务器IP)
登录用户名和SSH服务器地址之间需要使用@进行分隔,这种表示形式有些像电子邮件地址,但两者并没有直接联系
为建立加密的SSH连接,用户需要在客户端确认服务器发来的RSA密钥,因此需要在使用ssh命令第一次登录服务器时,输入yes进行确认,用户登录过程中还需要输入SSH登录所使用的用户帐号的口令,如口令正确SSH服务器将允许用户登录SSH主机(这里的用户名和口令都是SSH服务器上的,而不是客户机本机的)



SSH的用户目录
当用户使用ssh命令登录某个SSH服务器之后,系统会自动在客户机当前用户宿主目录下建立名为“.ssh”的隐含目录,该目录用于保存与当前用户有关的SSH客户端信息。通常该目录下包括一个名为known_hosts的文件



known_hosts文件用于保存当前用户登录的所有SSH服务器的RSA密钥,这些密钥都是在用户第一次登录SSH服务器时,用户确认(输入yes)并进行保存的



设置SSH基于密钥的用户登录
使用密钥进行SSH用户认证需要在SSH客户机中生成用户的公钥和私钥对,公钥可以分发到用户需要认证的所有SSH服务器该用户帐号的认证文件中,用户进行SSH登录时将使用自己的私钥与SSH服务器中自己的公钥进行认证,如认证成功则允许登录,而不再需要输入SSH服务器中用户的口令
步骤:
在SSH客户端生成公钥和私钥对
在SSH客户机中建立名为tom的用户,并以tom的身份生成用户的密钥对文件
ssh-keygen命令用于生成当前用户的密钥对,“-t rsa”命令选取项指定密钥的类型为rsa,在ssh-keygen命令生成密钥的执行过程中,需要用户回答相关的设置信息,直接按回车键即可



ssh-keygen命令执行完毕后会在用户宿主目录的“.ssh”目录中生成两个文件,其中id_rsa是用户的私钥文件,id_rsa.pub是用户的公钥文件,这两个文件是通过ssh_keygen命令一次生成,并且需要配对使用的



密钥对文件id_rsa和id_rsa.pub具有不同的权限属性,私钥文件id_rsa只对用户自己可读可写,而公钥文件id_rsa.pub需要发布到SSH服务器的主机中,因此内容是公开的任何人都有可读权限



私钥文件id_rsa需要妥善保管,不能泄露给他人
将SSH客户的公钥添加到SSH服务器用户的认证文件中
用户tom生成的公钥文件需要复制到SSH服务器主机中root用户的目录中,公钥文件的复制可以使用U盘或网络等进行



在SSH服务器中使用root用户帐号,将已经复制的id_rsa.pub的拷贝到“ .ssh”目录下,并重命名文件名为authorized_keys



验证密钥的认证



禁止root用户的SSH登录
由于SSH采用密文传输方式,因此默认允许root用户直接进行SSH登录,出于安全的需要也可以设置禁止root用户直接进行SSH登录
在sshd_config配置文件中添加配置行PermitRootLogin no将禁止root用户直接进行SSH登录
示:vi /etc/ssh/sshd_config



对sshd_config配置文件进行修改后,需要重启sshd服务程序,以便新的配置生效



再次访问时将被拒绝登录



普通用户则还是可以登录的,且改通过su命令来转换至root 用户



通过SSH登录运行服务器中的窗口程序



注:前提为双方均安装有图形化窗口
sftp命令的使用
类似于ssh与telnet的关系,sftp是ftp的安全替代品,sftp命令连接到SSH服务器后所传输的任何内容都是密文的,这大大提高了文件传输的安全性
确认SSH服务器中的sftp支持
sftp文件传输是作为SSH服务器的子系统存在的,因此在使用sftp命令连接SSH服务器之前需要先确认sshd_config文件中包括sftp子系统的配置



使用sftp命令传输文件



其使用的命令与ftp类似
scp命令的使用
scp命令是作为rcp命令的安全替代器出现的,由于UNIX系统中的rcp程序有相当的安全隐患,因此已经不被采用了
scp命令可以通过命令行的方式在本地和远程主机之间复制文件
命令格式
示:scp username@SSH服务器IP地址:+源文件 +目标目录
在Windows下作用SSH客户端软件
PuTTY









此工具还有其它特效设置,这里就不一一便举咯
WinSCP






使用WinSCP程序可以方便地实现Windows主机与Linux主机之间的文件传输。当然此时使用的文件传输协议是sftp而不是ftp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐