PCI-DSS标准服务器初始化

2020-08-19 by 没有评论

挂载数据盘

fdiks -l   #查看硬盘
fstab -u /dev/vdb  #执行分区,输入命令n后面都采用默认值,然后输入w完成写入
mkfs.ext4 /dev/vdb1  #格式化文件系统
mount /dev/vdb1 /xxx #完成挂载
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /xxx ext4 defaults 0 0 >> /etc/fstab 
##自动挂载

ssh加固

创建独立用户

useradd xxx
su xxx
cd
mkdir .ssh
vi .ssh/authorized_keys #添加SSH公钥
chmod 600 .ssh/authorized_keys
chmod 700 .ssh

添加sudoer权限

visudo

添加一行:
xxx ALL=(ALL) NOPASSWD: ALL

加固openssh

ssh -Q cipher  
#查看ssh支持的算法,复制并剔除弱算法
#去除所有包含cbc或arcfour的,将剩下的用逗号连接
vi /etc/ssh/sshd_config

修改配置:

Port ???  #修改ssh端口,注意安全组需要同步切换
PermitRootLogin no  #禁用root远程登陆(建议先确认新建用户可以登陆以后)
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
# 刚刚筛选后的算法

安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
service docker start
chkconfig docker on
usermod -aG docker xxx

安装jenkins

#/bin/bash
docker run -d -e JENKINS_USER=$(id -u) -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker --restart unless-stopped --env JENKINS_OPTS="--prefix=/jenkins" jenkins/jenkins:lts

安装ovpn

yum -y install https://as-repository.openvpn.net/as-repo-centos7.rpm
yum -y install openvpn-as
chkconfig openvpnas on

配置ovpn

cd /usr/local/openvpn_as/bin
./ovpn-init
#初始化ssl证书
openssl req -out server.csr -new -newkey rsa:4096 -sha256 -nodes -keyout server.key
# 自签名
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# 备份现有证书
cp -r /usr/local/openvpn_as/etc/web-ssl ./ssl-bak
# 覆盖
cp server.crt /usr/local/openvpn_as/etc/web-ssl/
cp server.key /usr/local/openvpn_as/etc/web-ssl/

然后访问https://ip:943/admin 进入管理后台
如果chrome报ssl错误,可以在错误页面输入thisisunsafe强制忽略https错误

进入管理后台后
– Authentication/General

  • 选择Local
  • 启用google authenticator
  • Configuration/Network Settings
  • ip或地址配置为公网ip或域名;
  • 关闭Admin Web Server Forwarding(成功从内网访问admin页面后操作)
  • Configuration/VPN Settings
  • Dynamic IP Address配置到主机网段
  • Group Default IP Network 配置到主机网段
  • Routing 配置可访问网段
  • Routing 关闭internet traffic be routed
  • Do not alter client DNS
  • Configuration/CWS Settings
    关闭API访问

User Management 配置用户,修改密码,修改可访问ip段

开放安全组 TCP:443,UDP:1194; TCP:943内网

配置系统日志采集

前期准备

  • 开启阿里云日志采集服务
  • 创建log project
  • 创建syslog类型logstore
  • 创建access key并授权

配置rsyslog

yum install -y rsyslog-gnutls
rsyslogd -v  #确认版本,通常是8.x
vi /etc/rsyslog.conf

在文件末尾配置,注意$WorkDirectory在文件中已经配置,大部分配置已经存在只是被注释掉,注意检查文件中现有配置;
其中$DefaultNetstreamDriverCAFile配置为系统根证书所在路径。
注意替换授权信息

# Setup disk assisted queues 
$WorkDirectory /var/spool/rsyslog # where to place spool files 
$ActionQueueFileName fwdRule1     # unique name prefix for spool files 
$ActionQueueMaxDiskSpace 1g       # 1gb space limit (use as much as possible) 
$ActionQueueSaveOnShutdown on     # save messages to disk on shutdown 
$ActionQueueType LinkedList       # run asynchronously 
$ActionResumeRetryCount -1        # infinite retries if host is down 
$ActionSendTCPRebindInterval 100  # close and re-open the connection to the remote host every 100 of messages sent. 
#RsyslogGnuTLS set to default ca path 
$DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-bundle.crt 
template(name="LogServiceFormat" type="string" 
string="<%pri%>1 %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"<yourAccessKeyId>\" access-key-secret=\"<yourAccessKeySecret>\"] %msg%\n" 
) 
# Send messages to Loggly over TCP using the template. 
action(type="omfwd" protocol="tcp" target="cn-hangzhou.log.aliyuncs.com" port="10009" template="LogServiceFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.log.aliyuncs.com")
service rsyslog restart
logger hello world! #测试日志,然后观察日志服务是否成功采集

安装ossec服务

相关资源

  • https://github.com/ossec/ossec-hids/releases
  • https://github.com/ossec/ossec-wui

准备服务


# Add Yum repo configuration wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash # 如果不存在命令,执行yum -y install yum-utils sudo yum-config-manager --enable atomic # Server(仅需要在server节点安装) sudo yum install ossec-hids-server ossec-hids-mysql # Agent(仅需要在agent节点安装) sudo yum install ossec-hids-agent # 停用atomic repo,否则后续yum update更新系统包的时候会出错 sudo yum-config-manager --disable atomic

server端配置

前往ossec-hids下载最新release包(主要获取数据库脚本),创建数据库并配置好用户权限,导入./src/os_dbd/mysql.schema
编辑/var/ossec/etc/ossec.conf,添加数据库配置

<ossec_config>
    <database_output>
        <hostname>192.168.2.30</hostname>
        <username>ossecuser</username>
        <password>ossecpass</password>
        <database>ossec</database>
        <type>mysql</type>
        <port>3306</port>
    </database_output>
</ossec_config>

配置完毕后执行service ossec-hids start或/var/ossec/bin/ossec-control start

chkconfig ossec-hids on
开启自动启动

配置安全组:
允许局域网访问 TCP/514, TCP/1515, UDP/514, UDP/1514

agent端配置

  • 配置ossec conf

    编辑/var/ossec/etc/ossec.conf
    修改ossec_config/client/server-ip

  • 服务端注册agent

    在server端执行/var/ossec/bin/manage_agents
    输入指令A配置对应agent name, ip信息,记录id
    完成后输入指令E导出key

  • 配置agent

    回到agent端,执行:
    touch /var/ossec/queue/rids/sender #直接执行manage_agent会报错
    /var/ossec/bin/manage_agent
    输入指令I,输入刚刚导出的key,确认添加

  • 启动agent服务

    执行
    /var/ossec/bin/ossec-control start
    chkconfig ossec-hids on
    开启自动启动

  • 验证

    服务端执行/var/ossec/bin/agent_control -l
    确认注册的agents状态为active

安装web服务

yum install -y httpd-tools
git clone https://github.com/ossec/ossec-wui.git

## 进入到项目目录执行
sudo ./setup.sh

## 这里使用nginx & php-fpm搭建,所以用户名密码随便写,关联系统用户选择apache
# 生成用户名密码文件,一会配置nginx需要
htpasswd -c /path/to/passwdfile username

新增nginx配置

server {
    listen 9001; #使用新端口号避免上下文冲突,然后添加反向代理
    server_name _;

    auth_basic "OSSEC Admin Login";
    auth_basic_user_file /path/to/passwdfile;

    root /path/to/ossec-wui/;
    index index.php;

    location ~* \.(ico|css|js|htm|html|js|gif|jpg|jpeg|svg)(\?.*)?$ {
        access_log off;
    }

     location .git {
        return 404;
     }

    location ~* \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     }
}

基本完工,再整理一遍安全组,定期执行yum update就没什么问题了