TypechoJoeTheme

学习使用

统计
登录
用户名
密码

Linux基线加固

admin博主
2022-01-17
/
0 评论
/
6,258 阅读
/
2142 个字
/
百度已收录
01/17
本文最后更新于2022年08月06日,已超过237天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

目录:

1.帐户安全

2.访问、认证安全

3.文件系统安全

4.服务安全

5.网络安全

6.日志记录

7.交互安全

8.防火墙

1. 帐户安全

1.1 账户文件

/etc/shadow和/etc/passwd文件属性只读

#chmod 777 /etc/shadow
#chmod 777 /etc/passwd

1.2 账户

删除或锁定无用的帐户

passwd username -l 锁定

passwd username  -u 解锁

禁止无用的系统用户登录

 usermod -s /sbin/nologin username
#一般以下这几个系统用户根据实际需要可以进行禁止登陆,可能现网系统还存在其他用户

空密码的帐户

awk -F ":" '($2=="!"){print $1}' /etc/shadow

口令策略

cat /etc/login.defs | grep PASS
chage

-m:两次更改密码的时间间隔最小天数

-w: 警告信息的天数

-E:帐号到期的日期

-d:上一次更改密码的日期

-i:停滞时期,超过天数禁用账户

-l:例出当前的设置

设定密码历史禁止重复使用最近5次的密码

cat /etc/pam.d/common-password | grep remember

remember=5

远程登录

cat /opt/ssh/etc/sshd_config

PermitRootLogin no

账户umask设置

#more /etc/profile
检查系统umask值

#vi /etc/profile
将umask值修改为027

1.3 帐户组

检查超级账户组用户

more /etc/group
more /etc/passwd

组ID为0的是超级账户组用户。

删除可能无用的用户组

groupdel groupname

移动普通账户到普通账户组

#查看账户组
more /etc/group 
more /etc/shadow

#修改用户所属组    
usermod –g  group  username

2. 访问、认证安全

2.1 操作系统版本信息

cat /etc/issue、/etc/issue.net、/etc/motd

#默认信息
Debian GNU/Linux 11

#修改为自定义信息,如
Access denied

2.2 远程登录取消telnet采用ssh

#查看ssh、telnet服务状态:
ps –ef | grep ssh
ps –ef | grep telnet

#修改/etc/inetd.conf文件,将telnet行注释掉
telnet stream tcp nowait root /usr/lbin/telnetd telnetd

#安装ssh软件包启动ssh
service sshd start



#如果必须使用telnet,建议禁止root用户直接远程telnet登录
/etc/securety文件,限制root登录

2.3 取消 ssh的banner信息

cat /etc/ssh/sshd_config
banner NONE

2.4 限制使用 ssh版本2.0

/etc/ssh/sshd_config Protocol 2,1 修改为 Protocol 2

2.5 ssh密匙

生成密钥

使用 ssh-keygen 命令生成
ssh-keygen 常用参数
-t: (type) 指定密钥的加密算法(一般 ed25519 , rsa),省略默认使用RSA。ssh-keygen -t rsa

-b: (bits) 指定密钥的二进制位数,数值越大加密解密的开销越大,同时密钥的安全程度越高,一般设置 1024 或者 2048 ssh-keygen -b 1024

-C: (comment) 指定密钥文件的注释,格式username@host: ssh-keygen -t rsa -b 2048 -C xxx1@email.com 生成

[root@host ~]$ ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

安装公钥
cat id_rsa.pub >> authorized_keys
或者
ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.2.200
#ssh-copy-id 把密钥追加到远程主机的 .ssh/authorized_key 上


chmod 600 authorized_keys
chmod 700 ~/.ssh

打开密钥登录功能 
vi /etc/ssh/sshd_config 
RSAAuthentication yes
PubkeyAuthentication yes

留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

禁用密码登录:

PasswordAuthentication no

重启 SSH 服务:
 service sshd restart

2.6 限制帐户FTP登录/禁止匿名登录

限制root、daemon、bin、sys、adm、lp、uucp、nuucp、nobody、hpdb、useradm等系统帐户FTP登录.

vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES #开启用户限制功能
anonymous_enable=NO #禁止匿名登录将此字段值从YES改为NO



vi /etc/vsftpd/chroot_list
#每一个帐户一行,添加以下帐户禁止FTP登录
root、daemon、bin、sys、adm、lp、uucp、nuucp、nobody、hpdb、useradm

2.7 认证失败次数锁定该账号

vi /etc/pam.d/system-auth 

auth required pam_tally.so oneer=filad deny=6 unlock_time=300 

设置为密码连续错误6次,锁定时间300 秒 。解锁用户:faillog -u -r

3. 文件系统安全

3.1 重要目录和文件的权限

/etc/、/tmp/、/etc/default、/etc/rc.config.d/

ls –l /etc/
ls –l /tmp/
ls –l /etc/default/
ls -l /etc/rc.config.d/

#使用chmod命令修改权限

chmod -R 644 /etc/ 

3.2 没有所有者的文件或目录

find / \( -nouser -o -nogroup \) -exec ls -al {} \

rm –rf filename

4. 服务安全

查看现有服务
        chkconfig –list
        chkconfig --list | grep 服务名称

4.1 禁止NIS/NIS+服务以守护方式运行

more /etc/rc.config.d/namesvrs

NIS_MASTER_SERVER=0
NIS_SLAVE_SERVER=0
NIS_CLIENT=0
NISPLUS_SERVER=0
NISPLUS_CLIENT=0

4.2 禁用打印服务以守护方式运行

more /etc/rc.config.d/tps
XPRINTSERVERS="''"

/etc/rc.config.d/lp
LP=0

/etc/rc.config.d/pd
PD_CLIENT=0

4.3 禁用SENDMAIL服务以守护方式运行

more /etc/rc.config.d/mailservs
SENDMAIL_SERVER=0

#或者
ch_rc -a -p SENDMAIL_SERVER=0 /etc/rc.config.d/mailservs

4.4 禁用不必要的标准启动服务

SNAplus2服务

more /etc/rc.config.d/snaplus2
START_SNAPLUS=0、START_SNANODE=0、START_SNAINETD=0

多播路由服务

more /etc/rc.config.d/netdaemons
MROUTED=0、RWHOD=0、DDFA=0、START_RBOOTD=0

DFS分布式文件系统服务

more /etc/rc.config.d/dfs
DCE_KRPC=0、DFS_CORE=0、DFS_CLIENT=0 、DFS_SERVER=0、DFS_EPISODE=0、EPIINIT=0、DFSEXPORT=0、BOSSERVER=0、DFSBIND=0、FXD=0、 MEMCACHE=0、DFSGWD=0、DISKCACHEFORDFS=0

RARP逆地址解析服务

more /etc/rc.config.d/netconf
RARPD=0、RDPD=0

PTY(伪终端)请求守护进程

more /etc/rc.config.d/ptydaemon
PTYDAEMON_START=0

响应VT(通过LAN登录其他系统)请求守护进程

more /etc/rc.config.d/vt
VTDAEMON_START=0

域名守护进程服务

more /etc/rc.config.d/namesvrs
NAMED=0

SNMP代理进程服务

more /etc/rc.config.d/peer.snmpd
PEER_SNMPD_START=0

授权管理守护进程服务

more /etc/rc.config.d/i4lmd
START_I4LMD=0

SNAplus2服务

more /etc/rc.config.d/snaplus2

START_SNAPLUS=0、START_SNANODE=0、START_SNAINETD=0

X字体服务

more /etc/rc.config.d/xfs
RUN_X_FONT_SERVER=0

语音服务

more /etc/rc.config.d/audio
AUDIO_SERVER=0

SLSD(Single-Logical-Screen-Daemon)服务

more /etc/rc.config.d/slsd
SLSD_DAEMON=0

SAMBA服务

more /etc/rc.config.d/samba
RUN_SAMBA=0

CIFS客户端服务

more /etc/rc.config.d/cifsclient
RUN_CIFSCLIENT=0

NFS启动服务

more /etc/rc.config.d/nfsconf

NFS_SERVER=0、NFS_CLIENT=0

Netscape FastTrack Server服务

more /etc/rc.config.d/ns-ftrack

NS_FTRACK=0

基于RPC的服务

ls /sbin/rc2.d/.NOS400nfs.core

4.5 禁用不必要的inetd服务

/etc/inetd.conf


在非必要服务前面加#注释

5. 网络安全

5.1 关闭IP转发

echo 1>/proc/sys/net/ipv4/ip_forward 0

5.2 关闭ping数据包的响应

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

5.3 非日志服务器禁止接收syslog

ch_rc -a -p SYSLOGD_OPTS="-N" /etc/rc.config.d/syslogd

/etc/sysconfig/syslog   SYSLOGD_OPTIONS="-N"

6. 日志记录

6.1 检查SYSLOG

#检查rsyslogd日志管理系统进程,确保rsyslog的运行
ps -ef | grep rsyslog

#检查配置文件的内容
cat /etc/rsyslog.conf

#配置文件的内容应包括以下信息:
mail.debug           /usr/spool/mqueue/syslog
*.info,mail.none       /var/adm/syslog/syslog
*.alert               /dev/console
*.alert               root
*.emerg              *
authpriv.*            /var/log/secure

6.2 日志记录类型设置

rsyslog记录哪些日志,到底记录了什么样的日志,是通过这个/etc/rsyslog.conf配置文件来决定的。

authpriv.* /var/log/secure

认证相关服务.日志等级(服务名称[连接符号]日志等级 ) 日志记录的位置

服务名称

auth用户认证时产生的日志
authprivssh、ftp等登录信息的验证信息
daemon一些守护进程产生的日志
ftpFTP产生的日志
lpr打印相关活动
mark服务内部的信息,时间标识
news网络新闻传输协议(nntp)产生的消息。
syslog系统日志
security
uucpUnix-to-Unix Copy 两个unix之间的相关通信
console针对系统控制台的消息。
cron系统执行定时任务产生的日志。
kern系统内核日志
local0~local7自定义程序使用
mail邮件日志
user用户进程

连接符号

符号说明
*代表所有日志等级,比如:“authpriv.*"代表authpriv认证信息服务产生的日志,所有的日志等级都记录。
.代表只要比后面的等级高的(包含该等级)日志都记录下来。比如:"cron.info"代表cron服务产生的日志,只要日志等级大于等于info级别,就记录。
.=代表只记录所需等级的日志,其他等级的都不记录。比如:"*.=emerg"代表任何日志服务产生的日志,只要等级是emerg等级就记录。
.!代表不等于,也就是除了该等级的日志外,其他等级的日志都记录。

日志等级

日志等级日志类型说明
7emerg紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
6alert需要立即修复的告警。
5crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
4error/err一般错误消息。
3warning/warn警告。
2notice不是错误,但是可能需要处理。
1info通用性消息,一般用来提供有用信息。
0debug调试程序产生的信息。
none没有优先级,不记录任何日志消息。

例:

# 记录mail日志等级为error及以上日志
mail.err                            /var/log/mail_err.log

# 记录kern所有日志
kern.*                                /var/log/kern.log

# 将mail的所有信息,除了info以外,其他的都写入/var/adm/mail
mail.*;mail.!=info   /var/adm/mail

# 记录所有类型的warning等级及以上日志
*.warning                            /var/log/syslog_warn.log

# 将mail和news的info级别日志写入/var/adminfo
mail,news.=info    /var/adm/info

6.2 记录FTP会话与命令

/etc/inetd.conf | grep ftp
#查看该文件的ftp行是否添加了ftpd –lL

6.3 检查系统日志文件权限

ls -l /var/log/

ls -l /var/log/syslog

chmod 640 <filename>

7. 交互安全

7.1 禁用图形界面登录

systemctl get-default  multi-user.target 命令行/ graphical.target图形化

systemctl set-default multi-user.target

7.2 交互界面帐户超时自动退出

cat /etc/profile   
TMOUT=600

7.3 自动锁屏功能

8. 防火墙

8.1 防火墙信息

查看是否开机自启动

systemctl is-enable firewalld

#开机自启服务 

systemctl enable firewalld

#开机禁用服务

systemctl disable firewalld

查看规则

firewall-cmd --list-all

查看防火墙开启端口

firewall-cmd --list-ports

查看防火墙开启服务

firewall-cmd --list-services

8.2 区域管理

查看区域信息

firewall-cmd --get-active-zones

查看默认区域

 firewall-cmd --get-default-zone

列出所有可用的区域

firewall-cmd --get-zones

查看指定接口所属区域

firewall-cmd --get-zone-of-interface=eth0

查看指定区域的接口

firewall-cmd --zone=public --list-interfaces

查看接口是否在该区域

firewall-cmd --zone=public --query-interface=eth0

设置默认区域

firewall-cmd --set-default-zone=block

向指定区域添加接口

firewall-cmd --zone=public --add-interface=eth0

修改接口所在区域

firewall-cmd --zone=public --change-interface=eth0

从区域移除接口

firewall-cmd --zone=public --remove-interface=eth0

8.3 服务管理

查看预定义服务

firewall-cmd --get-services

添加http服务到public区域

firewall-cmd --add-service=http --zone=public --permanent

查看public区域已配置的规则

firewall-cmd --list-all --zone=public

移除public区域的http服务,不使用–zone指定区域时使用默认区域

firewall-cmd --remove-service=http --permanent --zone=public

将多个服务添加到某一个区域,不添加–permanent选项表示是即时生效的临时设置

 firewall-cmd --add-service=http --add-service=https

8.4 端口管理

开放80端口

firewall-cmd --permanent --add-port=80/tcp

移除端口

firewall-cmd --permanent --remove-port=8080/tcp

允许TCP的3306端口到public区域

firewall-cmd --add-port=3306/tcp

从public区域将TCP的3306端口移除

 firewall-cmd --remove-port=3306/tcp

允许某一范围的端口,如允许UDP的1-65535端口到public区域

firewall-cmd --add-port=1-65535/udp --zone=public

使用–list-ports查看加入的端口操作是否成功

firewall-cmd --list-ports

8.5 伪装ip

什么是地址伪装?

  • 通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包
  • 源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改
  • 为原始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网。类似于NAT技术中的端口多路复用(PAT)。IP地址伪装仅支持ipv4,不支持ipv6。

相关命令

firewall-cmd --query-masquerade # 检查是否允许伪装IP

firewall-cmd --permanent --add-masquerade # 允许防火墙伪装IP

firewall-cmd --permanent --remove-masquerade# 禁止防火墙伪装IP

8.6 端口转发

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。

查看当前生效的端口转发规则

firewall-cmd --list-forward-ports

添加转发规则

# 将888端口的tcp流量转发至22端口,永久生效模式
firewall-cmd --permanent --add-forward-port=port=888:proto=tcp:toport=80
 
# 将888端口的tcp流量转发至192.168.10.10的80端口,永久生效模式
firewall-cmd --permanent --add-forward-port=port=888:proto=tcp:toport=80:toaddr=192.168.10.10

删除转发规则

firewall-cmd --permanent --remove-forward-port=port=888:proto=tcp:toport=22

端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

基线加固Linux
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

学习使用

本文链接:

https://159357654.xyz/index.php/archives/296/(转载时请注明本文出处及文章链接)

评论 (0)
本篇文章评论功能已关闭