|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
在当今数字化时代,服务器安全已成为企业和个人用户不可忽视的重要议题。Slackware Linux作为最古老的Linux发行版之一,以其简洁、稳定和高度可定制的特性赢得了众多系统管理员的青睐。然而,正是由于其简洁性和最小化安装原则,Slackware Linux的安全配置需要管理员投入更多精力进行手动设置和优化。本文将全面解析Slackware Linux系统的安全性设置,从基础配置到高级防护策略,为读者提供一套提升服务器安全等级的实用指南。
Slackware Linux概述
Slackware Linux由Patrick Volkerding于1993年创建,是现存最古老的Linux发行版。它遵循KISS(Keep It Simple, Stupid)原则,提供了接近原始Linux系统的体验,不进行过多的自动化配置和修改,这使得系统管理员能够完全掌控系统的各个方面。
Slackware Linux的安全性理念基于以下几点:
1. 简洁性:系统只包含必要的软件包,减少了潜在的攻击面。
2. 稳定性:使用经过充分测试的稳定版本软件,避免频繁更新带来的不稳定因素。
3. 透明性:配置文件清晰明了,便于管理员理解和修改。
4. 可定制性:允许管理员根据具体需求构建高度定制化的安全环境。
尽管Slackware Linux提供了良好的基础,但要实现高等级的安全防护,仍需管理员进行一系列的安全配置和加固。接下来,我们将从基础配置开始,逐步深入到高级防护策略。
基础安全配置
系统安装与初始安全设置
Slackware Linux的安装过程相对简洁,但在安装阶段就应考虑安全性因素:
1. 分区安全:为不同系统目录创建独立的分区,如/boot、/home、/var和/tmp等。在挂载选项中使用nodev、nosuid和noexec等参数增强安全性。例如:/dev/sda5 /tmp ext4 defaults,nodev,nosuid,noexec 0 0
/dev/sda6 /var ext4 defaults,nodev,nosuid 0 0
2. 为不同系统目录创建独立的分区,如/boot、/home、/var和/tmp等。
3. 在挂载选项中使用nodev、nosuid和noexec等参数增强安全性。例如:/dev/sda5 /tmp ext4 defaults,nodev,nosuid,noexec 0 0
/dev/sda6 /var ext4 defaults,nodev,nosuid 0 0
4. 软件包选择:遵循最小化安装原则,只选择必要的软件包。避免安装不必要的网络服务,减少潜在的攻击点。
5. 遵循最小化安装原则,只选择必要的软件包。
6. 避免安装不必要的网络服务,减少潜在的攻击点。
7. 初始安全设置:安装完成后,立即更新系统:slackpkg update
slackpkg upgrade-all设置强密码策略,修改/etc/login.defs文件:PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7
PASS_MIN_LEN 12禁用root账户的SSH登录,修改/etc/ssh/sshd_config:PermitRootLogin no
8. 安装完成后,立即更新系统:slackpkg update
slackpkg upgrade-all
9. 设置强密码策略,修改/etc/login.defs文件:PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7
PASS_MIN_LEN 12
10. 禁用root账户的SSH登录,修改/etc/ssh/sshd_config:PermitRootLogin no
分区安全:
• 为不同系统目录创建独立的分区,如/boot、/home、/var和/tmp等。
• 在挂载选项中使用nodev、nosuid和noexec等参数增强安全性。例如:/dev/sda5 /tmp ext4 defaults,nodev,nosuid,noexec 0 0
/dev/sda6 /var ext4 defaults,nodev,nosuid 0 0
- /dev/sda5 /tmp ext4 defaults,nodev,nosuid,noexec 0 0
- /dev/sda6 /var ext4 defaults,nodev,nosuid 0 0
复制代码
软件包选择:
• 遵循最小化安装原则,只选择必要的软件包。
• 避免安装不必要的网络服务,减少潜在的攻击点。
初始安全设置:
• 安装完成后,立即更新系统:slackpkg update
slackpkg upgrade-all
• 设置强密码策略,修改/etc/login.defs文件:PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7
PASS_MIN_LEN 12
• 禁用root账户的SSH登录,修改/etc/ssh/sshd_config:PermitRootLogin no
- slackpkg update
- slackpkg upgrade-all
复制代码- PASS_MAX_DAYS 90
- PASS_MIN_DAYS 7
- PASS_WARN_AGE 7
- PASS_MIN_LEN 12
复制代码
用户和权限管理
良好的用户和权限管理是系统安全的基础:
1. - 用户账户管理:创建普通用户账户进行日常操作:useradd -m -s /bin/bash username
- passwd username使用sudo代替直接root登录,安装并配置sudo:slackpkg install sudo
- visudo添加以下内容允许wheel组成员使用sudo:%wheel ALL=(ALL) ALL将用户添加到wheel组:usermod -aG wheel username
复制代码 2. 创建普通用户账户进行日常操作:useradd -m -s /bin/bash username
passwd username
3. - 使用sudo代替直接root登录,安装并配置sudo:slackpkg install sudo
- visudo添加以下内容允许wheel组成员使用sudo:%wheel ALL=(ALL) ALL
复制代码 4. 将用户添加到wheel组:usermod -aG wheel username
5. 文件权限管理:定期检查关键文件和目录的权限:chmod 700 /root
chmod 600 /etc/passwd-
chmod 600 /etc/shadow-
chmod 600 /etc/group-
chmod 600 /etc/gshadow-使用find命令查找权限不当的文件:find / -type f -perm -4000 -ls # 查找SUID文件
find / -type f -perm -2000 -ls # 查找SGID文件
find / -type d -perm -0002 -ls # 查找全局可写目录
6. 定期检查关键文件和目录的权限:chmod 700 /root
chmod 600 /etc/passwd-
chmod 600 /etc/shadow-
chmod 600 /etc/group-
chmod 600 /etc/gshadow-
7. 使用find命令查找权限不当的文件:find / -type f -perm -4000 -ls # 查找SUID文件
find / -type f -perm -2000 -ls # 查找SGID文件
find / -type d -perm -0002 -ls # 查找全局可写目录
8. 密码安全:使用pwck和grpck命令检查密码和组文件的一致性:pwck
grpck考虑实施密码老化策略,强制用户定期更改密码:chage -M 90 -m 7 -W 7 username
9. 使用pwck和grpck命令检查密码和组文件的一致性:pwck
grpck
10. 考虑实施密码老化策略,强制用户定期更改密码:chage -M 90 -m 7 -W 7 username
用户账户管理:
• 创建普通用户账户进行日常操作:useradd -m -s /bin/bash username
passwd username
• - 使用sudo代替直接root登录,安装并配置sudo:slackpkg install sudo
- visudo添加以下内容允许wheel组成员使用sudo:%wheel ALL=(ALL) ALL
复制代码 • 将用户添加到wheel组:usermod -aG wheel username
- useradd -m -s /bin/bash username
- passwd username
复制代码- slackpkg install sudo
- visudo
复制代码- usermod -aG wheel username
复制代码
文件权限管理:
• 定期检查关键文件和目录的权限:chmod 700 /root
chmod 600 /etc/passwd-
chmod 600 /etc/shadow-
chmod 600 /etc/group-
chmod 600 /etc/gshadow-
• 使用find命令查找权限不当的文件:find / -type f -perm -4000 -ls # 查找SUID文件
find / -type f -perm -2000 -ls # 查找SGID文件
find / -type d -perm -0002 -ls # 查找全局可写目录
- chmod 700 /root
- chmod 600 /etc/passwd-
- chmod 600 /etc/shadow-
- chmod 600 /etc/group-
- chmod 600 /etc/gshadow-
复制代码- find / -type f -perm -4000 -ls # 查找SUID文件
- find / -type f -perm -2000 -ls # 查找SGID文件
- find / -type d -perm -0002 -ls # 查找全局可写目录
复制代码
密码安全:
• 使用pwck和grpck命令检查密码和组文件的一致性:pwck
grpck
• 考虑实施密码老化策略,强制用户定期更改密码:chage -M 90 -m 7 -W 7 username
- chage -M 90 -m 7 -W 7 username
复制代码
文件系统安全
文件系统安全是保护系统数据的关键:
1. 磁盘加密:在安装过程中使用LUKS(Linux Unified Key Setup)加密敏感分区。对于已安装的系统,可以使用cryptsetup工具设置加密:slackpkg install cryptsetup
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 encrypted_data
mkfs.ext4 /dev/mapper/encrypted_data
mount /dev/mapper/encrypted_data /mnt/encrypted
2. 在安装过程中使用LUKS(Linux Unified Key Setup)加密敏感分区。
3. 对于已安装的系统,可以使用cryptsetup工具设置加密:slackpkg install cryptsetup
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 encrypted_data
mkfs.ext4 /dev/mapper/encrypted_data
mount /dev/mapper/encrypted_data /mnt/encrypted
4. 文件系统检查:定期运行文件系统检查确保完整性:fsck /dev/sda1使用AIDE(Advanced Intrusion Detection Environment)监控文件系统变化:slackpkg install aide
aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check
5. 定期运行文件系统检查确保完整性:fsck /dev/sda1
6. 使用AIDE(Advanced Intrusion Detection Environment)监控文件系统变化:slackpkg install aide
aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check
7. 安全挂载选项:在/etc/fstab中使用安全挂载选项,如前面提到的nodev、nosuid和noexec。对于临时文件系统,可以使用tmpfs并设置适当的大小限制:tmpfs /tmp tmpfs defaults,nodev,nosuid,noexec,size=1G 0 0
8. 在/etc/fstab中使用安全挂载选项,如前面提到的nodev、nosuid和noexec。
9. 对于临时文件系统,可以使用tmpfs并设置适当的大小限制:tmpfs /tmp tmpfs defaults,nodev,nosuid,noexec,size=1G 0 0
磁盘加密:
• 在安装过程中使用LUKS(Linux Unified Key Setup)加密敏感分区。
• 对于已安装的系统,可以使用cryptsetup工具设置加密:slackpkg install cryptsetup
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 encrypted_data
mkfs.ext4 /dev/mapper/encrypted_data
mount /dev/mapper/encrypted_data /mnt/encrypted
- slackpkg install cryptsetup
- cryptsetup luksFormat /dev/sdb1
- cryptsetup open /dev/sdb1 encrypted_data
- mkfs.ext4 /dev/mapper/encrypted_data
- mount /dev/mapper/encrypted_data /mnt/encrypted
复制代码
文件系统检查:
• 定期运行文件系统检查确保完整性:fsck /dev/sda1
• 使用AIDE(Advanced Intrusion Detection Environment)监控文件系统变化:slackpkg install aide
aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check
- slackpkg install aide
- aide --init
- mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
- aide --check
复制代码
安全挂载选项:
• 在/etc/fstab中使用安全挂载选项,如前面提到的nodev、nosuid和noexec。
• 对于临时文件系统,可以使用tmpfs并设置适当的大小限制:tmpfs /tmp tmpfs defaults,nodev,nosuid,noexec,size=1G 0 0
- tmpfs /tmp tmpfs defaults,nodev,nosuid,noexec,size=1G 0 0
复制代码
网络基础安全
网络安全是保护系统免受外部威胁的第一道防线:
1. 网络服务管理:检查并关闭不必要的服务:chmod -x /etc/rc.d/rc.httpd # 禁用Apache服务
chmod -x /etc/rc.d/rc.sshd # 禁用SSH服务(如果不需要)使用netstat或ss命令检查开放端口:netstat -tulnp
ss -tulnp
2. 检查并关闭不必要的服务:chmod -x /etc/rc.d/rc.httpd # 禁用Apache服务
chmod -x /etc/rc.d/rc.sshd # 禁用SSH服务(如果不需要)
3. 使用netstat或ss命令检查开放端口:netstat -tulnp
ss -tulnp
4. TCP/IP堆栈加固:编辑/etc/sysctl.conf文件,添加以下内容增强TCP/IP安全性:
“`启用IP欺骗保护net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1# 忽略ICMP重定向请求
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0# 忽略发送ICMP重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0# 不接受源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0# 记录欺骗包、源路由包和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1# 防止SYN洪水攻击
net.ipv4.tcp_syncookies = 1# 禁用IP转发
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0# 禁用IPv6(如果不需要)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1- 应用设置:
```bash
sysctl -p
5. 编辑/etc/sysctl.conf文件,添加以下内容增强TCP/IP安全性:
“`启用IP欺骗保护net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
6. SSH安全配置:编辑/etc/ssh/sshd_config文件,加强SSH安全性:
“`禁用root登录PermitRootLogin no# 只允许特定用户登录
AllowUsers user1 user2# 禁用密码认证,使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes# 更改默认端口
Port 2222# 禁用空密码
PermitEmptyPasswords no# 设置最大登录尝试次数
MaxAuthTries 3# 禁用X11转发
X11Forwarding no# 设置空闲超时时间
ClientAliveInterval 300
ClientAliveCountMax 0- 重启SSH服务:
```bash
/etc/rc.d/rc.sshd restart
7. 编辑/etc/ssh/sshd_config文件,加强SSH安全性:
“`禁用root登录PermitRootLogin no
网络服务管理:
• 检查并关闭不必要的服务:chmod -x /etc/rc.d/rc.httpd # 禁用Apache服务
chmod -x /etc/rc.d/rc.sshd # 禁用SSH服务(如果不需要)
• 使用netstat或ss命令检查开放端口:netstat -tulnp
ss -tulnp
- chmod -x /etc/rc.d/rc.httpd # 禁用Apache服务
- chmod -x /etc/rc.d/rc.sshd # 禁用SSH服务(如果不需要)
复制代码
TCP/IP堆栈加固:
• 编辑/etc/sysctl.conf文件,添加以下内容增强TCP/IP安全性:
“`启用IP欺骗保护net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
编辑/etc/sysctl.conf文件,添加以下内容增强TCP/IP安全性:
“`
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 忽略ICMP重定向请求
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# 忽略发送ICMP重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 不接受源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 记录欺骗包、源路由包和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# 防止SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 禁用IP转发
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0
# 禁用IPv6(如果不需要)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
- - 应用设置:
- ```bash
- sysctl -p
复制代码
SSH安全配置:
• 编辑/etc/ssh/sshd_config文件,加强SSH安全性:
“`禁用root登录PermitRootLogin no
编辑/etc/ssh/sshd_config文件,加强SSH安全性:
“`
PermitRootLogin no
# 只允许特定用户登录
AllowUsers user1 user2
# 禁用密码认证,使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes
# 更改默认端口
Port 2222
# 禁用空密码
PermitEmptyPasswords no
# 设置最大登录尝试次数
MaxAuthTries 3
# 禁用X11转发
X11Forwarding no
# 设置空闲超时时间
ClientAliveInterval 300
ClientAliveCountMax 0
- - 重启SSH服务:
- ```bash
- /etc/rc.d/rc.sshd restart
复制代码
中级安全加固
服务安全配置
对于必须运行的网络服务,需要进行适当的安全配置:
1. Web服务器安全(以Apache为例):安装Apache:slackpkg install httpd编辑/etc/httpd/httpd.conf进行安全配置:
“`隐藏服务器信息ServerTokens Prod
ServerSignature Off# 禁用目录列表
Options -Indexes# 限制HTTP方法Require all denied# 设置适当的超时时间
Timeout 30# 限制最大请求数
MaxRequestsPerChild 1000- 创建专用用户和组运行Apache:
```bash
groupadd www-data
useradd -g www-data -d /var/www -s /bin/false www-data在httpd.conf中设置用户和组:User www-data
Group www-data启动Apache服务:chmod +x /etc/rc.d/rc.httpd
/etc/rc.d/rc.httpd start
2. 安装Apache:slackpkg install httpd
3. 编辑/etc/httpd/httpd.conf进行安全配置:
“`隐藏服务器信息ServerTokens Prod
ServerSignature Off
4. 在httpd.conf中设置用户和组:User www-data
Group www-data
5. 启动Apache服务:chmod +x /etc/rc.d/rc.httpd
/etc/rc.d/rc.httpd start
6. - 数据库安全(以MariaDB/MySQL为例):安装MariaDB:slackpkg install mariadb初始化数据库并设置root密码:mysql_install_db --user=mysql
- /etc/rc.d/rc.mysqld start
- mysql_secure_installation编辑/etc/my.cnf进行安全配置:
- “`
- [mysqld]禁用远程root登录skip-networking或者绑定到本地地址bind-address = 127.0.0.1# 禁用LOCAL INFILE
- local-infile=0# 设置适当的错误日志级别
- log-error=/var/log/mysql/error.log# 启用查询日志(仅在需要时)
- # general_log = 1
- # general_log_file = /var/log/mysql/query.log# 禁用符号链接支持
- symbolic-links=0- 重启MariaDB服务:
- ```bash
- /etc/rc.d/rc.mysqld restart
复制代码 7. 安装MariaDB:slackpkg install mariadb
8. 初始化数据库并设置root密码:mysql_install_db --user=mysql
/etc/rc.d/rc.mysqld start
mysql_secure_installation
9. - 编辑/etc/my.cnf进行安全配置:
- “`
- [mysqld]禁用远程root登录skip-networking或者绑定到本地地址bind-address = 127.0.0.1
复制代码 10. 邮件服务器安全(以Postfix为例):安装Postfix:slackpkg install postfix编辑/etc/postfix/main.cf进行安全配置:
“`设置主机名和域名myhostname = mail.example.com
mydomain = example.com# 限制网络访问
inet_interfaces = loopback-only
# 或者只监听特定IP
# inet_interfaces = 192.168.1.1# 禁用VRFY命令
disable_vrfy_command = yes# 限制邮件大小
message_size_limit = 10485760# 限制收件人数量
smtpd_recipient_limit = 100# 启用SMTP认证
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous# 启用TLS
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key# 限制中继
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination- 启动Postfix服务:
```bash
chmod +x /etc/rc.d/rc.postfix
/etc/rc.d/rc.postfix start
11. 安装Postfix:slackpkg install postfix
12. 编辑/etc/postfix/main.cf进行安全配置:
“`设置主机名和域名myhostname = mail.example.com
mydomain = example.com
Web服务器安全(以Apache为例):
• 安装Apache:slackpkg install httpd
• 编辑/etc/httpd/httpd.conf进行安全配置:
“`隐藏服务器信息ServerTokens Prod
ServerSignature Off
安装Apache:slackpkg install httpd
编辑/etc/httpd/httpd.conf进行安全配置:
“`
ServerTokens Prod
ServerSignature Off
# 禁用目录列表
Options -Indexes
# 限制HTTP方法
# 设置适当的超时时间
Timeout 30
# 限制最大请求数
MaxRequestsPerChild 1000
- - 创建专用用户和组运行Apache:
- ```bash
- groupadd www-data
- useradd -g www-data -d /var/www -s /bin/false www-data
复制代码
• 在httpd.conf中设置用户和组:User www-data
Group www-data
• 启动Apache服务:chmod +x /etc/rc.d/rc.httpd
/etc/rc.d/rc.httpd start
- User www-data
- Group www-data
复制代码- chmod +x /etc/rc.d/rc.httpd
- /etc/rc.d/rc.httpd start
复制代码
数据库安全(以MariaDB/MySQL为例):
• 安装MariaDB:slackpkg install mariadb
• 初始化数据库并设置root密码:mysql_install_db --user=mysql
/etc/rc.d/rc.mysqld start
mysql_secure_installation
• - 编辑/etc/my.cnf进行安全配置:
- “`
- [mysqld]禁用远程root登录skip-networking或者绑定到本地地址bind-address = 127.0.0.1
复制代码
安装MariaDB:slackpkg install mariadb
初始化数据库并设置root密码:mysql_install_db --user=mysql
/etc/rc.d/rc.mysqld start
mysql_secure_installation
- mysql_install_db --user=mysql
- /etc/rc.d/rc.mysqld start
- mysql_secure_installation
复制代码
编辑/etc/my.cnf进行安全配置:
“`
[mysqld]
skip-networking
# 禁用LOCAL INFILE
local-infile=0
# 设置适当的错误日志级别
log-error=/var/log/mysql/error.log
# 启用查询日志(仅在需要时)
# general_log = 1
# general_log_file = /var/log/mysql/query.log
# 禁用符号链接支持
symbolic-links=0
- - 重启MariaDB服务:
- ```bash
- /etc/rc.d/rc.mysqld restart
复制代码
邮件服务器安全(以Postfix为例):
• 安装Postfix:slackpkg install postfix
• 编辑/etc/postfix/main.cf进行安全配置:
“`设置主机名和域名myhostname = mail.example.com
mydomain = example.com
安装Postfix:slackpkg install postfix
编辑/etc/postfix/main.cf进行安全配置:
“`
myhostname = mail.example.com
mydomain = example.com
# 限制网络访问
inet_interfaces = loopback-only
# 或者只监听特定IP
# inet_interfaces = 192.168.1.1
# 禁用VRFY命令
disable_vrfy_command = yes
# 限制邮件大小
message_size_limit = 10485760
# 限制收件人数量
smtpd_recipient_limit = 100
# 启用SMTP认证
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
# 启用TLS
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
# 限制中继
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
- - 启动Postfix服务:
- ```bash
- chmod +x /etc/rc.d/rc.postfix
- /etc/rc.d/rc.postfix start
复制代码
防火墙设置
防火墙是保护系统免受网络攻击的重要工具:
1. - iptables配置:Slackware Linux默认使用iptables作为防火墙工具。创建一个基本的防火墙脚本/etc/rc.d/rc.firewall:
- “`bash
- #!/bin/sh# 清空所有规则
- iptables -F
- iptables -X
- iptables -t nat -F
- iptables -t nat -X
- iptables -t mangle -F
- iptables -t mangle -X# 设置默认策略
- iptables -P INPUT DROP
- iptables -P FORWARD DROP
- iptables -P OUTPUT ACCEPT# 允许本地回环
- iptables -A INPUT -i lo -j ACCEPT
- iptables -A OUTPUT -o lo -j ACCEPT# 允许已建立的连接
- iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT# 允许SSH(假设已更改为端口2222)
- iptables -A INPUT -p tcp –dport 2222 -m state –state NEW -j ACCEPT# 允许HTTP和HTTPS
- iptables -A INPUT -p tcp –dport 80 -m state –state NEW -j ACCEPT
- iptables -A INPUT -p tcp –dport 443 -m state –state NEW -j ACCEPT# 允许ICMP(有限制)
- iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 4 -j ACCEPT# 记录并拒绝其他输入
- iptables -A INPUT -j LOG –log-prefix “INPUT DROP: ”
- iptables -A INPUT -j DROP- 使脚本可执行并启动:
- ```bash
- chmod +x /etc/rc.d/rc.firewall
- /etc/rc.d/rc.firewall将防火墙添加到启动脚本中,编辑/etc/rc.d/rc.local:if [ -x /etc/rc.d/rc.firewall ]; then
- /etc/rc.d/rc.firewall
- fi
复制代码 2. Slackware Linux默认使用iptables作为防火墙工具。创建一个基本的防火墙脚本/etc/rc.d/rc.firewall:
“`bash
#!/bin/sh
3. - 将防火墙添加到启动脚本中,编辑/etc/rc.d/rc.local:if [ -x /etc/rc.d/rc.firewall ]; then
- /etc/rc.d/rc.firewall
- fi
复制代码 4. - nftables配置(替代iptables的更现代工具):安装nftables:slackpkg install nftables创建配置文件/etc/nftables.conf:
- “`
- #!/usr/sbin/nft -fflush rulesettable inet filter {chain input {
- type filter hook input priority 0; policy drop;
- # 允许本地回环
- iifname lo accept
- # 允许已建立的连接
- ct state established,related accept
- # 允许SSH(假设已更改为端口2222)
- tcp dport 2222 ct state new accept
- # 允许HTTP和HTTPS
- tcp dport {80, 443} ct state new accept
- # 允许ICMP(有限制)
- icmp type echo-request limit rate 1/second burst 4 packets accept
- # 记录并拒绝其他输入
- log prefix "INPUT DROP: " drop
- }
- chain forward {
- type filter hook forward priority 0; policy drop;
- }
- chain output {
- type filter hook output priority 0; policy accept;
- }}- 启动nftables:
- ```bash
- chmod +x /etc/rc.d/rc.nftables
- /etc/rc.d/rc.nftables start
复制代码 5. 安装nftables:slackpkg install nftables
6. 创建配置文件/etc/nftables.conf:
“`
#!/usr/sbin/nft -f
7. - TCP Wrappers配置:编辑/etc/hosts.allow和/etc/hosts.deny文件限制服务访问。在/etc/hosts.deny中默认拒绝所有服务:ALL: ALL在/etc/hosts.allow中允许特定IP访问特定服务:sshd: 192.168.1.0/24, 10.0.0.1
- httpd: ALL
复制代码 8. 编辑/etc/hosts.allow和/etc/hosts.deny文件限制服务访问。
9. 在/etc/hosts.deny中默认拒绝所有服务:ALL: ALL
10. - 在/etc/hosts.allow中允许特定IP访问特定服务:sshd: 192.168.1.0/24, 10.0.0.1
- httpd: ALL
复制代码
iptables配置:
• Slackware Linux默认使用iptables作为防火墙工具。创建一个基本的防火墙脚本/etc/rc.d/rc.firewall:
“`bash
#!/bin/sh
# 清空所有规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH(假设已更改为端口2222)
iptables -A INPUT -p tcp –dport 2222 -m state –state NEW -j ACCEPT
# 允许HTTP和HTTPS
iptables -A INPUT -p tcp –dport 80 -m state –state NEW -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -m state –state NEW -j ACCEPT
# 允许ICMP(有限制)
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 4 -j ACCEPT
# 记录并拒绝其他输入
iptables -A INPUT -j LOG –log-prefix “INPUT DROP: ”
iptables -A INPUT -j DROP
- - 使脚本可执行并启动:
- ```bash
- chmod +x /etc/rc.d/rc.firewall
- /etc/rc.d/rc.firewall
复制代码
• - 将防火墙添加到启动脚本中,编辑/etc/rc.d/rc.local:if [ -x /etc/rc.d/rc.firewall ]; then
- /etc/rc.d/rc.firewall
- fi
复制代码- if [ -x /etc/rc.d/rc.firewall ]; then
- /etc/rc.d/rc.firewall
- fi
复制代码
nftables配置(替代iptables的更现代工具):
• 安装nftables:slackpkg install nftables
• 创建配置文件/etc/nftables.conf:
“`
#!/usr/sbin/nft -f
- slackpkg install nftables
复制代码
flush ruleset
table inet filter {
- chain input {
- type filter hook input priority 0; policy drop;
- # 允许本地回环
- iifname lo accept
- # 允许已建立的连接
- ct state established,related accept
- # 允许SSH(假设已更改为端口2222)
- tcp dport 2222 ct state new accept
- # 允许HTTP和HTTPS
- tcp dport {80, 443} ct state new accept
- # 允许ICMP(有限制)
- icmp type echo-request limit rate 1/second burst 4 packets accept
- # 记录并拒绝其他输入
- log prefix "INPUT DROP: " drop
- }
- chain forward {
- type filter hook forward priority 0; policy drop;
- }
- chain output {
- type filter hook output priority 0; policy accept;
- }
复制代码
}
- - 启动nftables:
- ```bash
- chmod +x /etc/rc.d/rc.nftables
- /etc/rc.d/rc.nftables start
复制代码
TCP Wrappers配置:
• 编辑/etc/hosts.allow和/etc/hosts.deny文件限制服务访问。
• 在/etc/hosts.deny中默认拒绝所有服务:ALL: ALL
• - 在/etc/hosts.allow中允许特定IP访问特定服务:sshd: 192.168.1.0/24, 10.0.0.1
- httpd: ALL
复制代码- sshd: 192.168.1.0/24, 10.0.0.1
- httpd: ALL
复制代码
系统更新与补丁管理
保持系统更新是防止已知漏洞被利用的关键:
1. - Slackpkg配置:编辑/etc/slackpkg/mirrors,选择合适的镜像源:# 取消注释一个镜像源
- http://slackware.osuosl.org/slackware64-15.0/配置自动黑名单,编辑/etc/slackpkg/blacklist,添加不需要更新的软件包:# 例如,保持自定义内核不被更新
- kernel-generic
- kernel-huge
- kernel-modules
复制代码 2. - 编辑/etc/slackpkg/mirrors,选择合适的镜像源:# 取消注释一个镜像源
- http://slackware.osuosl.org/slackware64-15.0/
复制代码 3. 配置自动黑名单,编辑/etc/slackpkg/blacklist,添加不需要更新的软件包:# 例如,保持自定义内核不被更新
kernel-generic
kernel-huge
kernel-modules
4. - 定期更新策略:创建定期更新脚本/usr/local/bin/system-update:
- “`bash
- #!/bin/bash# 创建日志文件
- LOGFILE=”/var/log/system-update.log”
- echo “===== System update started at\((date) =====" >> \)LOGFILE# 更新包列表
- echo “Updating package lists…” >>\(LOGFILE
- /usr/sbin/slackpkg update >> \)LOGFILE 2>&1# 检查可用更新
- echo “Checking for available updates…” >>\(LOGFILE
- /usr/sbin/slackpkg upgrade-all >> \)LOGFILE 2>&1# 清理旧包
- echo “Cleaning up old packages…” >>\(LOGFILE
- /usr/sbin/slackpkg clean-system >> \)LOGFILE 2>&1echo “===== System update completed at\((date) =====" >> \)LOGFILE- 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/system-update设置cron任务,每周自动运行更新检查:crontab -e添加以下内容:# 每周日凌晨2点运行系统更新检查
- 0 2 * * 0 /usr/local/bin/system-update
复制代码 5. 创建定期更新脚本/usr/local/bin/system-update:
“`bash
#!/bin/bash
6. 设置cron任务,每周自动运行更新检查:crontab -e添加以下内容:# 每周日凌晨2点运行系统更新检查
0 2 * * 0 /usr/local/bin/system-update
7. - 安全补丁管理:订阅Slackware安全公告邮件列表,及时获取安全更新信息。对于关键系统,考虑设置安全更新通知机制:
- “`bash
- #!/bin/bash# 检查安全更新脚本
- /usr/sbin/slackpkg update > /dev/null 2>&1
- SECURITY_UPDATES=$(/usr/sbin/slackpkg upgrade-all | grep -i “security update”)if [ -n “$SECURITY_UPDATES” ]; thenecho "Security updates available: $SECURITY_UPDATES" | mail -s "Security Updates Available" admin@example.comfi
- “`将此脚本添加到cron任务中,每天运行一次。
复制代码 8. 订阅Slackware安全公告邮件列表,及时获取安全更新信息。
9. 对于关键系统,考虑设置安全更新通知机制:
“`bash
#!/bin/bash
10. 将此脚本添加到cron任务中,每天运行一次。
Slackpkg配置:
• - 编辑/etc/slackpkg/mirrors,选择合适的镜像源:# 取消注释一个镜像源
- http://slackware.osuosl.org/slackware64-15.0/
复制代码 • 配置自动黑名单,编辑/etc/slackpkg/blacklist,添加不需要更新的软件包:# 例如,保持自定义内核不被更新
kernel-generic
kernel-huge
kernel-modules
编辑/etc/slackpkg/mirrors,选择合适的镜像源:
- # 取消注释一个镜像源
- http://slackware.osuosl.org/slackware64-15.0/
复制代码
配置自动黑名单,编辑/etc/slackpkg/blacklist,添加不需要更新的软件包:
- # 例如,保持自定义内核不被更新
- kernel-generic
- kernel-huge
- kernel-modules
复制代码
定期更新策略:
• 创建定期更新脚本/usr/local/bin/system-update:
“`bash
#!/bin/bash
# 创建日志文件
LOGFILE=”/var/log/system-update.log”
echo “===== System update started at\((date) =====" >> \)LOGFILE
# 更新包列表
echo “Updating package lists…” >>\(LOGFILE
/usr/sbin/slackpkg update >> \)LOGFILE 2>&1
# 检查可用更新
echo “Checking for available updates…” >>\(LOGFILE
/usr/sbin/slackpkg upgrade-all >> \)LOGFILE 2>&1
# 清理旧包
echo “Cleaning up old packages…” >>\(LOGFILE
/usr/sbin/slackpkg clean-system >> \)LOGFILE 2>&1
echo “===== System update completed at\((date) =====" >> \)LOGFILE
- - 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/system-update
复制代码
• 设置cron任务,每周自动运行更新检查:crontab -e添加以下内容:# 每周日凌晨2点运行系统更新检查
0 2 * * 0 /usr/local/bin/system-update
设置cron任务,每周自动运行更新检查:
添加以下内容:
- # 每周日凌晨2点运行系统更新检查
- 0 2 * * 0 /usr/local/bin/system-update
复制代码
安全补丁管理:
• 订阅Slackware安全公告邮件列表,及时获取安全更新信息。
• 对于关键系统,考虑设置安全更新通知机制:
“`bash
#!/bin/bash
# 检查安全更新脚本
/usr/sbin/slackpkg update > /dev/null 2>&1
SECURITY_UPDATES=$(/usr/sbin/slackpkg upgrade-all | grep -i “security update”)
if [ -n “$SECURITY_UPDATES” ]; then
- echo "Security updates available: $SECURITY_UPDATES" | mail -s "Security Updates Available" admin@example.com
复制代码
fi
“`
• 将此脚本添加到cron任务中,每天运行一次。
日志监控与分析
有效的日志监控可以帮助及时发现潜在的安全问题:
1. - 系统日志配置:编辑/etc/syslog.conf,增强日志记录:
- “`记录所有auth和authpriv消息到安全日志auth,authpriv.* /var/log/secure# 记录所有内核消息到单独文件
- kern.* /var/log/kernel# 记录所有邮件日志到单独文件
- mail.* -/var/log/maillog# 记录cron日志
- cron.* /var/log/cron# 记录所有其他消息到系统日志
- *.info;mail.none;authpriv.none;cron.none /var/log/messages# 记录紧急消息到所有用户
- *.emerg *- 重启syslog服务:
- ```bash
- /etc/rc.d/rc.syslog restart
复制代码 2. 编辑/etc/syslog.conf,增强日志记录:
“`记录所有auth和authpriv消息到安全日志auth,authpriv.* /var/log/secure
3. - 日志轮转配置:编辑/etc/logrotate.conf,设置日志轮转:
- “`全局设置weekly
- rotate 4
- create
- compress
- include /etc/logrotate.d# 特定日志设置
- /var/log/wtmp {monthly
- create 0664 root utmp
- rotate 1}/var/log/btmp {missingok
- monthly
- create 0600 root utmp
- rotate 1}- 为特定服务创建日志轮转配置文件,如`/etc/logrotate.d/apache`:/var/log/httpd/*log {weekly
- missingok
- rotate 52
- compress
- delaycompress
- notifempty
- create 644 www-data www-data
- sharedscripts
- postrotate
- /etc/rc.d/rc.httpd reload > /dev/null 2>/dev/null || true
- endscript}
- “`
复制代码 4. 编辑/etc/logrotate.conf,设置日志轮转:
“`全局设置weekly
rotate 4
create
compress
include /etc/logrotate.d
5. 日志监控工具:安装并配置logwatch:slackpkg install logwatch编辑/etc/logwatch/conf/logwatch.conf:
“`设置邮件报告MailTo = admin@example.com
MailFrom = logwatch@example.com# 设置详细程度
Detail = High# 设置报告范围
Range = yesterday# 设置服务
Service = All
Service = “-zz-network” # 禁用特定服务- 设置cron任务每天发送日志报告:
```bash
crontab -e添加以下内容:# 每天凌晨1点发送日志报告
0 1 * * * /usr/sbin/logwatch
6. 安装并配置logwatch:slackpkg install logwatch
7. 编辑/etc/logwatch/conf/logwatch.conf:
“`设置邮件报告MailTo = admin@example.com
MailFrom = logwatch@example.com
8. - 实时日志监控:安装并配置swatch(Simple Watcher):slackpkg install swatch创建swatch配置文件/etc/swatch.conf:
- “`监控失败登录尝试watchfor /Failed password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/
- echo bold
- throttle 01:00
- mail=admin@example.com,subject=Failed Login Attempt# 监控SSH登录
- watchfor /Accepted password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/echo bold
- throttle 01:00
- mail=admin@example.com,subject=Successful SSH Login# 监控sudo使用
- watchfor /sudo:/echo bold
- mail=admin@example.com,subject=Sudo Command Used- 启动swatch:
- ```bash
- swatch --config-file=/etc/swatch.conf --tail-file=/var/log/secure --daemon添加到启动脚本,确保系统重启后自动运行。
复制代码 9. 安装并配置swatch(Simple Watcher):slackpkg install swatch
10. - 创建swatch配置文件/etc/swatch.conf:
- “`监控失败登录尝试watchfor /Failed password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/
- echo bold
- throttle 01:00
- mail=admin@example.com,subject=Failed Login Attempt
复制代码 11. 添加到启动脚本,确保系统重启后自动运行。
系统日志配置:
• 编辑/etc/syslog.conf,增强日志记录:
“`记录所有auth和authpriv消息到安全日志auth,authpriv.* /var/log/secure
编辑/etc/syslog.conf,增强日志记录:
“`
auth,authpriv.* /var/log/secure
# 记录所有内核消息到单独文件
kern.* /var/log/kernel
# 记录所有邮件日志到单独文件
mail.* -/var/log/maillog
# 记录cron日志
cron.* /var/log/cron
# 记录所有其他消息到系统日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 记录紧急消息到所有用户
*.emerg *
- - 重启syslog服务:
- ```bash
- /etc/rc.d/rc.syslog restart
复制代码
日志轮转配置:
• 编辑/etc/logrotate.conf,设置日志轮转:
“`全局设置weekly
rotate 4
create
compress
include /etc/logrotate.d
编辑/etc/logrotate.conf,设置日志轮转:
“`
weekly
rotate 4
create
compress
include /etc/logrotate.d
# 特定日志设置
/var/log/wtmp {
- monthly
- create 0664 root utmp
- rotate 1
复制代码
}
/var/log/btmp {
- missingok
- monthly
- create 0600 root utmp
- rotate 1
复制代码
}
- - 为特定服务创建日志轮转配置文件,如`/etc/logrotate.d/apache`:
复制代码
/var/log/httpd/*log {
- weekly
- missingok
- rotate 52
- compress
- delaycompress
- notifempty
- create 644 www-data www-data
- sharedscripts
- postrotate
- /etc/rc.d/rc.httpd reload > /dev/null 2>/dev/null || true
- endscript
复制代码
}
“`
日志监控工具:
• 安装并配置logwatch:slackpkg install logwatch
• 编辑/etc/logwatch/conf/logwatch.conf:
“`设置邮件报告MailTo = admin@example.com
MailFrom = logwatch@example.com
安装并配置logwatch:slackpkg install logwatch
- slackpkg install logwatch
复制代码
编辑/etc/logwatch/conf/logwatch.conf:
“`
MailTo = admin@example.com
MailFrom = logwatch@example.com
# 设置详细程度
Detail = High
# 设置报告范围
Range = yesterday
# 设置服务
Service = All
Service = “-zz-network” # 禁用特定服务
- - 设置cron任务每天发送日志报告:
- ```bash
- crontab -e
复制代码
添加以下内容:
- # 每天凌晨1点发送日志报告
- 0 1 * * * /usr/sbin/logwatch
复制代码
实时日志监控:
• 安装并配置swatch(Simple Watcher):slackpkg install swatch
• - 创建swatch配置文件/etc/swatch.conf:
- “`监控失败登录尝试watchfor /Failed password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/
- echo bold
- throttle 01:00
- mail=admin@example.com,subject=Failed Login Attempt
复制代码
安装并配置swatch(Simple Watcher):slackpkg install swatch
创建swatch配置文件/etc/swatch.conf:
“`
watchfor /Failed password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/
echo bold
throttle 01:00
mail=admin@example.com,subject=Failed Login Attempt
# 监控SSH登录
watchfor /Accepted password for .* from ([0-9]+.[0-9]+.[0-9]+.[0-9]+)/
- echo bold
- throttle 01:00
- mail=admin@example.com,subject=Successful SSH Login
复制代码
# 监控sudo使用
watchfor /sudo:/
- echo bold
- mail=admin@example.com,subject=Sudo Command Used
复制代码- - 启动swatch:
- ```bash
- swatch --config-file=/etc/swatch.conf --tail-file=/var/log/secure --daemon
复制代码
• 添加到启动脚本,确保系统重启后自动运行。
高级防护策略
入侵检测系统配置
入侵检测系统(IDS)可以帮助检测和响应潜在的恶意活动:
1. - OSSEC配置:安装OSSEC:wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
- tar -xvzf 3.7.0.tar.gz
- cd ossec-hids-3.7.0
- ./install.sh按照安装向导进行配置,选择”local”安装类型。编辑/var/ossec/etc/ossec.conf进行自定义配置:
- “`xmlyesadmin@example.comsmtp.example.comossec@example.com<log_alert_level>1</log_alert_level>
- <email_alert_level>7</email_alert_level><include>rules_config.xml</include>
- <include>sshd_rules.xml</include>
- <include>syslog_rules.xml</include>
- <include>apache_rules.xml</include>
- <include>web_appsec_rules.xml</include><frequency>7200</frequency>
- <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
- <directories check_all="yes">/bin,/sbin</directories>
- <ignore>/etc/mtab,/etc/hosts.deny</ignore><rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
- <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans><log_format>syslog</log_format>
- <location>/var/log/messages</location><log_format>syslog</log_format>
- <location>/var/log/secure</location><log_format>apache</log_format>
- <location>/var/log/httpd/access_log</location>- 启动OSSEC:
- ```bash
- /var/ossec/bin/ossec-control start
复制代码 2. - 安装OSSEC:wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
- tar -xvzf 3.7.0.tar.gz
- cd ossec-hids-3.7.0
- ./install.sh
复制代码 3. 按照安装向导进行配置,选择”local”安装类型。
4. 编辑/var/ossec/etc/ossec.conf进行自定义配置:
“`xmlyesadmin@example.comsmtp.example.comossec@example.com
5. - Snort配置(网络入侵检测系统):安装Snort:slackpkg install snort编辑/etc/snort/snort.conf进行基本配置:
- “`设置网络变量ipvar HOME_NET 192.168.1.0/24
- ipvar EXTERNAL_NET !$HOME_NET# 设置输出插件
- output unified2: filename snort.log, limit 128
- output alert_fast: alert.fast
- output alert_full: alert.full- 创建本地规则文件`/etc/snort/rules/local.rules`:# 检测SSH暴力破解
- alert tcp any any -> $HOME_NET 22 (msg:“SSH Brute Force Attempt”; flow:to_server,established; content:“SSH”; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000001; rev:1;)# 检测Web扫描
- alert tcp any any -> $HOME_NET 80 (msg:“Web Application Scan”; content:“/admin”; content:“GET”; threshold:type threshold, track by_src, count 50, seconds 60; sid:1000002; rev:1;)- 启动Snort:
- ```bash
- snort -A console -q -c /etc/snort/snort.conf -i eth0或者作为守护进程运行:snort -D -c /etc/snort/snort.conf -i eth0
复制代码 6. 安装Snort:slackpkg install snort
7. 编辑/etc/snort/snort.conf进行基本配置:
“`设置网络变量ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET
8. 或者作为守护进程运行:snort -D -c /etc/snort/snort.conf -i eth0
9. - Fail2ban配置(防止暴力破解):安装Fail2ban:wget https://github.com/fail2ban/fail2ban/archive/1.0.2.tar.gz
- tar -xvzf 1.0.2.tar.gz
- cd fail2ban-1.0.2
- python setup.py install
- cp files/debian-initd /etc/rc.d/rc.fail2ban
- chmod +x /etc/rc.d/rc.fail2ban编辑/etc/fail2ban/jail.conf进行配置:
- “`
- [DEFAULT]设置默认禁止时间(秒)bantime = 3600# 设置查找时间窗口
- findtime = 600# 设置最大尝试次数
- maxretry = 3# SSH监狱
- [sshd]
- enabled = true
- port = 2222
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3# Apache监狱
- [apache-auth]
- enabled = true
- port = http,https
- filter = apache-auth
- logpath = /var/log/httpd/error_log
- maxretry = 3# Web应用监狱
- [apache-badbots]
- enabled = true
- port = http,https
- filter = apache-badbots
- logpath = /var/log/httpd/access_log
- maxretry = 2- 启动Fail2ban:
- ```bash
- /etc/rc.d/rc.fail2ban start
复制代码 10. - 安装Fail2ban:wget https://github.com/fail2ban/fail2ban/archive/1.0.2.tar.gz
- tar -xvzf 1.0.2.tar.gz
- cd fail2ban-1.0.2
- python setup.py install
- cp files/debian-initd /etc/rc.d/rc.fail2ban
- chmod +x /etc/rc.d/rc.fail2ban
复制代码 11. - 编辑/etc/fail2ban/jail.conf进行配置:
- “`
- [DEFAULT]设置默认禁止时间(秒)bantime = 3600
复制代码
OSSEC配置:
• - 安装OSSEC:wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
- tar -xvzf 3.7.0.tar.gz
- cd ossec-hids-3.7.0
- ./install.sh
复制代码 • 按照安装向导进行配置,选择”local”安装类型。
• 编辑/var/ossec/etc/ossec.conf进行自定义配置:
“`xmlyesadmin@example.comsmtp.example.comossec@example.com
- wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
- tar -xvzf 3.7.0.tar.gz
- cd ossec-hids-3.7.0
- ./install.sh
复制代码- <log_alert_level>1</log_alert_level>
- <email_alert_level>7</email_alert_level>
复制代码- <include>rules_config.xml</include>
- <include>sshd_rules.xml</include>
- <include>syslog_rules.xml</include>
- <include>apache_rules.xml</include>
- <include>web_appsec_rules.xml</include>
复制代码- <frequency>7200</frequency>
- <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
- <directories check_all="yes">/bin,/sbin</directories>
- <ignore>/etc/mtab,/etc/hosts.deny</ignore>
复制代码- <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
- <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
复制代码- <log_format>syslog</log_format>
- <location>/var/log/messages</location>
复制代码- <log_format>syslog</log_format>
- <location>/var/log/secure</location>
复制代码- <log_format>apache</log_format>
- <location>/var/log/httpd/access_log</location>
复制代码- - 启动OSSEC:
- ```bash
- /var/ossec/bin/ossec-control start
复制代码
Snort配置(网络入侵检测系统):
• 安装Snort:slackpkg install snort
• 编辑/etc/snort/snort.conf进行基本配置:
“`设置网络变量ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET
安装Snort:slackpkg install snort
编辑/etc/snort/snort.conf进行基本配置:
“`
ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET
# 设置输出插件
output unified2: filename snort.log, limit 128
output alert_fast: alert.fast
output alert_full: alert.full
- - 创建本地规则文件`/etc/snort/rules/local.rules`:
复制代码
# 检测SSH暴力破解
alert tcp any any -> $HOME_NET 22 (msg:“SSH Brute Force Attempt”; flow:to_server,established; content:“SSH”; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000001; rev:1;)
# 检测Web扫描
alert tcp any any -> $HOME_NET 80 (msg:“Web Application Scan”; content:“/admin”; content:“GET”; threshold:type threshold, track by_src, count 50, seconds 60; sid:1000002; rev:1;)
- - 启动Snort:
- ```bash
- snort -A console -q -c /etc/snort/snort.conf -i eth0
复制代码
• 或者作为守护进程运行:snort -D -c /etc/snort/snort.conf -i eth0
- snort -D -c /etc/snort/snort.conf -i eth0
复制代码
Fail2ban配置(防止暴力破解):
• - 安装Fail2ban:wget https://github.com/fail2ban/fail2ban/archive/1.0.2.tar.gz
- tar -xvzf 1.0.2.tar.gz
- cd fail2ban-1.0.2
- python setup.py install
- cp files/debian-initd /etc/rc.d/rc.fail2ban
- chmod +x /etc/rc.d/rc.fail2ban
复制代码 • - 编辑/etc/fail2ban/jail.conf进行配置:
- “`
- [DEFAULT]设置默认禁止时间(秒)bantime = 3600
复制代码
安装Fail2ban:wget https://github.com/fail2ban/fail2ban/archive/1.0.2.tar.gz
tar -xvzf 1.0.2.tar.gz
cd fail2ban-1.0.2
python setup.py install
cp files/debian-initd /etc/rc.d/rc.fail2ban
chmod +x /etc/rc.d/rc.fail2ban
- wget https://github.com/fail2ban/fail2ban/archive/1.0.2.tar.gz
- tar -xvzf 1.0.2.tar.gz
- cd fail2ban-1.0.2
- python setup.py install
- cp files/debian-initd /etc/rc.d/rc.fail2ban
- chmod +x /etc/rc.d/rc.fail2ban
复制代码
编辑/etc/fail2ban/jail.conf进行配置:
“`
[DEFAULT]
bantime = 3600
# 设置查找时间窗口
findtime = 600
# 设置最大尝试次数
maxretry = 3
# SSH监狱
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
# Apache监狱
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/httpd/error_log
maxretry = 3
# Web应用监狱
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/httpd/access_log
maxretry = 2
- - 启动Fail2ban:
- ```bash
- /etc/rc.d/rc.fail2ban start
复制代码
安全审计与合规性
定期进行安全审计和确保合规性对于维护系统安全至关重要:
1. - 安全审计工具:安装并使用Lynis进行安全审计:wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz
- tar -xvzf lynis-3.0.6.tar.gz
- cd lynis
- ./lynis audit system根据Lynis的建议进行系统加固。
复制代码 2. - 安装并使用Lynis进行安全审计:wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz
- tar -xvzf lynis-3.0.6.tar.gz
- cd lynis
- ./lynis audit system
复制代码 3. 根据Lynis的建议进行系统加固。
4. - 文件完整性检查:使用AIDE(Advanced Intrusion Detection Environment)进行文件完整性检查:slackpkg install aide初始化AIDE数据库:aide --init
- mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db创建定期检查脚本/usr/local/bin/aide-check:
- “`bash
- #!/bin/bashAIDE=/usr/bin/aide
- LOGFILE=/var/log/aide.logecho “===== AIDE check started at\((date) =====" >> \)LOGFILE\(AIDE --check >> \)LOGFILE 2>&1
- echo “===== AIDE check completed at\((date) =====" >> \)LOGFILE# 如果有变化,发送邮件通知
- if [ $? -ne 0 ]; thenmail -s "AIDE Integrity Check Failed" admin@example.com < $LOGFILEfi- 使脚本可执行并设置cron任务:
- ```bash
- chmod +x /usr/local/bin/aide-check
- crontab -e添加以下内容:# 每天凌晨3点运行AIDE检查
- 0 3 * * * /usr/local/bin/aide-check
复制代码 5. 使用AIDE(Advanced Intrusion Detection Environment)进行文件完整性检查:slackpkg install aide
6. 初始化AIDE数据库:aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
7. 创建定期检查脚本/usr/local/bin/aide-check:
“`bash
#!/bin/bash
8. - 系统合规性检查:使用SCAP Security Guide进行系统合规性检查:slackpkg install openscap
- wget https://github.com/ComplianceAsCode/content/releases/download/v0.1.63/scap-security-guide-0.1.63.zip
- unzip scap-security-guide-0.1.63.zip
- cd scap-security-guide-0.1.63运行系统扫描:oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results-arf results.xml --report report.html ssg-slackware-xccdf.xml根据扫描结果修复系统。
复制代码 9. - 使用SCAP Security Guide进行系统合规性检查:slackpkg install openscap
- wget https://github.com/ComplianceAsCode/content/releases/download/v0.1.63/scap-security-guide-0.1.63.zip
- unzip scap-security-guide-0.1.63.zip
- cd scap-security-guide-0.1.63
复制代码 10. 运行系统扫描:oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results-arf results.xml --report report.html ssg-slackware-xccdf.xml
11. 根据扫描结果修复系统。
安全审计工具:
• - 安装并使用Lynis进行安全审计:wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz
- tar -xvzf lynis-3.0.6.tar.gz
- cd lynis
- ./lynis audit system
复制代码 • 根据Lynis的建议进行系统加固。
- wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz
- tar -xvzf lynis-3.0.6.tar.gz
- cd lynis
- ./lynis audit system
复制代码
文件完整性检查:
• 使用AIDE(Advanced Intrusion Detection Environment)进行文件完整性检查:slackpkg install aide
• 初始化AIDE数据库:aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
• 创建定期检查脚本/usr/local/bin/aide-check:
“`bash
#!/bin/bash
- aide --init
- mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
复制代码
AIDE=/usr/bin/aide
LOGFILE=/var/log/aide.log
echo “===== AIDE check started at\((date) =====" >> \)LOGFILE\(AIDE --check >> \)LOGFILE 2>&1
echo “===== AIDE check completed at\((date) =====" >> \)LOGFILE
# 如果有变化,发送邮件通知
if [ $? -ne 0 ]; then
- mail -s "AIDE Integrity Check Failed" admin@example.com < $LOGFILE
复制代码
fi
- - 使脚本可执行并设置cron任务:
- ```bash
- chmod +x /usr/local/bin/aide-check
- crontab -e
复制代码
添加以下内容:
- # 每天凌晨3点运行AIDE检查
- 0 3 * * * /usr/local/bin/aide-check
复制代码
系统合规性检查:
• - 使用SCAP Security Guide进行系统合规性检查:slackpkg install openscap
- wget https://github.com/ComplianceAsCode/content/releases/download/v0.1.63/scap-security-guide-0.1.63.zip
- unzip scap-security-guide-0.1.63.zip
- cd scap-security-guide-0.1.63
复制代码 • 运行系统扫描:oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results-arf results.xml --report report.html ssg-slackware-xccdf.xml
• 根据扫描结果修复系统。
- slackpkg install openscap
- wget https://github.com/ComplianceAsCode/content/releases/download/v0.1.63/scap-security-guide-0.1.63.zip
- unzip scap-security-guide-0.1.63.zip
- cd scap-security-guide-0.1.63
复制代码- oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results-arf results.xml --report report.html ssg-slackware-xccdf.xml
复制代码
加密与数据保护
保护敏感数据是系统安全的重要组成部分:
1. - 磁盘加密:使用LUKS加密整个磁盘或分区:cryptsetup luksFormat /dev/sdb1
- cryptsetup open /dev/sdb1 encrypted_data
- mkfs.ext4 /dev/mapper/encrypted_data
- mount /dev/mapper/encrypted_data /mnt/encrypted创建自动挂载脚本/usr/local/bin/mount-encrypted:
- “`bash
- #!/bin/bashDEVICE=”/dev/sdb1”
- MAPPER_NAME=“encrypted_data”
- MOUNT_POINT=“/mnt/encrypted”# 检查设备是否已解密
- if [ ! -e “/dev/mapper/$MAPPER_NAME” ]; thenecho "Opening encrypted device..."
- cryptsetup open $DEVICE $MAPPER_NAMEfi# 检查是否已挂载
- if ! mountpoint -q $MOUNT_POINT; thenecho "Mounting encrypted filesystem..."
- mount /dev/mapper/$MAPPER_NAME $MOUNT_POINTfi- 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/mount-encrypted
复制代码 2. 使用LUKS加密整个磁盘或分区:cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 encrypted_data
mkfs.ext4 /dev/mapper/encrypted_data
mount /dev/mapper/encrypted_data /mnt/encrypted
3. 创建自动挂载脚本/usr/local/bin/mount-encrypted:
“`bash
#!/bin/bash
4. - 文件和目录加密:使用GnuPG加密敏感文件:slackpkg install gnupg
- gpg --gen-key # 生成密钥对
- gpg -e -r recipient@example.com sensitive_file.txt # 加密文件
- gpg -d sensitive_file.txt.gpg > sensitive_file.txt # 解密文件使用EncFS创建加密目录:slackpkg install encfs
- mkdir ~/.encrypted ~/decrypted
- encfs ~/.encrypted ~/decrypted # 首次运行时设置密码创建自动挂载脚本/usr/local/bin/mount-encfs:
- “`bash
- #!/bin/bashENC_DIR=”\(HOME/.encrypted"
- MOUNT_DIR="\)HOME/decrypted”# 检查是否已挂载
- if ! mountpoint -q $MOUNT_DIR; thenecho "Mounting encrypted directory..."
- echo "Password: "
- read -s password
- echo "$password" | encfs -S $ENC_DIR $MOUNT_DIRfi- 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/mount-encfs
复制代码 5. 使用GnuPG加密敏感文件:slackpkg install gnupg
gpg --gen-key # 生成密钥对
gpg -e -r recipient@example.com sensitive_file.txt # 加密文件
gpg -d sensitive_file.txt.gpg > sensitive_file.txt # 解密文件
6. 使用EncFS创建加密目录:slackpkg install encfs
mkdir ~/.encrypted ~/decrypted
encfs ~/.encrypted ~/decrypted # 首次运行时设置密码
7. 创建自动挂载脚本/usr/local/bin/mount-encfs:
“`bash
#!/bin/bash
8. - SSL/TLS配置:为Web服务器生成SSL证书:
- “`bash生成私钥openssl genrsa -out example.com.key 2048# 生成证书签名请求(CSR)
- openssl req -new -key example.com.key -out example.com.csr# 自签名证书(仅用于测试)
- openssl x509 -req -days 365 -in example.com.csr -signkey example.com.key -out example.com.crt- 配置Apache使用SSL:# 编辑/etc/httpd/httpd.conf,取消注释以下行
- Include /etc/httpd/extra/httpd-ssl.conf# 编辑/etc/httpd/extra/httpd-ssl.conf
- SSLCertificateFile “/etc/ssl/certs/example.com.crt”
- SSLCertificateKeyFile “/etc/ssl/private/example.com.key”# 增强SSL安全性
- SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
- SSLCipherSuite HIGH:!aNULL:!MD5
- SSLHonorCipherOrder on
- SSLCompression off
- SSLUseStapling on
- SSLStaplingCache “shmcb:/logs/ssl_stapling(32768)”- 重启Apache:
- ```bash
- /etc/rc.d/rc.httpd restart
复制代码 9. 为Web服务器生成SSL证书:
“`bash生成私钥openssl genrsa -out example.com.key 2048
磁盘加密:
• 使用LUKS加密整个磁盘或分区:cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 encrypted_data
mkfs.ext4 /dev/mapper/encrypted_data
mount /dev/mapper/encrypted_data /mnt/encrypted
• 创建自动挂载脚本/usr/local/bin/mount-encrypted:
“`bash
#!/bin/bash
- cryptsetup luksFormat /dev/sdb1
- cryptsetup open /dev/sdb1 encrypted_data
- mkfs.ext4 /dev/mapper/encrypted_data
- mount /dev/mapper/encrypted_data /mnt/encrypted
复制代码
DEVICE=”/dev/sdb1”
MAPPER_NAME=“encrypted_data”
MOUNT_POINT=“/mnt/encrypted”
# 检查设备是否已解密
if [ ! -e “/dev/mapper/$MAPPER_NAME” ]; then
- echo "Opening encrypted device..."
- cryptsetup open $DEVICE $MAPPER_NAME
复制代码
fi
# 检查是否已挂载
if ! mountpoint -q $MOUNT_POINT; then
- echo "Mounting encrypted filesystem..."
- mount /dev/mapper/$MAPPER_NAME $MOUNT_POINT
复制代码
fi
- - 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/mount-encrypted
复制代码
文件和目录加密:
• 使用GnuPG加密敏感文件:slackpkg install gnupg
gpg --gen-key # 生成密钥对
gpg -e -r recipient@example.com sensitive_file.txt # 加密文件
gpg -d sensitive_file.txt.gpg > sensitive_file.txt # 解密文件
• 使用EncFS创建加密目录:slackpkg install encfs
mkdir ~/.encrypted ~/decrypted
encfs ~/.encrypted ~/decrypted # 首次运行时设置密码
• 创建自动挂载脚本/usr/local/bin/mount-encfs:
“`bash
#!/bin/bash
- slackpkg install gnupg
- gpg --gen-key # 生成密钥对
- gpg -e -r recipient@example.com sensitive_file.txt # 加密文件
- gpg -d sensitive_file.txt.gpg > sensitive_file.txt # 解密文件
复制代码- slackpkg install encfs
- mkdir ~/.encrypted ~/decrypted
- encfs ~/.encrypted ~/decrypted # 首次运行时设置密码
复制代码
ENC_DIR=”\(HOME/.encrypted"
MOUNT_DIR="\)HOME/decrypted”
# 检查是否已挂载
if ! mountpoint -q $MOUNT_DIR; then
- echo "Mounting encrypted directory..."
- echo "Password: "
- read -s password
- echo "$password" | encfs -S $ENC_DIR $MOUNT_DIR
复制代码
fi
- - 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/mount-encfs
复制代码
SSL/TLS配置:
• 为Web服务器生成SSL证书:
“`bash生成私钥openssl genrsa -out example.com.key 2048
为Web服务器生成SSL证书:
“`bash
openssl genrsa -out example.com.key 2048
# 生成证书签名请求(CSR)
openssl req -new -key example.com.key -out example.com.csr
# 自签名证书(仅用于测试)
openssl x509 -req -days 365 -in example.com.csr -signkey example.com.key -out example.com.crt
# 编辑/etc/httpd/httpd.conf,取消注释以下行
Include /etc/httpd/extra/httpd-ssl.conf
# 编辑/etc/httpd/extra/httpd-ssl.conf
SSLCertificateFile “/etc/ssl/certs/example.com.crt”
SSLCertificateKeyFile “/etc/ssl/private/example.com.key”
# 增强SSL安全性
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
SSLCompression off
SSLUseStapling on
SSLStaplingCache “shmcb:/logs/ssl_stapling(32768)”
- - 重启Apache:
- ```bash
- /etc/rc.d/rc.httpd restart
复制代码
安全应急响应计划
制定安全应急响应计划可以帮助在安全事件发生时快速有效地应对:
1. 应急响应团队组建:确定应急响应团队成员及其职责。创建联系人列表,包括团队成员、管理层、法律顾问和执法机构。
2. 确定应急响应团队成员及其职责。
3. 创建联系人列表,包括团队成员、管理层、法律顾问和执法机构。
4. 应急响应流程:创建应急响应流程文档,包括以下步骤:检测和分析遏制根除恢复事后总结
5. 创建应急响应流程文档,包括以下步骤:检测和分析遏制根除恢复事后总结
6. 检测和分析
7. 遏制
8. 根除
9. 恢复
10. 事后总结
11. - 应急响应工具包:创建应急响应工具包,包含必要的工具和脚本:
- “`bash
- #!/bin/bash# 应急响应脚本
- INCIDENT_DIR=”/root/incident-response/\((date +%Y%m%d-%H%M%S)"
- mkdir -p \)INCIDENT_DIR# 收集系统信息
- echo “Collecting system information…”
- uname -a >\(INCIDENT_DIR/uname.txt
- date > \)INCIDENT_DIR/date.txt
- uptime >\(INCIDENT_DIR/uptime.txt
- last > \)INCIDENT_DIR/last.txt
- w > $INCIDENT_DIR/w.txt# 收集网络信息
- echo “Collecting network information…”
- netstat -tulnp >\(INCIDENT_DIR/netstat.txt
- ss -tulnp > \)INCIDENT_DIR/ss.txt
- iptables -L -n -v > $INCIDENT_DIR/iptables.txt# 收集进程信息
- echo “Collecting process information…”
- ps auxf >\(INCIDENT_DIR/ps.txt
- top -b -n 1 > \)INCIDENT_DIR/top.txt# 收集用户信息
- echo “Collecting user information…”
- lastlog >\(INCIDENT_DIR/lastlog.txt
- cat /etc/passwd > \)INCIDENT_DIR/passwd.txt
- cat /etc/shadow > $INCIDENT_DIR/shadow.txt# 收集日志文件
- echo “Collecting log files…”
- cp /var/log/messages\(INCIDENT_DIR/
- cp /var/log/secure \)INCIDENT_DIR/
- cp /var/log/httpd/*log $INCIDENT_DIR/ 2>/dev/null# 创建文件系统快照
- echo “Creating filesystem snapshot…”
- find / -type f -mtime -1 -exec ls -la {} \; > $INCIDENT_DIR/recent_files.txtecho “Incident response data collected in $INCIDENT_DIR”- 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/incident-response
复制代码 12. 创建应急响应工具包,包含必要的工具和脚本:
“`bash
#!/bin/bash
13. - 备份和恢复策略:创建备份脚本/usr/local/bin/system-backup:
- “`bash
- #!/bin/bashBACKUP_DIR=”/backup”
- DATE=\((date +%Y%m%d-%H%M%S)
- BACKUP_FILE="\)BACKUP_DIR/system-backup-$DATE.tar.gz”# 创建备份目录
- mkdir -p $BACKUP_DIR# 创建备份
- echo “Creating system backup…”
- tar -czf $BACKUP_FILE--exclude=/backup \
- --exclude=/proc \
- --exclude=/sys \
- --exclude=/dev \
- --exclude=/tmp \
- --exclude=/var/tmp \
- --exclude=/var/cache \
- --exclude=/var/run \
- --exclude=/mnt \
- --exclude=/media \
- /# 加密备份
- echo “Encrypting backup…”
- gpg -c –passphrase-file /root/backup-passphrase\(BACKUP_FILE
- rm \)BACKUP_FILE# 保留最近7天的备份
- find $BACKUP_DIR -name “system-backup-*.gpg” -mtime +7 -deleteecho “Backup completed: $BACKUP_FILE.gpg”- 使脚本可执行并设置cron任务:
- ```bash
- chmod +x /usr/local/bin/system-backup
- crontab -e添加以下内容:# 每周日凌晨1点进行系统备份
- 0 1 * * 0 /usr/local/bin/system-backup
复制代码 14. 创建备份脚本/usr/local/bin/system-backup:
“`bash
#!/bin/bash
应急响应团队组建:
• 确定应急响应团队成员及其职责。
• 创建联系人列表,包括团队成员、管理层、法律顾问和执法机构。
应急响应流程:
• 创建应急响应流程文档,包括以下步骤:检测和分析遏制根除恢复事后总结
• 检测和分析
• 遏制
• 根除
• 恢复
• 事后总结
1. 检测和分析
2. 遏制
3. 根除
4. 恢复
5. 事后总结
应急响应工具包:
• 创建应急响应工具包,包含必要的工具和脚本:
“`bash
#!/bin/bash
# 应急响应脚本
INCIDENT_DIR=”/root/incident-response/\((date +%Y%m%d-%H%M%S)"
mkdir -p \)INCIDENT_DIR
# 收集系统信息
echo “Collecting system information…”
uname -a >\(INCIDENT_DIR/uname.txt
date > \)INCIDENT_DIR/date.txt
uptime >\(INCIDENT_DIR/uptime.txt
last > \)INCIDENT_DIR/last.txt
w > $INCIDENT_DIR/w.txt
# 收集网络信息
echo “Collecting network information…”
netstat -tulnp >\(INCIDENT_DIR/netstat.txt
ss -tulnp > \)INCIDENT_DIR/ss.txt
iptables -L -n -v > $INCIDENT_DIR/iptables.txt
# 收集进程信息
echo “Collecting process information…”
ps auxf >\(INCIDENT_DIR/ps.txt
top -b -n 1 > \)INCIDENT_DIR/top.txt
# 收集用户信息
echo “Collecting user information…”
lastlog >\(INCIDENT_DIR/lastlog.txt
cat /etc/passwd > \)INCIDENT_DIR/passwd.txt
cat /etc/shadow > $INCIDENT_DIR/shadow.txt
# 收集日志文件
echo “Collecting log files…”
cp /var/log/messages\(INCIDENT_DIR/
cp /var/log/secure \)INCIDENT_DIR/
cp /var/log/httpd/*log $INCIDENT_DIR/ 2>/dev/null
# 创建文件系统快照
echo “Creating filesystem snapshot…”
find / -type f -mtime -1 -exec ls -la {} \; > $INCIDENT_DIR/recent_files.txt
echo “Incident response data collected in $INCIDENT_DIR”
- - 使脚本可执行:
- ```bash
- chmod +x /usr/local/bin/incident-response
复制代码
备份和恢复策略:
• 创建备份脚本/usr/local/bin/system-backup:
“`bash
#!/bin/bash
BACKUP_DIR=”/backup”
DATE=\((date +%Y%m%d-%H%M%S)
BACKUP_FILE="\)BACKUP_DIR/system-backup-$DATE.tar.gz”
# 创建备份目录
mkdir -p $BACKUP_DIR
# 创建备份
echo “Creating system backup…”
tar -czf $BACKUP_FILE
- --exclude=/backup \
- --exclude=/proc \
- --exclude=/sys \
- --exclude=/dev \
- --exclude=/tmp \
- --exclude=/var/tmp \
- --exclude=/var/cache \
- --exclude=/var/run \
- --exclude=/mnt \
- --exclude=/media \
- /
复制代码
# 加密备份
echo “Encrypting backup…”
gpg -c –passphrase-file /root/backup-passphrase\(BACKUP_FILE
rm \)BACKUP_FILE
# 保留最近7天的备份
find $BACKUP_DIR -name “system-backup-*.gpg” -mtime +7 -delete
echo “Backup completed: $BACKUP_FILE.gpg”
- - 使脚本可执行并设置cron任务:
- ```bash
- chmod +x /usr/local/bin/system-backup
- crontab -e
复制代码
添加以下内容:
- # 每周日凌晨1点进行系统备份
- 0 1 * * 0 /usr/local/bin/system-backup
复制代码
安全最佳实践与常见问题解决
安全最佳实践
1. 最小权限原则:只授予用户和服务完成其任务所需的最小权限。使用chmod和chown适当设置文件和目录权限。定期审核用户权限和访问控制。
2. 只授予用户和服务完成其任务所需的最小权限。
3. 使用chmod和chown适当设置文件和目录权限。
4. 定期审核用户权限和访问控制。
5. 深度防御:实施多层安全控制,不要依赖单一安全措施。结合使用防火墙、IDS/IPS、加密和访问控制等多种安全机制。
6. 实施多层安全控制,不要依赖单一安全措施。
7. 结合使用防火墙、IDS/IPS、加密和访问控制等多种安全机制。
8. 定期更新和补丁:保持系统和软件包最新,及时应用安全补丁。订阅安全公告,了解最新的威胁和漏洞。
9. 保持系统和软件包最新,及时应用安全补丁。
10. 订阅安全公告,了解最新的威胁和漏洞。
11. 安全配置管理:使用版本控制系统(如Git)管理配置文件,跟踪更改。实施配置基线,定期审计系统配置。
12. 使用版本控制系统(如Git)管理配置文件,跟踪更改。
13. 实施配置基线,定期审计系统配置。
14. 安全意识培训:对系统管理员和用户进行安全意识培训。教育用户识别钓鱼邮件和其他社会工程攻击。
15. 对系统管理员和用户进行安全意识培训。
16. 教育用户识别钓鱼邮件和其他社会工程攻击。
最小权限原则:
• 只授予用户和服务完成其任务所需的最小权限。
• 使用chmod和chown适当设置文件和目录权限。
• 定期审核用户权限和访问控制。
深度防御:
• 实施多层安全控制,不要依赖单一安全措施。
• 结合使用防火墙、IDS/IPS、加密和访问控制等多种安全机制。
定期更新和补丁:
• 保持系统和软件包最新,及时应用安全补丁。
• 订阅安全公告,了解最新的威胁和漏洞。
安全配置管理:
• 使用版本控制系统(如Git)管理配置文件,跟踪更改。
• 实施配置基线,定期审计系统配置。
安全意识培训:
• 对系统管理员和用户进行安全意识培训。
• 教育用户识别钓鱼邮件和其他社会工程攻击。
常见安全问题及解决方案
1. SSH暴力破解:问题:系统日志显示大量SSH登录尝试。解决方案:更改SSH默认端口。禁用密码认证,使用密钥认证。安装并配置Fail2ban自动阻止恶意IP。
2. 问题:系统日志显示大量SSH登录尝试。
3. 解决方案:更改SSH默认端口。禁用密码认证,使用密钥认证。安装并配置Fail2ban自动阻止恶意IP。
4. 更改SSH默认端口。
5. 禁用密码认证,使用密钥认证。
6. 安装并配置Fail2ban自动阻止恶意IP。
7. DDoS攻击:问题:服务器响应缓慢或无法访问。解决方案:配置防火墙限制单个IP的连接数。使用iptables设置速率限制:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 100 -j ACCEPT考虑使用CDN或DDoS防护服务。
8. 问题:服务器响应缓慢或无法访问。
9. 解决方案:配置防火墙限制单个IP的连接数。使用iptables设置速率限制:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 100 -j ACCEPT考虑使用CDN或DDoS防护服务。
10. 配置防火墙限制单个IP的连接数。
11. 使用iptables设置速率限制:
12. 考虑使用CDN或DDoS防护服务。
13. Web应用攻击:问题:Web服务器被入侵或被用于攻击。解决方案:定期更新Web应用程序和插件。实施Web应用防火墙(WAF)。使用ModSecurity增强Apache安全性:slackpkg install modsecurity配置ModSecurity规则集:# 编辑/etc/httpd/modsecurity.d/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/rules/*.conf
14. 问题:Web服务器被入侵或被用于攻击。
15. 解决方案:定期更新Web应用程序和插件。实施Web应用防火墙(WAF)。使用ModSecurity增强Apache安全性:slackpkg install modsecurity配置ModSecurity规则集:# 编辑/etc/httpd/modsecurity.d/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/rules/*.conf
16. 定期更新Web应用程序和插件。
17. 实施Web应用防火墙(WAF)。
18. 使用ModSecurity增强Apache安全性:
19. 配置ModSecurity规则集:
20. 恶意软件感染:问题:系统行为异常,性能下降。解决方案:安装并运行恶意软件扫描工具,如ClamAV:slackpkg install clamav
freshclam # 更新病毒数据库
clamscan -r / --infected --exclude-dir=/sys --exclude-dir=/proc # 扫描系统检查异常进程和网络连接。从干净备份恢复系统。
21. 问题:系统行为异常,性能下降。
22. 解决方案:安装并运行恶意软件扫描工具,如ClamAV:slackpkg install clamav
freshclam # 更新病毒数据库
clamscan -r / --infected --exclude-dir=/sys --exclude-dir=/proc # 扫描系统检查异常进程和网络连接。从干净备份恢复系统。
23. 安装并运行恶意软件扫描工具,如ClamAV:
24. 检查异常进程和网络连接。
25. 从干净备份恢复系统。
26. 数据泄露:问题:敏感数据被未授权访问或泄露。解决方案:实施数据加密,包括传输中和静态数据。审计访问日志,识别异常访问模式。实施数据丢失防护(DLP)措施。
27. 问题:敏感数据被未授权访问或泄露。
28. 解决方案:实施数据加密,包括传输中和静态数据。审计访问日志,识别异常访问模式。实施数据丢失防护(DLP)措施。
29. 实施数据加密,包括传输中和静态数据。
30. 审计访问日志,识别异常访问模式。
31. 实施数据丢失防护(DLP)措施。
SSH暴力破解:
• 问题:系统日志显示大量SSH登录尝试。
• 解决方案:更改SSH默认端口。禁用密码认证,使用密钥认证。安装并配置Fail2ban自动阻止恶意IP。
• 更改SSH默认端口。
• 禁用密码认证,使用密钥认证。
• 安装并配置Fail2ban自动阻止恶意IP。
• 更改SSH默认端口。
• 禁用密码认证,使用密钥认证。
• 安装并配置Fail2ban自动阻止恶意IP。
DDoS攻击:
• 问题:服务器响应缓慢或无法访问。
• 解决方案:配置防火墙限制单个IP的连接数。使用iptables设置速率限制:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 100 -j ACCEPT考虑使用CDN或DDoS防护服务。
• 配置防火墙限制单个IP的连接数。
• 使用iptables设置速率限制:
• 考虑使用CDN或DDoS防护服务。
• 配置防火墙限制单个IP的连接数。
• 使用iptables设置速率限制:
- iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
- iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 100 -j ACCEPT
复制代码
• 考虑使用CDN或DDoS防护服务。
Web应用攻击:
• 问题:Web服务器被入侵或被用于攻击。
• 解决方案:定期更新Web应用程序和插件。实施Web应用防火墙(WAF)。使用ModSecurity增强Apache安全性:slackpkg install modsecurity配置ModSecurity规则集:# 编辑/etc/httpd/modsecurity.d/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/rules/*.conf
• 定期更新Web应用程序和插件。
• 实施Web应用防火墙(WAF)。
• 使用ModSecurity增强Apache安全性:
• 配置ModSecurity规则集:
问题:Web服务器被入侵或被用于攻击。
解决方案:
• 定期更新Web应用程序和插件。
• 实施Web应用防火墙(WAF)。
• 使用ModSecurity增强Apache安全性:
- slackpkg install modsecurity
复制代码
• 配置ModSecurity规则集:
- # 编辑/etc/httpd/modsecurity.d/modsecurity.conf
- SecRuleEngine On
- SecRequestBodyAccess On
- SecResponseBodyAccess On
- Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
- Include /etc/httpd/modsecurity.d/owasp-modsecurity-crs/rules/*.conf
复制代码
恶意软件感染:
• 问题:系统行为异常,性能下降。
• 解决方案:安装并运行恶意软件扫描工具,如ClamAV:slackpkg install clamav
freshclam # 更新病毒数据库
clamscan -r / --infected --exclude-dir=/sys --exclude-dir=/proc # 扫描系统检查异常进程和网络连接。从干净备份恢复系统。
• 安装并运行恶意软件扫描工具,如ClamAV:
• 检查异常进程和网络连接。
• 从干净备份恢复系统。
• 安装并运行恶意软件扫描工具,如ClamAV:
- slackpkg install clamav
- freshclam # 更新病毒数据库
- clamscan -r / --infected --exclude-dir=/sys --exclude-dir=/proc # 扫描系统
复制代码
• 检查异常进程和网络连接。
• 从干净备份恢复系统。
数据泄露:
• 问题:敏感数据被未授权访问或泄露。
• 解决方案:实施数据加密,包括传输中和静态数据。审计访问日志,识别异常访问模式。实施数据丢失防护(DLP)措施。
• 实施数据加密,包括传输中和静态数据。
• 审计访问日志,识别异常访问模式。
• 实施数据丢失防护(DLP)措施。
• 实施数据加密,包括传输中和静态数据。
• 审计访问日志,识别异常访问模式。
• 实施数据丢失防护(DLP)措施。
结论
Slackware Linux作为一个简洁、稳定的Linux发行版,为系统管理员提供了高度的可定制性和控制力。然而,这种灵活性也意味着管理员需要投入更多精力来确保系统安全。本文从基础配置到高级防护策略,全面解析了Slackware Linux系统的安全性设置,为提升服务器安全等级提供了实用指南。
通过实施本文介绍的安全措施,包括基础安全配置、服务安全加固、防火墙设置、系统更新与补丁管理、日志监控与分析、入侵检测系统配置、安全审计与合规性、加密与数据保护以及安全应急响应计划,管理员可以显著提高Slackware Linux服务器的安全性。
然而,安全是一个持续的过程,而不是一次性的任务。管理员需要保持警惕,定期评估和更新安全策略,以应对不断变化的威胁环境。通过遵循安全最佳实践,及时解决常见安全问题,并结合Slackware Linux的简洁性和稳定性,管理员可以构建一个既安全又高效的服务器环境。
最后,记住没有绝对安全的系统,但通过实施适当的安全措施和保持良好的安全习惯,可以大大降低风险,保护系统和数据免受大多数威胁。
版权声明
1、转载或引用本网站内容(全面解析Slackware Linux系统安全性设置从基础配置到高级防护策略提升服务器安全等级的实用指南)须注明原网址及作者(威震华夏关云长),并标明本网站网址(https://pixtech.cc/)。
2、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任。
3、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利。
本文地址: https://pixtech.cc/thread-40198-1-1.html
|
|