全面inux主机安全配置详解--系统OS安全(第二部分)

系统安全

最小服务法

文件安全(suid/sgid/stick/chattr)

升级系统和软件

最小权限法(su/sudo)

SSH安全建议

最小服务法(system v/xinetd)

关闭不需要的服务:

# vim /root/service.sh

#!/bin/bash

service xinetd stop

chkconfig xinetd off

services="network sshd syslog lvm2-monitor messagebus sendmail crond gpm anacron auditd haldaemon irqbalance avahi-daemon"

offservices=`chkconfig --list |grep 0: | awk ‘{print $1}‘`

for i in $offservices

do

chkconfig $i off

done

for i in $services

do

chkconfig $i on

done

reboot

禁止普通用户执行init.d目录中的脚本

# chmod -R o=- /etc/rc.d/init.d

文件安全(suid/sgid/stick/chattr) 分区安全

需要独立划分分区的目录(分区的原则:所有用户都能写的,建议分区;读或写频繁地,建议分区):

/

/boot

swap

/usr或/opt

/home

/var and /var/tmp

/tmp

/data

/bak

挂载选项:

1. noexec   --所有的二进制命令在此分区都无法运行,脚本也无法运行,可以考虑用来存放数据。

2. nodev    --所有的字符文件和设备文件都无法在此分区中使用(如: zero, sda etc).

3. nosuid   --不允许在此分区使用拥有冒险位和强制位的文件

4. noatime --不允许更新文件的访问时间,减少额外的IO开销

5. nodiratime --不允许更新目录访问时间

Create separate partitions for Apache and FTP server roots. Edit /etc/fstab file and make sure you add the following configuration options:

Sample /etc/fstab entry to to limit user access on /dev/sda5 (ftp server root directory):

# vim /etc/fstab

/dev/sda5  /ftpdata          ext3    defaults,nodev,noexec 1 2

使用磁盘配额(所有用户用写目录都需要做配额限制):

1.Enable quotas per file system by modifying the /etc/fstab(usrquota) file.

2.Remount the file system(s). mount -o remount /xx

3.Create the quota database files and generate the disk usage table.

quotacheck -cmu /xx ; quotaon -vu /xx

4.Assign quota policies.

edquota -u user01

edquota -p user01 user02

setquota -u user01 1000 2000  10 20

查询:

quota -u user01

repquota -vu /xx

锁定重要文件的i(inode)节点

chattr命令、lsattr命令

# chattr +i /etc/passwd--完全锁定inode

# useradd newuser

useradd:无法打开密码文件

# lsattr /etc/passwd

----i-------- /etc/passwd

# chattr +-a /file--只锁定旧inode与block的对应关系,允许追加新的block

需要加锁的文件:

/boot/grub/grub.conf

/etc/passwd

/etc/shadow

/etc/sudoers

suid/sgid(分区挂选项:nosuid)

1.手工找出系统中拥有suid/sgid的文件(快照)

# find / -type f -perm +6000 -exec ls -lh {} \;

# find / -type f -perm +6000 -ls

2.使用脚本的方法查找对比:

# find / -type f -perm +6000 > /etc/sfilelist

# vim check_perm.sh

#!/bin/bash

OLD_LIST=/etc/sfilelist

for i in `find / -type f -a -perm +6000`

do

grep -F "$i" $OLD_LIST &> /dev/null

[ $? -ne 0 ] && ls -lh $i

done

升级系统和软件

# yum list installed

# yum list packageName

# yum remove packageName

Update softwares:

# yum update --升级整个系统

# yum update packageName--升级单独的一个软件包或多个

最小权限法(su/sudo)

su--完全提权,需要知道提权目标用户密码

su--不指定用户时,切换成为超级用户,但环境变量沿用的是上一个用户的变量

su ---不指定用户时,切换成为超级用户,环境变量沿用的是当前用户的变量

su username--切换成为指定的用户

su - username

su -l username

只限定某个用户或者某组拥有切换成root的权限,剩下的用户都无su提权的权限:

# vim /etc/pam.d/su

……

auth            required        pam_wheel.so use_uid--只有wheel组的成员才能使用su

……

# gpasswd -a zhangsan wheel

# usermod -G wheel zhangsan

使用ssh远程管理linux时,避免直接使用管理员登录,而是先使用普通用户普通至系统,然后再通过su/sudo方式来提权。

好处:避免root被暴力破解

sudo--权限最小化,只分配指定权限而且不需要知道目标用户(root)的密码,最有效的权限分割

以下2种方法都可以编辑/etc/sudoers文件

# visudo--使用专业工具修改配置文件,可以检查语法错误,不需要强制就能保存

# vim  /etc/sudoers--直接编辑配置文件,这种不能检查配置文件的语法问题,而且需要强制保存

配置文件的格式:

root    ALL=(ALL)       ALL

授予用户登录linux客户的源地址用户身份命令

组:%

常用命令选项:

sudo -l查看允许执行的命令列表

sudo -k清除用户密码验证的时间戳

sudo -v重新校验密码

sudo ls通过sudo执行命令(sudo 命令行)

sudo通配符:

*       Matches any set of zero or more characters.

?       Matches any single character.

[...]   Matches any character in the specified range.

[0-9]

[abc]

[a-Z]

[0-9]

[1-2][0-9]10-29

[!...]  Matches any character not in the specified range.

vsftpd实例授权:

1、能够使用管理员安装和卸载vsftpd

2、能够重启vsftpd服务

3、能够修改vsftpd的配置文件

4、能够修改vsftpd匿名用户的文件权限

# visudo

u01 ALL=/usr/bin/yum * vsftpd, /sbin/service vsftpd *, /usr/bin/vim /etc/vsftpd/* ,/bin/ch[mo]* * /var/ftp/*

用户管理的权限:

1、能新建和删除用户,但不能新建管理员

2、能够设置密码,过期时间,但不能设置管理员密码

3、能将用户加入某个组,或者从组里边清出去

# visudo

u01 ALL=/usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/chage, /usr/bin/passwd, !/usr/sbin/useradd *-o*, !/usr/sbin/userdel *root*, !/usr/sbin/usermod *-o*, !/usr/bin/chage *root*, !/usr/bin/passwd *root*

httpd的授权:

# visudo

u01     ALL=(root) /usr/bin/vim /etc/httpd/conf*/*.conf, /bin/chown * /var/www/html/*, /bin/chmod * /var/www/html/*, /sbin/service httpd *, /usr/bin/yum -y install httpd*

结合wheel组来授权(以组为单位):

%wheel      ALL=(ALL)       ALL

%wheel        ALL=(ALL)       NOPASSWD: ALL

结合别名来授权:

实例1:

# visudo

User_Alias  OPERATORS=jerry,tom,tsengyia

Host_Alias  MAILSERVERS=mail,smtp,pop--保证这三个主机名能够被解析

Cmnd_Alias  SOFTWARE=/bin/rpm,/usr/bin/yum

OPERATORS   MAILSERVERS=SOFTWARE--引用变量来配置sudo权限

实例2:

设立组帐号“managers”,授权组内的各成员用户可以添加、删除、更改用户帐号

# groupadd managers

# gpasswd -M zhangsan,lisi managers

# visudo

Cmnd_Alias USERADM = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod,!/usr/sbin/useradd *-o*, !/usr/sbin/userdel *root*, !/usr/sbin/usermod *-o*

%managers ALL=USERADM

允许用户管理apache

user01ALL=/usr/bin/vim /etc/httpd/*, /sbin/service httpd *

使用别名的方式给u01,u02用户授予httpd管理权限:

User_Alias HTTP_ADMIN = u01,u02

Cmnd_Alias HTTP_COMM = /usr/bin/vim /etc/httpd/conf*/*.conf, /bin/chown * /var/www/html/*, /bin/chmod * /var/www/html/*, /sbin/service httpd *, /usr/bin/yum -y install httpd*

HTTP_ADMIN      ALL= NOPASSWD: HTTP_COMM

SSH安全建议:

1、只使用ssh v2

Protocol 2

ListenAddress x.x.x.x--如果你的环境中有VPN通道,建议sshd监听在内网的地址

2、限制用户访问(用户与用户之间使用空格隔开,可以使用? *通配符)

AllowUsersuser01 root--只允许哪些用户使用ssh登录

DenyUsersuser02 user03--只拒绝哪些用户访问,两种方法选其一

DenyGroups

AllowGroups

3、配置空闲超时自动断开

使用shell变量来完成直接且简单:TMOUT

4、禁止管理员直接使用ssh登录:

PermitRootLogin no--使用普通用户登录用,调用su/sudo来提权

5、更改默认的监听端口和监听IP

Port 5589

ListenAddress 0.0.0.0--按照需求可设置监听在服务器私有地址上,如果监听在公网的上地址上则需要更改端口,不能直接使用22端口

6、给账号设置强壮的密码

# rpm -ivh expect-5.43.0-5.1.i386.rpm

# mkpasswd -l 128 -d 8 -C 15 -s 10

omlrjcU3fxivSqtotyu‘nk6tR(zhp1Jcel_gxjnqedErpx_1g4U]amtqst3igWXb-f2eqqqJohfjuzccdC.coMok7Abvtjfzej&vfvfTblgBmWmijqh.w&acegjrqwqq

-l密码长度

-d多少个数字

-C 大写字母个数

-s特殊符号的个数

f

7、使用密钥对验证:

# ssh-keygen -t rsa

# ssh-copy-id /$HOME/.ssh/id.rsa.pub [email protected]

8、使用iptables控制(防止ssh密码被暴力破解):

在每分钟内只允许有三个新的连接去连接ssh服务器,并发连接是3 个,如果超过此值 将被拒绝

# iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT

# iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT

# iptables -A INPUT -p tcp --dport 22 -j DROP

# iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

9、减少密码错误尝试次数:

MaxAuthTries 3--设置密码错误尝试次数

tcpwrappers+bash scrpts(错误尝试源地址重复次达到一定上限):

last--查询所有用户在线情况(/var/log/wtmp)

lastlog--查询最后一次登录时间

lastb--查询失败登录的记录

使用脚本实现对sshd暴力破解的IP进行拦截,把连续3次以上通过ssh登录系统失败的IP放到/etc/hosts.deny 。 文件中的IP不能重复。

脚本要求每10分钟执行一次。

lastb is the same as last, except that by default it shows a log of the file /var/log/btmp, which contains all  the  bad  login attempts

# lastb -i -a | grep ssh  | awk ‘{print $NF}‘ | uniq  -c | awk ‘$1>3{print $2}‘

全面inux主机安全配置详解--系统OS安全(第二部分),布布扣,bubuko.com

时间: 2024-10-26 09:07:11

全面inux主机安全配置详解--系统OS安全(第二部分)的相关文章

全面inux主机安全配置详解--系统OS安全(第一部分)

Linux主机安全配置详解 系统安全分为: 第一部分: BIOS密码,更改合适启动选项(禁止改bios/禁止更改第一启动选项,防止恶意的引导) GRUB密码 系统密码(密码策略) 分区加密 第二部分: 最小权限法(su/sudo) 最小服务法 文件安全(suid/sgid/stick/chattr) pam模块的使用 升级系统和软件 系统安全: BIOS密码(bios/cmos) 调整BIOS引导设置 修改启动顺序,正确做法:第一启选项为磁盘 设置管理密码 禁用Ctrl+Alt+Del重启热键

基于Nginx搭建Web服务器及虚拟主机相关配置详解

随着计算机与Internet技术的高速发展,各种各样的Web站点也就成为面向用户的中坚力量.在各种网站服务器软件中.除了Apache外,还有一款轻量级的HTTP服务器软件--Nginx. 基于Apache搭建Web服务器可以参考博文:基于Apache搭建Web服务器详解 一.Nginx服务简介 Nginx由俄罗斯的lgor Sysoev开发,专为性能优化而开发,其最知名的优点就是它的稳定性和低系统资源消耗.以及对HTTP并发连接的高处立能力(单台物理服务器可支持30000~50000个并发请求)

Nginx虚拟主机配置详解

Nginx虚拟主机配置详解 一.虚拟主机介绍 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.

Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

Apache httpd服务配置详解 查看版本:httpd -v Server version: Apache/2.4.33 (Unix) Server built:   Apr  3 2018 17:54:07 文件路径:/etc/apache2/httpd.conf # 服务目录(全局配置)用于指定Apache的安装路径,# 此选项参数值在安装Apache时系统会自动把Apache的路径写入ServerRoot "/usr" # 设置互斥对象的目录# Mutex default:/

FreeBSD系统SSH配置详解并能使用su

修改freebsd可以用sshd权限用户登录ssh 但不能用root用户登录的方法 在/etc/ssh/sshd_config最后中加入 PermitRootLogin yes #允许root登录 PermitEmptyPasswords no #不允许空密码登录 PasswordAuthentication yes # 设置是否使用口令验证. 就可以了 FreeBSD SSH配置详解 首先vi编辑/etc/inetd.conf,去掉ssh前的#,保存退出 (开启****ssh服务) 编辑/et

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

LVS配置详解

一.LVS系统组成 前端:负载均衡层 –      由一台或多台负载调度器构成 中间:服务器群组层 –      由一组实际运行应用服务的服务器组成 底端:数据共享存储层 –      提供共享存储空间的存储区域 二.LVS术语 Director Server:调度服务器,将负载分发到RealServer的服务器 Real Server:真实服务器,真正提供应用服务的服务器 VIP:虚拟IP地址,公布给用户访问的IP地址 RIP:真实IP地址,集群节点上使用的IP地址 DIP:Director连

php-fpm的配置详解

php5.3自带php-fpm /usr/local/php/etc/php-fpm.confpid = run/php-fpm.pidpid设置,默认在安装目录中的/var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log错误日志,默认在安装目录中的/var/log/php-fpm.log log_level = notice错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notic

linux FTP配置详解

一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:  (1)anonymous(匿名帐号) 使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己