服务器加固是通过各种方法增强服务器安全性的过程。保护操作系统免受黑客、破解者和攻击者的侵害。网络安全防护的目标是保密性、完整性、可用性、可控制性、不可否认性。
一、window服务器等保加固
以win2012和win2008 为例:
(win2008)
(win2012)
win+r主要命令:netplwiz,lusrmgr.msc,secpol.msc,eventvwr.msc,gpedit.msc,services.msc cmd: netstat -an,net share,firewall.cpl,appwiz.cpl
也可以直接在管理工具这里操作更方便:
1、应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换:管理工具-本地安全策略-账户策略-密码策略
【建议配置口令的复杂度策略及有效期策略,防止口令被轻易破解(建议口令长度不小于8位,至少包含小写字母、大写字母、数字、特殊符号中的3种,口令有效期不超过90天)】
2、应具有登录失败处理功能,配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;就在密码策略的下面就有锁定策略
连接超时配置:
计算机配置—管理模板—windows组件—远程桌面服务—远程会话主机—安全
3、当进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听;
设置就在连接超时的上面
运行—gpedit.msc—计算机配置—管理模板—windows组件—远程桌面服务—远程会话主机—安全,双击“远程(RDP)连接要求使用指定的安全层”
4、应对登录的用户分配账户和权限;(创建系统管理员、安全管理员、审计管理员)
需要做两件事:重命名admin,三权分立。
进入“计算机管理—本地用户和组—用户
5、应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;管理工具-账户策略-本地策略-审核策略【配置密码的下面】
6、审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;右键“计算机”-管理-事件查看器-windows日志-应用程序/安全/系统
7、应关闭不需要的系统服务、默认共享和高危端口;
在IP安全策略中建立阻断规则并分配启用,或在防火墙的出入站规则中进行阻断策略配置。(通过配置本机防火墙或组策略来关闭135、445、139等端口,且Windows关闭多余服务Print Spooler、Remote Registry、Task Scheduler、telephony和默认共享IPC$。)
控制面板-管理工具-账户策略-高级安全windows防火墙-入站规则/出站规则
以及
8、应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警;
安装主机层入侵检查软件,安装的主机层检测软件要在
https://ispl.mps.gov.cn/ispl/jsp/common/ProductList_Public.jsp 里可查询到的。
其实火绒安全也可以,也最方便:
9、应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
查看服务器是否安装杀毒软件
【同样火绒安全就可以】
10、及时清理存放在系统中的用户鉴别信息,防止信息外泄,被黑客利用。
控制面板—管理工具—本地安全策略—本地策略—安全选项
“交互式登录:不显示最后的用户名” -选择”已启用“
11、及时清理存放在系统中的用户鉴别信息,防止信息外泄,被黑客利用。
管理工具—本地安全策略—本地策略—安全选项:关机:清除虚拟内存页面文件
12、设置屏保密码,提高服务器的安全性
控制面板—显示—更改屏幕保护程序
【在恢复时显示登陆屏幕一定要勾上,这才是最重要的】
13、设置会话超时锁定功能,提高服务器的安全性。
运行—gpedit.msc—计算机配置—管理模版—Windows组件—远程桌面服务—远程桌面会话主机—会话时间限制—设置活动但空闲的远程桌面服务会话的时间限制
还有对远程连接的网络地址进行限制:
二、Linux服务器三级等保加固
Linux操作常用命令:cat看文件,vi vim打开编辑文件,“S/i”为修改命令,修改完毕“ESC”退出修改,然后再按“:wq”进行保存。
centos7、redhat7,linux系统命令基本差不多,其他系统的自己可以查下。
以下是整理的一些配置,可供参考。
1.
密码周期
: vim /etc/login.defs max_days:90 mindays:2 minlen:8 warnage:7
2.
密码复杂度
: vim /etc/pam.d/system-auth
:
password requisite pam_cracklib.so retry=3 difok=3 minlen=8 lcredit=-1 dcredit=-1 ucredit=-1 ocredit=-1
【
Ubuntu
系统
->vim /etc/pam.d/common-password
】
3.
登录失败策略【和密码复杂度一起】
: vim /etc/pam.d/system-auth:
auth required pam_tally2.so onerr=fail deny=5 lock_time=2 unlock_time=1800
【
Ubuntu
系统
->vim /etc/pam.d/common-auth
】
4.centOS
查看
talnet
服务是否运行
:
netstat -an | grep ":23"
禁止
telnet
运行,禁止开机启动
:
systemctl stop telnet.socket
systemctl disable telnet.socket
systemctl restart xinetd
5.
用户名
vim/etc/passwd
截图检查
useradd (name)
passwd name
【更改密码】
system,audit,super
6.
审计策略开启
systemctl status rsyslog
systemctl status auditd
7.
审计记录
(
日志配置)
vim /etc/logrotate.conf :
让日志文件转储一个月,保留
6
个月的信息
minsize 1M
rotate 6
monthly
连接日志审计系统
vim /etc/rsyslog.conf
*.* @@:514
处改为
@+
日志审计系统的
ip
然后
systemctl restart rsyslog.service
7.5
部署
clamav
...
freshclam
8.
超时锁定
vim /etc/profile
export TMOUT=900
8.5.
安全备份
:ls /tmp/
//etc.tar.gz
8.555
关闭不需要的服务、端口流程:
firewall-cmd --list-all
[linux
防火墙关闭端口
]
打开防火墙服务:
systemctl start firewalld
放行指定单个端口:
firewall-cmd --zone=public --add-port=25/tcp --permanent
批量限制
ip
,限制
192.168.x.x
的所有
ip
访问
yy
端口:【
25
,
135
,
445
,
139
,
80
】
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.x.0/24' port protocol='tcp' port='80' reject"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.4.0/24' port protocol='tcp' port='22' accept"
生效上面添加的指令:
firewall-cmd --reload
查看所有被放行的端口:
firewall-cmd --list-port
(
--list-all)
取消指定一开放端口:
firewall-cmd --zone=public --remove-port=25/tcp --permanent
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.4.0/24" port protocol="tcp" port="22" reject'
9.cat /etc/passwd
(
shadow)
命令查看所有账号
userdel -r
删除不必要的账号
passwd -l
禁用账户
passwd -u
解锁账户
10.
防
dos
cat/proc/sys/net/ipv4/tcp_syncookies
截图【
syncookie
默认值】
vim /etc/sysctl.conf
加上
net.ipv4.tcp_max_syn_backlog = 2048
1、操作系统安装
(1)最小化安装、配置网络。
(2)开启SSH服务,并把SSH默认端口22修改成其他端口:
[root@localhost ~]# service sshd start
修改/etc/ssh/sshd_config文件,在下面加上一行保存:
“ port 端口号”
(3)安装补丁升级至最新:
[root@localhost ~]# yum install update
[root@localhost ~]# cat /etc/*release //最后版本
(4)openssh 版本升级(此过程升级错误可能导致无法远程管理,虚拟机升级前建议做快照):
[root@localhost ~]# yum install -y gcc openssl-devel pam-devel rpm-build
[root@localhost ~]# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-XXXX.tar.gz
[root@localhost ~]# tar -zxvf openssh-XXXX.tar.gz
[root@localhost ~]# cd openssh-XXXX
[root@localhost ~]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords--with-tcp-wrappers
[root@localhost ~]# make && make install
修改配置文件/etc/ssh/sshd_config,允许root登录:
“PermitRootLogin yes ”前的#号去掉
说明:XXXX表示版本。
(5)修改hostname:
[root@localhost ~]# hostname=your_hostname
(6)系统Banner:
[root@localhost ~]# echo “Authorized users only!” >/etc/redhat-release
[root@localhost ~]# echo “Authorized users only!”>/etc/issue
2. 身份鉴别
(1)身份标识唯一性,进行/etc/passwd和/etc/shadow文件的完整性相同检查,不存在相同uid 的用户,不使用过期的账号和无用的账号,限制daemon、shutdown、games、ftp、nobody等默认用户。
(2)身份标识和鉴别:创建“newuser”普通用户,仅允许“newuser”用户su为root用户:
-
[root@localhost ~]# passwd -l alice
-
[root@localhost ~]# passwd -S alice
-
[root@localhost ~]# passwd -u alice
-
[root@localhost ~]# usermod -L alice
-
[root@localhost ~]# usermod -U alice
[root@localhost ~]# useradd newuser
[root@localhost ~]# usermod -G wheel newuser
修改配置文件cat /etc/pam.d/su 文件:
“auth required pam_wheel.so use_uid”前的“#”号去掉
说明: -l:锁定、-u解锁、-S查看状态、
-L:usermod下的锁定;
U:usermod的解锁。
(3)远程管理加密:使用ssh协议登录,禁止使用 telnet、ftp等明文网络协议。
(4)远限制用户su。
限制能su到root的用户。
使用命令 vi /etc/pam.d/su修改配置文件,在配置文件中添加行。例如,只允许test组用户su到root,则添加 auth required pam_wheel.so group=test。
3.密码周期策略
vim /etc/login.defs 查看密码策略
应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
vi /etc/login.defs,按“i”进入修改模式,将参数修改成以下图片上的参数值,修改完毕后按“ESC”退出修改模式,此时为只读模式,然后再输入“:wq”进行保存。
4.密码复杂度策略
输入命令vi /etc/pam.d/system-auth 按“i”进入修改模式,在文中添加如下命令,修改完毕后按“ESC”退出修改模式,此时为只读模式,然后再输入“:wq”进行保存。
口令长度:至少8位,且口令需包括数字、小写字母、大写字母和特殊符号4类元素中的至少3类:
password requisite pam_cracklib.so retry=3 difok=3 minlen=8 lcredit=-1 dcredit=-1 ucredit=-1 ocredit=-1
5.口令生存期
账户口令的生存期不得长于180天,两次修改密码的最小间隔时间 7天、密码最小长度 10位、密码过期前7天开始提示修改;
修改配置文件cat /etc/login.defs, 在下面加上几行保存:
“PASS_MAX_DAYS 180”
“PASS_MIN_DAYS 7”
“PASS_MIN_LEN 8”
“PASS_WARN_AGE 7”
6.口令历史有效次数
不重复使用最近3次已使用过的口令。
修改配置文件 cat /etc/pam.d/system-auth,在下面加上一行保存:
“password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3 ”
说明:“口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;星号代表账号被锁定,有些系统为NP;双叹号表示这个密码已经过期了。$6$开头表明是用SHA-512加密的,$1$ 开头表明是用MD5加密的,$2$ 开头表明是用Blowfish加密的,$5$ 开头表明是用SHA-256加密的。
7.登入失败策略
vi /etc/pam.d/sshd 按“i”进入修改模式,在文中添加如下命令,修改完毕后按“ESC”退出修改模式,此时为只读模式,然后再输入“:wq”进行保存。
口令锁定策略:需设置连续认证失败次数超过5次,锁定该账号5分钟:
auth required pam_tally2.so deny=5 lock_time=300 even_deny_root unlock_time=0
登录超时锁定:
在/etc/profile里加上export TMOUT=900
8.访问控制
应对登录的用户分配账户和权限:
查看是否进行三权分立,即有不同的用户 :cat /etc/passwd
创建三个管理员账户:audit、system、security
如果没有可以通过命令创建:
useradd audit
useradd system
应及时删除或停用多余的、过期的账户,避免共享账户的存在;应授予管理用户所需的最小权限,实现管理用户的权限分离;
但在实际生产中,Linux系统很难完全满足该项要求,因为超级管理员用户root一旦被禁用会影响系统和应用的正常使用。但仍应严格限制具有root级权限的账户,其他用户仅应通过使用sudo被赋予root级权限
9.开启策略审核功能
分别输入“systemctl status rsyslog”与“systemctl status auditd”,开启策略审核功能即可。
10.安全日志属性设置
修改vi /etc/logrotate.conf 按“i”进入修改模式,将参数修改成以下图片上的参数值,修改完毕后按“ESC”退出修改模式,此时为只读模式,然后再输入“:wq”进行保存。
11.关闭不必要端口
对远程连接的网络地址进行限制:
按一个linux的firewall:
对它进行配置:
打开防火墙服务:
systemctl start firewalld
放行指定单个端口:
firewall-cmd --zone=public --add-port=25/tcp --permanent
批量限制
ip
,限制
192.168.x.x
的所有
ip
访问
yy
端口:【
25
,
135
,
445
,
139
,
80
】
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.x.0/24' port protocol='tcp' port='80' reject"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.4.0/24' port protocol='tcp' port='22' accept"
生效上面添加的指令:
firewall-cmd --reload
查看所有被放行的端口:
firewall-cmd --list-port
(
--list-all)
取消指定一开放端口:
firewall-cmd --zone=public --remove-port=25/tcp --permanent
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.4.0/24" port protocol="tcp" port="22" reject'
12.入侵防范
应遵循最小安装的原则,仅安装需要的组件和应用程序;
查看系统当前版本,是否及时安装安全补丁
可以安装部署clamav
安装教程可以百度自行查询。
截图freshclam证明是最新版本即可
13.可信验证
可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。
备注:对该项的要求是做了加分,没做不扣分。
14. 其他必要加固
(1)禁止root用户远程登录
修改配置文件 /etc/ssh/sshd_config
把“PermitRootLogin yes” 改为“PermitRootLogin no”
(2)设置命令行界面系统输入空闲超时10分钟,自动退出:
修改配置文件cat /etc/profile,在下面加上一行保存:
“export TMOUT=600”
(3)禁ping:
修改配置文件cat /etc/sysctl.conf 在下面加上一行保存:
“ net.ipv4.icmp_echo_ignore_all=1”
(4)禁止Traceroute探测:
[root@localhost ~]# iptables -A FORWARD -p icmp -j DROP
(5)精简开机自启动服务,开启审计、系统日志、防火墙等服务:
[root@localhost ~]# for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done
[root@localhost ~]#f or sun in auditd rsyslog sshd network iptables ip6tables;do chkconfig --level 3 $sun on;done
(6)安装如zabbix主机监控的系统对主机运行状态等进行监控。
(7)安装杀毒软件。
15. 系统应用部署完成后需要配置
(1)设置文件访问权限:
修改配置文件 /etc/profile, 在下面加上一行保存:
“umask=027”
(2)建议修改以下重要文件和目录权限(根据需要自行配置):
文件 权限值
/etc/group文件 644
/etc/passwd文件 644
/etc/xinetd.conf文件 600
/etc/shadow文件 400
/etc/services文件 644
/etc/security目录 600
/etc/rc6.d文件 750
/tmp文件 750
/etc/ 750
(3)根据服务器日志情况进行日志策略调整(等保要求日志保存不少于180天)。
(4)单个用户多重并发会话、最大并发会话连接数等限制策略配置。
(5)制定备份策略保证数据安全,定期进行数据异地备份(例如每天/周/月季度对数据库和重要代码进行增量备份/全量备份等)。
(6)根据系统重要性对相关系统做应用级/数据级的异地备份。
7. 清除系统安装时的配置信息
[root@localhost ~]# yum clean all
[root@localhost ~]# echo > /var/log/wtmp
[root@localhost ~]# echo > /var/log/secure
[root@localhost ~]# echo > /var/log/messages
[root@localhost ~]# echo > /var/log/cron
[root@localhost ~]# echo > /var/log/dmesg
[root@localhost ~]# echo > /var/log/lastlog
[root@localhost ~]# echo > /var/log/rpmpkgs
[root@localhost ~]# echo > /var/log/utmp
[root@localhost ~]# echo > /var/log/yum
[root@localhost ~]# echo > /var/log/btmp
[root@localhost ~]# echo > ./.bash_history
[root@localhost ~]# history –c