Linux(Centos)安全加固方案总结
Linux安全加固方案总结
本人菜鸟一枚,通过CSDN文章,总结日常工作、学习到的经验,供自己日常查阅与有需要伙伴查阅。
Linux系统加固主要通过以下几个方面,实现系统安全加固。本文以Centos7作为例子,进行总结。
目录
- 系统安全防线
- 1. 系统自带防火墙iptables(Centos6)
- 2. 系统自带防火墙firewalled(Centos7)
- 3. 开启SELinux服务(Centos7)
- 身份鉴别
- 1.设置密码复杂度策略
- 2.设置登录策略
- 访问控制
- 1.设置root用户ssh登录策略
- 2.禁止无用的系统用户登录
- 3.检查是否存在除root以外的UID=0的用户
- 4.允许或禁止用户或组通过ssh登录
- 安全审计
- 1. 查看进程运行是否正常
- 2.系统默认日志记录范围是否覆盖
- 3. 查看系统登录日志
- 入侵防范
- 1. 查看自身入侵可疑日志
- 2. 最小安装原则
- 3. 检查运行服务
- 4. 检查服务运行情况
- 资源控制
- 1.TCP Wrappers程序管控
- 2.设置登录超时时间
- 3. 设置普通用户最大进程数、CPU、内存等
- 4.适当关闭外设-U盘、光盘等
系统安全防线
Linux防火墙策略设置主要三道防线;
1. 系统自带防火墙iptables(Centos6)
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用
- 基础命令
启动: service iptables start
关闭: service iptables stop
查看状态: iptables -V
重启 : service iptables restart
- 查看防火墙设置
主要分为5种规则类型数据包:
进行路由选择前处理数据包(PREROUTING);
处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
进行路由选择后处理数据包(POSTROUTING)
使用命令查看防火墙设置
iptables -L
使用命令清除防火墙
iptables -F
- 设置防火墙策略
使用iptables命令进行添加删减。
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
或者直接在路径/etc/sysconfig下,对文件iptables编辑。
配置完成记得重启防火墙命令
更多iptables配置命令详见
2. 系统自带防火墙firewalled(Centos7)
- 基础命令
启动: systemctl start firewalld
重启: systemctl restart firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
前台可视化界面-防火墙设置也可以设置
另外,命令具体参看-更多firewalls配置命令详见
3. 开启SELinux服务(Centos7)
SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
简单概述下基本的三种安全访问控制类型
MAC(强制访问控制类型)
DAC(自主访问控制类型) --通常就是ACL策略居多
RABC(基于角色访问控制类型)
安全性MAC>RABC>DAC
- SELinux 有三种工作模式,分别是
enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中,并且自动拦截
permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中,只告警不拦截。一般为调试用。
disabled:关闭 SELinux。不拦截不告警。
配置文件路径:/etc/selinux,通过查看config,了解目前运行状态
- 查看命令
cat config
或者使用命令进行查询
[root@localhost selinux]# getenforce
Enforcing
[root@localhost selinux]#
- 临时修改命令(不用重启机器):
[root@localhost selinux]# setenforce 0 --0设为宽容莫斯
[root@localhost selinux]# getenforce
Permissive
[root@localhost selinux]# setenforce 1 --1设为强制模式
[root@localhost selinux]# getenforce
Enforcing
[root@localhost selinux]#
身份鉴别
1.设置密码复杂度策略
- 通过设置/etc/login.defs文件,进行密码策略设置
PASS_MAX_DAYS 180
#密码最大有效期
PASS_MIN_DAYS 1
#两次修改密码的最小间隔时间
PASS_MIN_LEN 8
#密码最小长度,对于root无效
PASS_WARN_AGE 7
#密码过期前多少天开始提示
上述对新增用户有效,如需修改现有策略,需使用chage
命令
chage命令详解
2.设置登录策略
- 使用cracklib模块设置密码复杂度
通过命令rpm -qa|grep cracklib --查看服务是否运行
(1)修改/etc/pam.d/system-auth,修改策略。
策略详解
PS:对普通用户有效,对root无效。
(2)记录用户登录失败次数并锁定
在/etc/pam.d/system-auth中“#%PAM-1.0”下面一行加入
auth required pam tally2.so onerr=fail deny=10 no magic root unlock time=300 注意:一定要加在#%PAM-1.0下面一行
参数说明:
deny[=n] | 最大尝试次数,超过锁定 |
---|---|
unlock_time | 解锁时间 |
even_deny_root | 同时限制root用户 |
root_unlock_time[=n] | 设定root锁定后,多少时间解锁 |
quiet | 不对已锁定用户发出提示消息 |
root策略建议谨慎设置,否则很容易导致无法解锁root
设置了unlock_time会自动解锁。否则需要手动解锁。
运行命令pam_tally2 -u 用户 -r
(3)如果启用了SSH远程登录,可以通过命令看配置
more /etc/ssh/sshd_config
设置LoginGraceTime 15m #账号锁定时间15分钟
MaxAuthTries 3 #账号锁定阈值
访问控制
1.设置root用户ssh登录策略
- 禁止root用户远程ssh登录
通过修改 /etc/ssh/sshd_config,将参数修改#PermitRootLogin no
重启ssh服务
service sshd restart
2.禁止无用的系统用户登录
通过命令 usermod -s /sbin/nologin 用户 --禁止用户远程登录`
通过命令 usermod -s /bin/bash 用户名 --恢复允许用户远程登录`
查看/etc/passwd 表示用户是否可以登录。
3.检查是否存在除root以外的UID=0的用户
通过命令 awk -F: '($3==0){print $1}' /etc/passwd --输出当前uid=0的用户
4.允许或禁止用户或组通过ssh登录
- 设置ssh用户白名单、黑名单
vi /etc/ssh/sshd_config
增加用户(允许、白名单)
AllowUsers 用户1 用户2
或
添加用户组
AllowGroups 组1 组2
PS:取交集,意思两个同时允许才可以。其他禁止
取消用户(禁止、黑名单)
DenyUsers 用户1
或
DenyGroups 组1
PS:取并集,有一个设置了不允许都会不允许。
5.检查新建文件系统权限默认值
通过umask
,权限掩码值检查当前用户新建文件、文件夹默认权限。root用户正常是022。
022的意思是,用文件夹最大权限777(rwxrwxrwx)-当前设置权限755(rwx-r-xr-x) = 022,为什么文件夹默认配置了执行-x权限,因为文件夹没执行的话进不去,就没意义了。
而文件权限默认都没有执行,所以就是默认最大666(rw-rw-rw)-644(rw-r–r--=002)。
普通用户默认值是002
6.查看重点文件权限是否合理
如/etc/shadow /etc/passwd(744)/etc/group /etc/inittab /etc/lilo.conf /etc/grub.conf /etc/xinetd.conf /etc/crontab /etc/securetty /etc/rc.d/init.d /var/log/messages/var/log/wtmp /var/run/utmp /var/spool/cron /usr/sbin/init /etc/login.defs(644)/etc/*.conf /sbin/bin /etc/init.d /etc/xinetd.d 等等
安全审计
- 标准基线
本地安全审计日志功能是否正常打开运行
安装第三方工具等
1. 查看进程运行是否正常
[root@localhost selinux]# ps -ef |grep syslogd --查看进程服务情况
[root@localhost selinux]# ps aux|grep syslogd
[root@localhost selinux]# ps -ef|grep auditd --查看守护进程情况
2.系统默认日志记录范围是否覆盖
查看/etc/rsyslog.conf配置文件。
rsyslog详解
3. 查看系统登录日志
命令lastlog --查询登录用户、端口、时间等
命令last -x --显示系统关闭、用户登录和退出的历史
更多last命令详解
命令lastb --列出失败尝试的登录信息
入侵防范
能记录、检测到入侵行为,能记录入侵者ip、主机名、时间等。建议有条件安装第三方设备如HIDS、NIDS等。
1. 查看自身入侵可疑日志
通过查看日志,可疑识别非法访问或可疑的暴力破解。
more /var/log/secure | grep fail
2. 最小安装原则
3. 检查运行服务
命令service --status-all --检查是否有非必要服务,如ftp、smtp等
4. 检查服务运行情况
netstat-lp(查看开启服务)
netstat -an(查看开启的端口)
netstat-anlp(查看开启的端口及服务)
资源控制
1.TCP Wrappers程序管控
通过设置/etc/hosts.allow和/etc/hosts.deny文件
顺序:
1./etc/hosts.allow
2./etc/hosts.deny
3.以上都不符合,则放行
- /etc/hosts.allow
ssh允许单个ip
sshd:192.168.220.1
ssh允许ip段
sshd:192.168.220.
telnet允许单个ip
in.telnetd:192.168.220.1
telnet允许ip段
in.telnetd:192.168.221.
- /etc/hosts.deny
sshd:ALL
in.telnetd:ALL
禁止相关服务
2.设置登录超时时间
通过命令查看cat /etc/profile |grep TMOUTvi /etc/profile 添加export TMOUT=600 --600秒超时
3. 设置普通用户最大进程数、CPU、内存等
进入 /etc/security/limits.conf 文件下,
增加代码roxy soft nproc 10240roxy hard nproc 10240roxy soft nofile 10240roxy hard nofile 10240
注:roxy 为需要修改线程数的用户名,10240 为设置的进程数和文件数限制,可根据需要修改。
也可以用ulimit
命令 详见ulimit命令用法
4.适当关闭外设-U盘、光盘等
在vi /etc/modprobe.d/blacklist.conf
里添加一行:
blacklist usb-storage
执行命令生效modprobe -r usb-storage
Linux(Centos)安全加固方案总结相关推荐
- Linux(CentOS)安装分区方案
为什么80%的码农都做不了架构师?>>> Linux(CentOS)安装分区方案 /boot(不是必须的):/boot分区用于引导系统,它包含了操作系统的内核和在启动系统过程中 ...
- linux主机安全加固,linux主机安全加固方案.doc
. . PAGE word版本 PAGE 2 目 录 TOC \o "1-3" \h \z \u LINUX加固方案 1 1.安装最新安全补丁 4 2.网络和系统服务 4 3.核心 ...
- 【安全运维】 linux 系统账户,网络,简易安全加固方案(第一部分),经测试可行...
前言 讲到linux系统账户的管理以及安全,就必须涉及 /etc/passwd /etc/shadow 这2个文件 这里以截图中文字说明的方式,来分析这2个文件的内容,并且给出一些实用的安全加固 ...
- Linux服务器加固方案
前言:本人在几家小厂做开发,主Java,因人手问题,前端/安卓/服务器等都有涉猎.这里我结合网上各位大佬的经验和自己收获总结.对Linux服务器安全 和 防火墙的配置 和 服务器加固方案 进行简单的讲 ...
- CentOS服务器的加固方案
>>>Centos账户安全 对Centos的加固首先要控制用户的权限,用户权限主要涉及到/etc下的/passwd,/shadow和/group三个文件 /passwd文件主要是存储 ...
- 记一些Linux/centos的基础运维命令
目录 前言 基础硬件部分 基础操作指令 更改网络配置 防火墙 前言 相较于windows,新手在接触Linux/centos(ubuntu.debian.redhat)等非图形化界面时会比较生疏和乏力 ...
- 微信录音arm格式转换为mp3(亲测解决 Java linux centos 环境)
问题:微信录音 arm格式后缀强制改为mp3后,微信打开播放不了,只有部分浏览器可以播放 环境:linux centos7 springboot 网上找了一圈,都不太完整,有头没尾的.总结了一 ...
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...
- CentOS 7 分区方案
通常系统盘都会选择性能较好SSD,一般在500G左右,这里就以500G硬盘为例,以下为CentOS 自动分区方案: 分区应该按照实际服务器用途而定,自动分区方案将 /home 空间分配太多了,多数情况 ...
最新文章
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 构造函数分析 | makeDexElements 函数分析 )
- windows php cli 后台运行_【续】windows环境redis未授权利用方式梳理
- java第三章:流程控制语句
- python 中如何判断list中是否包含某个元素
- 同时装有py2 和3,运行scrapy如何区分
- 快速生成plist文件
- LeetCode:每日一题(2020.4.9)
- spring 获取一个包下的所有bean_面试官问我:为什么 Spring 中的 bean 默认为单例?...
- WaitForSingleObject的使用
- 关于创建String对象的抉择
- 优惠券使用/凑满减优惠/硬币组合问题(结果包括最优组合和最优值)
- C语言输入学生成绩算平均值
- 浅谈计算机语言与英语,浅谈日常英语与计算机专业英语区别.doc
- 读书笔记一 —— Richard Matthew Stallman
- 运算放大器的共模抑制比CMRR
- 微信输入法语音转文字
- 最大似然估计、最大后验概率估计和贝叶斯估计
- SDN软件定义网络之OpenFlow协议
- 基于CANoe的Bootloader上位机软件 下位机为飞思卡尔MC9S12G128MLL
- 自动化测试之获取mysql中的数据