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. 账户、口令
  2. 权限(敏感文件、路径)
  3. 服务
  4. 防火墙(策略)
  5. 端口
  6. 日志(重要日志文档,以及日志文档的配置文档)

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逻辑规则:

  1. 传入包的源地址与区域的某个源规则匹配,则该包会通过该区域进行路由
  2. 包的传入接口与区域的过滤器匹配,则将使用该区域
  3. 如果没有对应的区域匹配,则使用默认区域

允许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,解决:

  1. yum provides semanage
  2. 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/内

 

阅读剩余
THE END