始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

DIY的Linux安全平台 (2)

发布时间:  2012/8/6 19:17:33

c/hosts.allow 指定授权主机
  /etc/hosts.deny 指定非授权主机
  配置文件的编写规则非常简单,一般是:
  services_list : client_list [ : shell_command ]
  1. 如果client及services满足hosts.allow里面的条目,那么访问将被允许。
  2. 如果client及services满足hosts.deny里面的条目,那么访问将被禁止。
  3. 如果以上两条都不满足,访问将被允许。
  4. 如果访问控制文件不存在,将被当作空规则文件处理。所以可以通过删除访问控制文件来关闭访问限制。
  其中services_list可以列出一个或几个服务进程名,也可以使用通配符;client_list可以是IP地址、主机名或者网络号,也可以使用通配符。
  services_list有两个特殊用法的符号:ALL和EXCEPT。ALL表示所有的进程,而EXCEPT表示排除某个进程。比如,ALL EXCEPT in.fingerd表示除了in.fingerd外所有的进程。
  client_list可以使用如下通配符:
  1. “.”号在字符串前匹配所有后面部分和所提供字符串一样的主机名。比如:.linuxidc.net可以匹配idc.net">www.linuxidc.net或mail.linuxidc.net。
  2. “.”号在字符串后匹配以所提供字符串开头的地址,比如,10.44.可以匹配所有10.44.xxx.xxx的地址。
  3. 可以使用n.n.n.n/m.m.m.m的格式来表示net/mask,比如,10.44.72.0/255.255.254.0匹配从10.44.72.0到10.44.73.255的地址。
  4. 以“/”号开头的字符串将被看作一个文件处理,它匹配所有在这个文件中列出的主机名或者地址。
  5. “@”开头的串将被当作一个NIS组的名字。
  6. ALL表示所有的主机,LOCAL匹配所有机器名中不带“.”号的主机,EXCEPT表示排除某些主机。
  比如,hosts.allow中有一行,ALL: .edu.cn EXCEPT example.edu.cn表示允许除了主机名叫example.edu.cn 以外的所有.edu.cn域内的机器访问所有的服务。而在hosts.deny中,ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0则表示禁止192.168.0.1到192.168.0.254的机器访问除了in.fingerd以外的服务。防火墙的选用和配置
  前面介绍了tcpwrappers的详细应用,但是对管理员而言,只有经过Internet的考验才能真正得到直接有效的磨炼和提高。如何分辨和抵挡 Internet上形形色色的信息呢?仅仅 tcpwrappers是不够的,关键是防火墙的选用和配置。配置高效的防火墙是管理员要掌握的十分重要而且非常有效的必修课。在此,防火墙的功能和类型就不介绍了。最主要的是防火墙的构建要量身定制,应从企业自身状况和需求特点来考虑所需要的防火墙解决方案。不同规模、不同类型的企业,其网络保护的要求也存在明显的差异。防火墙是个重要的话题,在这里限于篇幅不可能详细分析每一种配置。入侵检测系统
  对攻击者来说,端口扫描是入侵主机的必备工作,可以用端口扫描程序扫描服务器的所有端口来收集有用的信息,如哪些端口打开、哪些端口关闭、提供服务的程序版本、操作系统的版本等。下面介绍几种对付端口扫描的工具。
  1. PortSentry
  PortSentry是一个被设计成实时地发现端口扫描并对端口扫描快速作出反应的检测工具。一旦发现端口扫描,PortSentry做出的反应有:
  (1)通过syslog()函数给出一个日志消息;
  (2)自动地把对服务器进行端口扫描的主机加到tcp wrappers的/etc/hosts.deny文件中;
  (3)本地主机会自动把所有的信息流都重定向到一个不存在的主机;
  (4)本地主机用包过滤程序把所有的数据包(来自对其进行端口扫描的主机)都过滤掉。
  简单地介绍一下配置和启动步骤:
  (1)配置/usr/psionic/portsentry/portsentry.conf文件
  /usr/psionic/portsentry/portsentry.conf是PortSentry的主要配置文件。可以设置需要监听的端口、需要禁止和监控的IP地址等。可以参看PortSentry的README.install文件以获取更多的信息。
  (2)配置portsentry.ignore文件
  在portsentry.ignore文件中设置希望PortSentry忽略的主机。这个文件至少要包括localhost(127.0.0.1)和本地界面(lo)的IP。
  (3)最好改变文件默认的权限:
  #chmod 600 /usr/psionic/portsentry/portsentry.conf
  #chmod 600 /usr/psionic/portsentry/portsentry.ignore
  (4)启动PortSentry
  PortSentry程序可以配置在6个不同的模式下运行,但每次启动时只能在一种模式下运行。这些模式是:
  ◆ portsentry -tcp(基本的端口绑定TCP模式)
  ◆ portsentry -udp 基本的端口绑定UDP 模式)
  ◆ portsentry -stcp(秘密的TCP扫描检测)
  ◆ portsentry -atcp(高级TCP秘密扫描检测)
  ◆ portsentry -sudp(秘密的UDP扫描检测)
  ◆ portsentry -audp(高级的秘密UDP扫描检测)
  推荐使用最后两种模式检测。建立启动脚本:
  # vi /etc/init.d/portsentry
  /usr/local/portsentry/portsentry sudp
  /usr/local/portsentry/portsentry audp
  # chmod a+x ./portsentry(建立启动脚本)
  # cd /etc/rc.d/rc3.d/ ; ln -s ../init.d/portsentry S60portsentry(建立软链接启动)
  2. chkrootkit
  另一个有用的工具是chkrootkit。chkrootkit是设计用来检查许多广为人知的rootkit(一组包括常用木马程序的套件,以方便 cracker攻入主机时, 在受害主机上顺利地编译和安装特洛伊木马程序)。在chkrootkit的网站上会公布最新的rootkit列表。
  配置chkrookit非常简单:先从http://www.chkrootkit.com下载源代码,解开软件包,在文件被解开的路径里敲入make。完成后,chkrootkit就随时侯命了。下面是在机器上chkrootkit的一个输出的例子:
  # ./chkrootkit
  Checking `su'... not infected
  Checking `ifconfig'... not infected
  Checking `inetd'... not tested
  Checking `inetdconf'... not found
  Checking `identd'... not infected
  Checking `init'... not infected
  Checking `killall'... not infected
  Checking `login'... not infected
  Checking `ls'... not infected
  Checking `lsof'... not infected
  Checking `mail'... not infected
  Checking `mingetty'... not infected
  Checking `netstat'... not infected
  Checking `named'... not infected
  Checking `passwd'... not infected
  [...]
  由上可以看到,系统中重要的一些命令并没有被改变。chkrootkit是一个很不错的实用工具,它可以进一步让我们放心:机器目前是安全的。
  3.secheck
  个人推荐一个比较好的检测工具secheck,这个软件安装简单,检测范围广,记录文件条目简明,资料详细。它可以检测开放端口列表、登录用户、磁盘空间情况;检查UID和GID为0的非root用户、弱口令用户、正在运行的系统进程、su root的用户;检测有SUID和SGID标识的命令,以及相关password、shadow、xinetd.conf、.rhosts文件的变化等。建议配合crontab做定时检查,命令如下(每隔一小时做一次检查):
  00 * * * * /usr/local/etc/secheck/secheck
  可以从http://twtelecom.dl.sourceforge.net/secheck/secheck-0.03.tgz下载感受一下。灾难恢复
  尽管已经采用了许多的安全措施来保护主机稳定运行,但是遇到一些意外情况,如停电、硬件故障或地震等仍有可能发生系统崩溃事件。要想在最短时间内恢复系统,必须事先做好备份工作。
  在进行备份之前,首先要选择合适的备份策略,包括何时需要备份,以及出现故障时进行恢复的方式。通常使用的备份方式有三种:1.完全备份
  每隔一定时间就对系统进行一次全面的备份,这样在备份间隔期间出现数据丢失等问题,可以使用上一次的备份数据恢复到前次备份时的数据状况。
  2.增量备份
  首先进行一次完全备份,然后每隔一个较短时间进行一次备份,但仅备份在这个期间更改的内容。这样一旦发生数据丢失,首先恢复到前一个完全备份,然后按日期逐个恢复每天的备份,就能恢复到前一天的情况。这种备份方法比较经济。
  3.累计备份
  这种备份方法与增量备份相似,首先每月进行一次完全备份,然后备份从上次进行完全备份后更改的全部数据文件。一旦发生数据丢失,使用一个完全备份和一个累计备份就可以恢复故障以前的状态。累计备份只需两次恢复,因此它的恢复工作相对简单。
  备份内容 工作量 恢复步骤 恢复速度 优缺点
  完全备份 全部内容 大,慢 一次操作 很快 占用空间大,恢复快
  增量备份 每次修改后的单个内容 小,很快 多次操作 中 空间小,恢复麻烦
  累计备份 每次修改后的所有内容 中,快 二次操作 快 空间较小,恢复快
  增量备份和累计备份都能以比较经济的方式对系统进行备份。如果系统数据更新不是太频繁的话,可以选用累计备份。如果系统数据更新太快,使每个备份周期后的几次累计备份的数据量相当大,这时候可以考虑增量备份或混用累计备份和增量备份的方式,或者缩短备份周期。下面是一个有效的备份方式供参考。
  假设备份介质为支持热插拔的硬盘,挂接在/backup目录下:
  # tar zcvf /backup/bp_full.tar.gz /*(先做一个完全备份)
  # find / -mtime -7 -print > /tmp/filelist(找出7天内修改过的文件)
  # tar -c -T /tmp/filelist -f /backup/bp_add.tar.gz(每隔7天做增量备份)
  其它建议和技巧
  1.用密码保护单用户模式。
  # vi /etc/lilo.conf
  restricted
  password="I am admin"
  2.修改/etc/inittab文件。
  # ca::ctrlaltdel:/sbin/shutdown -t3 -r now
  #表示取消Alt+Ctrl+Delete重启机器
  3.删除登录信息(不显示内核版本,主机名,发行版本号及一些后台进程的版本号),这样可以从一定程度上防止别有用心的探测。
  # cat /dev/null > /etc/issue
  # cat /dev/null > /etc/issue.net
  # cat /dev/null > /etc/motd
  4.设置密码属性,包括有效时间(-e)、失效时间、警告时间(-w)等。修改缺省的密码长度。
  # vi /etc/login.defs
  PASS_MAX_DAYS 99999(设置密码有效期限)
  PASS_MIN_DAYS 0(设置修改密码的最少时间段)
  PASS_MIN_LEN 5(修改密码设置的长度)
  PASS_WARN_AGE 7(修改改变密码的告警时间)
  修改为:
  PASS_MAX_DAYS 30  (30天后必须重新设置)
  PASS_MIN_LEN   8  (密码长度不得少于8位)
  5.默认账号的管理。查看/etc/passwd 文件,删除多余的账号,检查有没有除root外UID、GID为0的其它非法用户。
  6.如果正在接手的是一个新的服务器,那么对原先的配置必须有深刻的了解。要删除一些旧的系统账户应注意以下问题:
  (1) 删除用户与其home目录
  # userdel -r good
  (2) 删除用户未接收的邮件
  # rm /var/spool/mail/good
  (3) 删除由此用户在后台执行的程序
  # ps -aux|grep "good"
  # kill PID
  (4) 删除crontab 任务
  # crontab -l good
  # crontab -d good
  7.应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。
  # rm -f /etc/security/console.apps/*
  *表示要注销的程序名,如halt、shutdown
  8.修改/etc/profile文件中的“HISTFILESIZE”和“HISTSIZE”行,确定所有用户的.bash_history文件中可以保存的旧命令条数。编辑profile文件(vi /etc/profile),把下面这行改为:
  HISTFILESIZE=30
  HISTSIZE=30
  表示每个用户的.bash_history文件只可以保存30条旧命令。
  9.编辑.bash_logout文件。
  # vi /etc/skel/.bash_logou(添加下面这行)
  # rm -f $HOME/.bash_history
  这样,当用户每次注销时,.bash_history文件自动被删除。

亿恩科技地址(ADD):郑州市黄河路129号天一大厦608室 邮编(ZIP):450008 传真(FAX):0371-60123888
   联系:亿恩小凡
   QQ:89317007
   电话:0371-63322206


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线