Linux基线加固/整改
1.限制超级管理员远程登录
修改远程管理程序ssh的配置文件
vi /etc/ssh/sshd_config
PermitRootLogin no
重启sshd服务
systemctl restart sshd
2. 修改默认密码生存周期
一个好的密码时间策略如下:
vi /etc/login.defs
PASS_MAX_DAY 90 最长使用期限
PASS_MIN_DAY 0 最短使用期限
PASS_MIN_LIN 8 密码最小长度
PASS_WARN_AGE 7 最长期限到期前7天提醒修改密码
3. 设置密码强度策略
目的:规范使用高强度密码,延长被爆破的时间
修改pam认证文件
vi /etc/pam.d/system-auth
添加如下内容
password requisite pam_cracklib.so
try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minclass=3 minlen=8
centos7设置密码复杂性
vi /etc/security/pwquality.conf
#添加如下内容
authconfig --passminlen=8 --update 密码最短8位
authconfig --enablereqlower --update 包含一个小写
authconfig --enablerequpper --update 包含一个大写
authconfig --enablereqdigit --update 包含一个数字
authconfig --enablereqother --update 包含一个字符
4. 设置强制密码历史(修改后的密码不能和密码历史相似)
目的:防止被社工字典爆破
修改pam认证文件
vi /etc/pam.d/system-auth
#添加内容
password sufficient pam.unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
5.限制硬件资源
目的:限制用户对系统资源的使用,避免DDOS攻击
vi /etcsecurity/limits.conf
加入以下内容
* soft core 0* hard core 0
* hard rss 5000
* hard nproc 20
这些行的意思是:“core 0”表示禁止创建core文件;“nproc 20”把最多进程数量限制到20;“rss 5000”表示除了root之外,其他用户都最多只能用5M内存。这些都只对登录到系统中的用户有效。通过这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。星号“*”表示的是所有登录到系统的用户。
6.对用户使用ls、rm设置别名
目的:让ls随时看清文件属性,让rm需要确认后删除目标实施方法
修改当前用户的登录启动脚本
vi ~/.bashrc
#追加别名命令
alias ls=“ls -alh”
alias rm=“rm -i”
7. 禁止任何人su为root账户
目的:避免任何人使用su切换到root,减少提权风险
修改su的配置文件
vi /etc/pam.d/su
#加入以下内容
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so
group=wheel
如果需要su切换,将用户加入wheel组
gpasswd -a username wheel
8. 启用日志记录功能,使用日志服务器
目的:增加审计记录,分布保存日志
修改应用服务器日志配置文件
vi /etc/rsyslog.conf
#确认关键日志审计是否存在
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
并添加两行转发日志信息
*.info;mail.none;authpriv.none;cron.none @IP地址 (一个@是udp,两个@@是tcp)
authpriv.* @IP地址
重启服务
systemctl restart rsyslog
设置日志服务器的配置文件
vi /etc/rsyslog.confss
开启接收日志功能
$ModLoad imudp
$UDPServerRun 514
$template Romote,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%fromhost-ip%.log" //远程日志路径
:fromhost-ip,!isequal,"127.0.0.1" ? Remote //本地日志不存储远程文件
重启服务
systemctl restart rsyslog
PS:记得要关闭iptables(iptables -F)
9.重要日志权限不应该高于640
目的:防止日志泄露敏感信息
ls -la /var/log/
chmod -R 640 /var/log
10.关闭非加密远程管理telnet
目的:降低被抓包后获取系统关键信息
修改telnet配置文件
vi /etc/xinetd.d/telnet
#修改内容为
disable=yes
11. 使用加密的远程管理ssh
目的:使用安全套接字层加密传输信息,避免被侦听到敏感信息
修改配置文件
vi /etc/ssh/sshd_config
#禁止root登录,修改默认端口,开启v2版本
PermitRootLogin no
Port 10022
Portocol 2
重启服务
systemctl restart sshd
12.固化常用DNS解析
目的:降低被DNS劫持的可能
修改hosts文件:vi /etc/hosts
#加入解析信息
61.59.123.22 www.baidu.com
13. 不响应ICMP请求
目的:不对ICMP请求作出响应,避免泄露信息
修改网络策略布尔值
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
14. 禁止处理无源路由
目的:防止被无源数据包利用,防止ARP攻击
检查是否开启了路由功能
sysctl -n net.ipv4.conf.all.accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
15.FTP使用黑白名单限制
检查黑名单是否包含高危账户
cat /etc/ftpusers
root daemon bin sys adm lp uucp nuucp listen nobody noaccess nobody4
使用白名单文件
cat /etc/user_list
#配置文件中是否存在
user_deny=NO
userlist_enable=YES
16. FTP设置上传文件后的默认权限
目的:防止被上传执行脚本
检查主配置文件/etc/vsftpd.conf是否存在如下内容
write_enable=YES
local_umask=022
anon_umask=022
17.去掉FTP的banner信息
目的:防止泄露服务信息
检查主配置文件/etc/vsftpd/vsftpd.conf是否存在如下内容
#存在下面这行,则要删掉
ftpd_banner=“Authorized users only. All activity may be monitored and reported.”
18. 检查账户目录中是否存在高危文件.netrc、.rhosts(使用第三方远程软件时会生成这些记录文件)
目的:防止被使用远程登录漏洞
检查账户家目录中是否存在远程主机文件
for DIR in `cut -d":" -f6 /etc/passwd`; do
if [ -e $DIR/.netrc ]; then
echo "$DIR/.netrc"
fi
done
//无返回值表示正常
19.隐藏系统提示信息
目的:避免通过系统提示信息获取系统状态
#查看登录banner信息
cat /etc/issue
#清空banner文件
echo > /etc/issue
20. 设置登录超时注销
目的:防止疏忽导致命令行被他人使用
#修改/etc/profile
vi /etc/profile
#在HISTSIZE下面加入
TMOUT=180
生效
source /etc/profile
21.关闭ctrl+alt+del重启功能
目的:防止误操作重启服务器
# 修改配置文件
vi /usr/lib/systemd/system/ctrl-alt-del.target
注释所有内容
22.检查是否存在空口令账号
不应该存在空口令的账号。
#检查是否有输出账号,若有输出则该账号为空口令账号
awk -F: ‘($2 == “”) { print $1 }’ /etc/shadow
23. 检查除root账户以外是否存在uid为0的账户
uid为0的账户应只有root
#检查输出条目是否只有root
awk -F: ‘($3 == 0) { print $1 }’ /etc/passwd