Linux安全加固
Linux基础命令
su 切换用户,提权 默认账号为root,如果进行提权行为,则需要输入口令;如果从高权限用户切换至低权限用户则无需输入口令
su [用户名]
ls [option] 列出目录 常用 -rtl -ll
pwd 查看当前路径
lcd 查看本地路径(一般应用于远程连接状态中的命令)
创建文档:
touch 一般用法为创建文档 如: touch 1.txt
vi [文件名]
echo [string] > [files] echo [string] >> [file]
绝对路径:/var/log
相对路径:../../var/log
cp copy 复制 cp [file1] [file2]
mv move 移动 mv [file1] [file2]
rm remove -r 递归; -f 强制(静默)
chmod 权限
chown 属主、属组
Linux脆弱项
- 账户、口令
- 权限(敏感文件、路径)
- 服务
- 防火墙(策略)
- 端口
- 日志(重要日志文档,以及日志文档的配置文档)
1、账户 口令
/etc/passwd 用户信息
/etc/shadow 用户口令相关的信息
/etc/group 组别信息
可以通过passwd文件查看所有账号信息
如何对账号进行加固:
删除多余的无效账号以及暂时无需使用的伪账号
用户创建 useradd [用户名]
更新口令 passwd [用户名]
用户删除 userdel -r [用户名] -r 删除家目录
uid 用户ID
gid 组别ID
gid可以是重复的,每个组别可以有多个不同的账号
uid的唯一性?理论上是唯一的,但是可以通过-o参数来创建重复UID账号
主要目的修改原本的root账号信息,利用新的uid=0的账号来进行操作
2、权限
第一组 第二组 第三组
属主权限 属组权限 其他所有用户权限
rwx rwx rwx
chmod 修改文件权限 777 权限最小化:X00
chattr 修改文件属性 lsattr 查看文件属性
chown [用户名]:[组别名] [file]
-R 参数为递归
3、服务
systemctl 系统控制命令
systemctl start/stop/restart/enable/disable/status [服务名]
systemctl list-units 服务详细信息
systemctl list-unit-files 服务一般信息(enabled/disabled/static)
ctrl+c 中止某项运行
netstat -antp
ps aux | grep [PID]
通过以上两条命令可以找出已开启的服务项对应的应用程序
通过 > 将输出结果保存至文档,例如:
netstat -anpt > 1.txt
文件对比:
diff 1.txt 2.txt
< 1.txt有,2.txt没有
> 1.txt没有,2.txt有
在linux系统中,所有配置文档一旦被修改,则需要重启对应的服务项
4、防火墙
Linux系统中的两大默认防火墙iptables和firewalld
区别:iptables默认允许所有流量;firewalld默认拒绝所有流量
IPTABLES:
参数: -A 添加防火墙策略至最底层
-I 添加防火墙策略至最高层
firewalld安装
yum install firewalld
图形界面:
yum install firewalld-config
使用方法:
firewall-cmd
区域的类型及信任级别。zone提供了以下级别:
firewall-cmd --list-all-zones 列出所有区域信息
drop 丢弃所有的进入该网络的流量包,而别不会输出任何响应
block 拒绝所有外部发起的连接,允许内部项外部发起连接
public 允许指定的连接进入该网络
external 允许指定的连接进入该网络,对伪装的连接一般会应用路由进行转发
dmz 允许受限制的连接进入该网络
work 允许受信任的终端附带限制条件进行连接,类似于windows中的默认的workgroup
home 和上面类似的状态,类似于windows中的homegroup
internal 同上,范围使针对所有的互联网用户
trusted 允许所有连接
firewall-cmd --get-default-zone 获取当前的区域信息
firewall-cmd --set-default-zone=[区域名] 将默认区域设置为某一个区域
firewall-cmd --add-interfaces=[网卡名] --zone=[区域名]
将指定网卡配置于指定区域中
firewall-cmd --remove-interfaces=[网卡名] 删除指定网卡
firewall-cmd --change-interfaces=[网卡名] --zone=[区域名]
更换现有网卡去到指定的区域
永久生效: --permanent
firewalld逻辑规则:
- 传入包的源地址与区域的某个源规则匹配,则该包会通过该区域进行路由
- 包的传入接口与区域的过滤器匹配,则将使用该区域
- 如果没有对应的区域匹配,则使用默认区域
允许TCP的80端口通过
firewall-cmd --zone=public --add-port=80/tcp --permanent
删除TCP的80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
重新加载firewalld
firewall-cmd --reload
systemctl restart firewalld.service
紧急状态下使用的命令:
firewall-cmd --panic-on 中断网络
firewall-cmd --panic-off 恢复网络
添加富规则(例外)
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.1" reject"
5、端口
netstat -anpt 查看端口
如:主机开放了68、25、80、22、23、3306
对应的服务有哪些?
DHCP SERVER SMTP HTTP SSH TELNET MYSQL
这台服务器究竟是一台什么服务器?
DHCP+邮件+WEB+数据库 IP:192.168.10.11
主机开放了2222端口,SSH
ssh root@IP 无法登陆
ssh -p 2222 root@IP 正常登陆
更改默认端口,主要的目的,混淆攻击者
如何在linux中修改端口号:
以sshd为例进行加固:
1、修改默认配置文档
/etc/sshd/sshd_config 将#port 22修改为port 2222
修改之前,先备份,并且确认2222端口未被占用
重启该服务
systemctl restart sshd
setence 0 临时关闭SELINUX
修改Linux内核信息的工具
semanage
安装:yum install semanage
如果无法安装semanage,解决:
- yum provides semanage
- yum -y install policycoreutils-python.x86_64
用法,添加端口号
semanage port -a -t ssh_port_t -p tcp 2222
semanage port -l | grep ssh 筛选ssh相关的端口信息
3、修改防火墙策略
删除原有的ssh服务项,添加2222端口允许访问
再次重启ssh服务
4、修改配置文档:
#LogLevel INFO 》 LogLevel INFO SSH的日志文档
#PermitRootLogin yes > PermitRootLogin No 不允许root登陆
#PermitEmptyPasswords no > PermitEmptyPasswords no 不允许空密码登陆
#ClientAliveInterval 0 > ClientAliveInterval 300 空闲时间超过300秒锁定
#ClientAliveCountMax 3 > ClientAliveCountMax 1 超时次数
6、所有conf类的文档属于配置文档
/etc/rsyslog.conf 系统日志配置文档
日志级别
facility:
auth: 用户授权
authpriv: 授权和安全
cron: 计划任务
daemon: 系统守护进程
kern: 与内核有关的信息
lpr 与打印服务有关的信息
mail 与电子邮件有关的信息
news 来自新闻服务器的信息
syslog 由syslog生成的信息
user 用户的程序生成的信息,默认
uucp 由uucp生成的信息
local0~7 用来定义本地策略
level:
emerg 系统不可用
crit 临界状态
alert 需要立即采取动作
error 错误状态
warning 警告状态
notice 正常但是要注意
info 正常消息(一般信息)
debug 调试(研发人员使用)
日志配置文档中,日志记录信息:[类别].[级别]
/etc/login.defs 账号和口令相关的配置文档
pass_max
pass_min
uid
gid
二进制文档: wtmp登陆成功信息 last
btmp登陆失败信息 lastb
登陆日志 lastlog
/etc/profile 使用环境的配置文档
HISTSIZE=1000 》10 修改默认历史命令记录
TMOUT=600 添加该项使系统在闲置600S后自动锁定
/etc/host.conf 主机配置文档(主要针对网络流量)
nospoof on 可以有效防止IP地址欺骗
系统默认所有组件或软、硬件的配置文档均会被放置于/etc/内。
系统默认所有组件或软、硬件的日志文档均会被放置于/var/log/内