热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux网络安全技巧

文章标题:Linux网络安全技巧。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  作者: 阿瑟瑞德
  
  网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linux的源码是开放的,有成千上万的志愿者会立刻发现并修补它。本文旨在介绍用来增强你的网络安全性的常用技巧,以Redhat Linux作为操作环境。
  
  1.操作系统内部的log file是检测是否有网络入侵的重要线索,当然这个假定你的logfile不被侵入者所破坏,如果你有台服务器用专线直接连到Internet上,这意味着你的IP地址是永久固定的地址,你会发现有很多人对你的系统做telnet/ftp登录尝试,试着运行#more /var/log/secure | grep refused 去检查。
  
  2. 限制具有SUID权限标志的程序数量,具有该权限标志的程序以root身份运行,是一个潜在的安全漏洞,当然,有些程序是必须要具有该标志的,象passwd程序。
  
  3.BIOS安全。设置BIOS密码且修改引导次序禁止从软盘启动系统。
  
  4. 用户口令。用户口令是Linux安全的一个最基本的起点,很多人使用的用户口令就是简单的‘password,这等于给侵入者敞开了大门,虽然从理论上说没有不能确解的用户口令,只要有足够的时间和资源可以利用。比较好的用户口令是那些只有他自己能够容易记得并理解的一串字符,并且绝对不要在任何地方写出来。
  
  5./etc/exports 文件。如果你使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,这意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。编辑文件/etc/exports并且加:例如:
    /dir/to/export host1.mydomain.com(ro,root_squash)
    /dir/to/export host2.mydomain.com(ro,root_squash)
    /dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。
    为了让上面的改变生效,运行/usr/sbin/exportfs -a
  
  6.确信/etc/inetd.conf的所有者是root,且文件权限设置为600 。
  [root@deep]# chmod 600 /etc/inetd.conf
  ENSURE that the owner is root.
  [root@deep]# stat /etc/inetd.conf
  File: "/etc/inetd.conf"
  Size: 2869 Filetype: Regular File
  Mode: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
  Device: 8,6 Inode: 18219 Links: 1
  Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)
  Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
  Change:Mon Sep 20 10:22:44 1999(00002.06:12:16)
  编辑/etc/inetd.conf禁止以下服务:
  ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth, etc. 除非你真的想用它。特别是禁止那些r命令.如果你用ssh/scp,那么你也可以禁止掉telnet/ftp。
  为了使改变生效,运行#killall -HUP inetd 你也可以运行#chattr +i /etc/inetd.conf使该文件具有不可更改属性。只有root 才能解开,用命令 #chattr -i /etc/inetd.conf
  
  7. TCP_WRAPPERS
  默认地,Redhat Linux允许所有的请求,用TCP_WRAPPERS增强你的站点的安全性是举手之劳,你可以放入
  “ALL: ALL”到/etc/hosts.deny中禁止所有的请求,然后放那些明确允许的请求到/etc/hosts.allow中,如:
  sshd: 192.168.1.10/255.255.255.0 gate.openarch.com
  对IP地址192.168.1.10和主机名gate.openarch.com,允许通过ssh连接。配置完了之后,用tcpdchk检查
  [root@deep]# tcpdchk
  tcpchk是TCP_Wrapper配置检查工具,它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。
  
  8. 别名文件aliases
  编辑别名文件/etc/aliases(也可能是/etc/mail/aliases),移走/注释掉下面的行。
  # Basic system aliases -- these MUST be present.
  MAILER-DAEMON: postmaster
  postmaster: root
  # General redirections for pseudo accounts.
  bin: root
  daemon: root
  #games: root ?remove or comment out.
  #ingres: root ?remove or comment out.
  nobody: root
  #system: root ?remove or comment out.
  #toor: root ?remove or comment out.
  #uucp: root ?remove or comment out.
  # Well-known aliases.
  #manager: root ?remove or comment out.
  #dumper: root ?remove or comment out.
  #operator: root ?remove or comment out.
  # trap decode to catch security attacks
  #decode: root
  # Person who should get roots mail
  #root: marc
  最后更新后不要忘记运行/usr/bin/newaliases,使改变生效。
  
  9.阻止你的系统响应任何从外部/内部来的ping请求。
  既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。
  echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  
  10. 不要显示出操作系统和版本信息。
  如果你希望某个人远程登录到你的服务器时不要显示操作系统和版本信息,你能改变
  /etc/inetd.conf中的一行象下面这样:
  telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
  加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login:
  
  11.The /etc/host.conf file
  编辑host.conf文件(vi /etc/host.conf)且加下面的行:
  # Lookup names via DNS first then fall back to /etc/hosts.
  order bind,hosts
  # We don have machines with multiple IP addresses on the same card
  (like virtual server,IP Aliasing).
  multi off
  # Check for IP address spoofing.
  nospoof on
  IP Spoofing: IP-Spoofing is a security exploit that works by tricking
  computers in a trust relationship that you are someone that you really aren .
  
  12. The /etc/securetty file
  该文件指定了允许root登录的tty设备,/etc/securetty被/bin/login程序读取,它的格式是一行一个被允许的名字列表,如你可以编辑/etc/securetty且注释出下面的行。
  tty1
  #tty2
  #tty3
  #tty4
  #tty5
  #tty6
  #tty7
  #tty8
  -意味着root仅仅被允许在tty1终端登录。
  
  13. 特别的帐号
  禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。
  为删除你系统上的用户,用下面的命令:
  [root@deep]# userdel username
  为删除你系统上的组用户帐号,用下面的命令:
  [root@deep]# groupdel username
  在终端上打入下面的命令删掉下面的用户。
  [root@deep]# userdel adm
  [root@deep]# userdel lp
  [root@deep]# userdel sync
  [root@deep]# userdel shutdown
  [root@deep]# userdel halt
  [root@deep]# userdel mail
  如果你不用sendmail服务器,procmail.mailx,就删除这个帐号。
  [root@deep]# userdel news
  [root@deep]# userdel uucp
  [root@deep]# userdel operator
  [root@deep]# userdel games
  如果你不用X windows 服务器,就删掉这个帐号。
  [root@deep]# userdel gopher
  [root@deep]# userdel ftp
  如果你不允许匿名FTP,就删掉这个用户帐号。
  ===
  打入下面的命令删除组帐号
  [root@deep]# groupdel adm
  [root@deep]# groupdel lp
  [root@deep]# groupdel mail
  如不用Sendmail服务器,删除这个组帐号
  [root@deep]# groupdel news
  [root@deep]# groupdel uucp
  [root@deep]# groupdel games
  如你不用X Windows,删除这个组帐号
  [root@deep]# groupdel dip
  [root@deep]# groupdel pppusers
  [root@deep]# groupdel popusers
  如果你不用POP服务器,删除这个组帐号
  [root@deep]# groupdel slipusers
  ====
  用下面的命令加需要的用户帐号
  [root@deep]# useradd username
  用下面的命令改变用户口令
  [root@deep]# passwd username
  用chattr命令给下面的文件加上不可更改属性。
  [root@deep]# chattr +i /etc/passwd
  [root@deep]# chattr +i /etc/shadow
  [root@deep]# chattr +i /etc/group
  [root@deep]# chattr +i /etc/gshadow
  
  14. 阻止任何人su作为root.
  如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su加下面的行:
  auth sufficient /lib/security/pam_rootok.so debug
  auth required /lib/security/pam_wheel.so group=isd
  意味着仅仅isd组的用户可以su作为root. 然后,如果你希望用户admin能su作为root.就运行下面的命令。
  [root@deep]# usermod -G10 admin
  
  16. 资源限制
  对你的系统上所有的用户设置
推荐阅读
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
author-avatar
wb91cmy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有