当前位置: 首页 > news >正文

Linux服务器安全配置

1用户帐户和环境 
1.1确保没有空口令/弱口令帐户 系统帐户没有口令或有弱口令,导致服务器的安全受到威胁,需要修改没有口令或弱口令的帐户,或删除该帐户。
设置方法: 
1、在命令行输入: 
[root]# awk -F: '($2 == "!!") { print $1 }' /etc/shadow 
2、没有任何返回信息表明没有空口令或弱口令的帐户。有空口令或弱口令的帐户,将所有这样的帐户列出并删除。另外可以在授权范围内尝试使用口令破解器对帐户口令的强度做一定程度上的检测。 
1.2设置口令期限 
设置口令期限原理同 
Windows系统的密码策略设置,可以到期限提醒用户修改密码,以保护服务器的安全。
设置方法: 
1、进入/etc目录,编辑 
login.defs文件,在命令行输入: 
[root]# cd /etc 
[root]# vi login.defs 
2、打开 
login.defs文件,修改如下参数值:

PASS_MAX_DAYS 90 #口令最长保留期限 
90天 
PASS_MIN_DAYS 0 #口令最短保留期限 
0天 
PASS_MIN_LEN 8 #口令最小 
8个字符 
PASS_WARN_AGE 7 #口令到期前 7天提醒

1.3确保除 root以外没有其它 UID为 0的帐户存在 系统只允许保留 root一个系统管理员帐户,如果存在多个管理员帐户,会导致服务器的信息泄露或安全风险,因此需要删除其它的系统管理员帐户。
设置方法: 
1、在命令行输入: 
[root]# awk -F: '($3 == 0) { print $1 }' /etc/passwd”。
2、返回信息中只有 root一个帐户为正确返回结果,删除其它的帐户。

1.4确保在 
root $PATH中没有'.' 如果在 root $PATH中有'.',那么可能会导致一些伪装木马的执行,使服务器受到病毒威胁,因此确保在 root $PATH中没有'.'。
设置方法: 
1、在$PATH中查找'.',在命令行输入: 
[root]# echo $PATH | egrep '(^|:)(\.|:|$)'”。

2、没有任何返回信息表明在 root $PATH中没有'.'。 
1.5删除.netrc文件 
.netrc文件是一个脚本程序,通过预先设置好的用户名和密码可以让远程用户不再输入口令即可登录,另外.netrc文件以明文保存用户帐户及口令,这也是非常危险的,因此必须删除.netrc文件。 
设置方法: 
1、在根目录下新建一个 shell脚本文件,例如“bbb.sh”,在命令行输入: 
[root]# cd / 
[root]# vi bbb.sh 
2、打开 bbb.sh文件,加入如下内容。

3、对 bbb.sh文件进行授权,在命令行输入: 
[root]# chown root:root bbb.sh 
[root]# chmod 744 bbb.sh

4、执行 bbb.sh文件,在命令行输入: 
[root]# ./bbb.sh

2系统访问、认证与授权

2.1删除.rhost文件 .rhost文件以明文保存用户帐户及口令,系统中存在 .rhost文件允许任何人不用密码也可远程登录服务器,因此是非常危险的,必须删除.rhost文件。 
设置方法: 
1、进入/etc/pam.d/目录,在该目录下新建一个 shell脚本文件,例如 
“aaa.sh”,在命令行输入: 
[root]# cd /etc/pam.d 
[root]# vi aaa.sh

2、打开 aaa.sh文件,加入如下内容。

3、对 aaa.sh文件进行授权,在命令行输入: 
[root]# chown root:root aaa.sh 
[root]# chmod 744 aaa.sh

4、执行 aaa.sh文件,在命令行输入: 
[root]# ./aaa.sh

2.2只允许 root用户使用 
at/cron 
at/cron是计划任务,若系统中允许其它用户使用计划任务会导致服务器的安全风险,因此只允许 root用户使用计划任务。并且计划任务设置为直接沿用 CIS的加固脚本,使服务器更加安全。 
设置方法: 
1、进入/etc目录,在命令行输入: 
[root]# cd /etc

2、删除其它用户使用的计划任务,在命令行输入: 
[root]# rm –f cron.deny at.deny

3、对 root用户使用的计划任务进行加固,在命令行输入: 
[root]# echo root > cron.allow 
[root]# [ -e cron.allow-preCIS ] && \ 
[root]# diff cron.allow-preCIS cron.allow 
[root]# echo root > at.allow 
[root]# [ -e cron.allow-preCIS ] && \

4、对计划任务文件进行授权,在命令行输入: 
[root]# chown root:root cron.allow at.allow 
[root]# chmod 400 cron.allow at.allow


3文件和目录权限 
3.1确认 passwd、shadow、group文件权限 Passwd、shadow、group文件中记录了系统的用户、口令、所属权限组的信息,这些文件访问权限不进行设置,任何用户进入系统可以查看该文件以获得系统的所有用户、口令信息,进而操作或破坏服务器。这些文件的权限只有系统管理员 root用户允许访问,可以防止服务器信息泄露。
设置方法: 
1、进入 etc目录,对 passwd、shadow、group文件授权给 root用户,在
命令行输入: 
[root]# cd /etc 
[root]# chown root:root passwd shadow group 
[root]# chmod 644 passwd group 
[root]# chmod 400 shadow

3.2为全局可写目录设置粘滞位粘滞位是每个文件的模式中的一个特殊位。设置粘滞位可阻止用户从该目录中删除其他用户的文件。通过设置目录的粘滞位,只允许文件属主、目录属主、或者具有相应权限的用户删除或重命名文件。 
设置方法: 
1、在命令行中输入: 
[root]# find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) –print

3.3删除没有明确属主的文件没有明确属主的文件,可视为垃圾文件,会占用系统的资源并且对服务器的安全造成隐患,所以需要将其删除。 
设置方法: 
1、查找所有没有属主的文件,在命令行输入: 
[root]# find / -nouser -o -nogroup -print

2、将查找出的文件使用 rm-f命令删除。 注意:请根据系统的实际使用情况有选择性删除。

4日志审计

4.1捕获发送到 syslog的安全信息记录系统日志信息,以便系统出现问题时查找并处理问题。 
设置方法: 
1、查看/etc/syslog.conf文件中是否存在“ authpriv.*”参数,进入 etc目录,编辑 syslog.conf文件,在命令行输入: 
[root]# cd /etc 
[root]# vi syslog.conf

2、打开 syslog.conf文件。


 
3、查看 authpriv.*参数,如果不存在,增加该参数。增加后对参数值 secure
文件进行授权,在命令行输入: 
[root]# touch /var/log/secure 
[root]# chown root:root /var/log/secure 
[root]# chmod 0600 /var/log/secure

5优化启动服务

5.1 禁用不必要的系统服务运行 Linux系统的时候,默认运行了很多的服务。但有许多服务是不需要的,很容易引起安全风险,需要将不必要的服务关闭。 
设置方法: 
1、查看目前系统中运行的服务,在命令行输入: 
[root]# chkconfig --list

2、查看目前系统中开启的端口,列出系统目前运行的 TCP和 UDP协议端口,
在命令行输入: 
[root]# netstat -ln

3、查看端口对应的服务,列出端口对应的服务名称等信息,在命令行输入: 
[root]# lsof –i:端口号

4、设置服务在系统中启动、停止,进入服务状态设置窗口,在命令行输入: 
[root]# ntsysv

5、在窗口中列出所有的系统服务,服务名前边[]中有*号的为该服务已启动,否则未启动,在已经启动的服务前,单击『空格键』,将*号选掉,单击『Tab』键,光标显示在【OK】按钮上,回车。 
5.2 卸载或禁用网络服务一般建议卸载或禁用下列网络服务: 
NIS/NIS+、NFS、SMB、GUIlogin(X-WINDOWS)、SNMP。 
对于 Web、Mail、FTP、DNS等通用服务,如果不是必要,也请卸载或禁用,禁用方法同 1.1。如果是必要的服务程序,须升级到最新版本。常见网络应用服务的升级更新网址如下: 
BIND: http://www.isc.org/products/BIND
SendMail:http://www.sendmail.org/security/
Apache: http://www.apache.org
WU-FTP: http://www.wu-ftpd.org/

 
6网络参数调整 
6.1网络参数调整 
根据不同的需求来调整/etc/sysctl.conf目录下的内核网络参数,通过合理的设置内核网络参数,达到提高网络的安全性和系统的稳定性的目的。 
设置方法: 
1、进入 etc目录,编辑 sysctl.conf文件,在命令行输入: 
[root]# cd /etc 
[root]# vi sysctl.conf

2、打开 sysctl.conf文件。

3、设置网络参数,调整如下: 
net.ipv4.ip_forward = 0 #如果为网关或路由器应设置为 1 
net.ipv4.conf.all.accept_source_route = 0 #禁止 IP源路由功能 
net.ipv4.tcp_max_syn_backlog = 4096 #提供 SYN泛滥保护 
net.ipv4.conf.all.rp_filter = 1 #提供 IP Spoofing保护 
net.ipv4.tcp_syncookies = 1 #提供 TCP SYN泛滥保护 
net.ipv4.conf.all.send_redirects = 0 #禁止发送 ICMP重定向 
net.ipv4.conf.all.accept_redirects = 0 #禁止 ICMP重定向 
net.ipv4.conf.default.accept_redirects = 0 #禁止 ICMP重定向 
4、保存并授权,在命令行输入: 
[root]# chown root:root /etc/sysctl.conf 
[root]# chmod 0600 /etc/sysctl.conf

为了能更好的使用服务器,使服务器能够合理、有效地提供服务,定期对服务器进行维护是非常必要的。为了方便大家在维护中了解一些维护内容,下面列出服务器日常维护规范。
日常维护内容: 
1、服务器的用户检查:每个月检查一次服务器的帐户,删除已经不再使用的帐户。 
2、服务器的安全、性能检查:每台服务器至少保证每周进行安全、性能检查,每次检
查的结果要求进行登记。 
3、服务器的数据备份:每台服务器至少保证每个月备份一次系统数据;每服务器至少
保证每两周备份一次应用系统数据。备份的数据文件名以备份的日期命名。 
4、服务器的日志管理:每台服务器保证每月对相关日志进行一次清理,清理前对应的
各项日志如应用程序日志、安全日志、系统日志等都应进行保存,保存的文件名以备份的日
期命名。 
5、服务器的应用程序更新:应用程序方面的安全更新一定要在发现的第一时间给每服
务器打上应用程序的补丁。 
6、定期的密码更改管理:每台服务器保证至少每三个月更改一次密码。

相关文章:

  • sqlmap使用文档
  • MSSQL2008一句话启用xp_cmdshell
  • web脆弱性评估漏洞利用
  • Web Application Firewall Bypasses and PHP Exploit
  • 利用Acunetix WVS进行批量网站漏洞评估
  • F4ck Fckeditor 的精简总结
  • 渗透技巧笔记 - 落泪红尘
  • webshell下查找所有IIS站点配置(渗透时可能有点用)
  • udf手动导出提权
  • 远程包含
  • 命令行下的嗅探工具 - RawSniffer 1.2
  • linux下给目录下所有子目录和文件赋权
  • discuz X2 0day
  • mssql update 的用法
  • Mysql安全措施
  • 【React系列】如何构建React应用程序
  • 2017前端实习生面试总结
  • create-react-app项目添加less配置
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Mybatis初体验
  • orm2 中文文档 3.1 模型属性
  • passportjs 源码分析
  • React Native移动开发实战-3-实现页面间的数据传递
  • Redis在Web项目中的应用与实践
  • Vim Clutch | 面向脚踏板编程……
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 入门到放弃node系列之Hello Word篇
  • 问题之ssh中Host key verification failed的解决
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 如何用纯 CSS 创作一个货车 loader
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​第20课 在Android Native开发中加入新的C++类
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​用户画像从0到100的构建思路
  • #在 README.md 中生成项目目录结构
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (三)elasticsearch 源码之启动流程分析
  • (三十五)大数据实战——Superset可视化平台搭建
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net Core和.Net Standard直观理解
  • .net wcf memory gates checking failed
  • .NET 事件模型教程(二)
  • .NET关于 跳过SSL中遇到的问题
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @RequestMapping 的作用是什么?
  • [APIO2012] 派遣 dispatching
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [IM] [Webhook] Webhook实现IM平台机器人