web应用服务器
tomcat
tomcat版本建议升级到8.5.57
webapp下面 docs examples host-manager manager全删除
主机安全
linux
mDNS检测
service avahi-daemonstop #停止avahi-daemon服务
# chkconfigavahi-daemon off #防止avahi-daemon开机再次运行
favicon.ico供应商指纹识别
在根目录下搜索find / -name “favicon.ico”
删除对应的文件
敏感位置先备份一下
vnc漏洞
使用好vnc后进行卸载
Traceroute Information路由跟踪
禁用icmp协议,主机防ping(1表示禁用,0表示开启)
echo “1”>/proc/sys/net/ipv4/icmp_echo_ignore_all
查看icmp状态 (0为启动 1为关闭)
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
支持TCP/IP协议的时间戳
修改 /etc/sysctl.conf
增加
net.ipv4.tcp_timestamps=0 (禁用时间戳)
更新内核参数
sysctl -p
rpc协议漏洞
停止进程
$ systemctl stop rpcbind.socket
$ systemctl stop rpcbind
# 禁止随开机启动
$ systemctl disable rpcbind.socket
$ systemctl disable rpcbind
ICMP时间戳请求
禁用icmp协议,主机防ping(1表示禁用,0表示开启)
echo “1”>/proc/sys/net/ipv4/icmp_echo_ignore_all
查看icmp状态 (0为启动 1为关闭)
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
应用备份
crontab -e 编辑定时脚本
00 03 * /usr/local/tomcat/scripts/app.sh >> /usr/local/tomcat/scripts/app.log 2>&1
bash脚本内容
app.sh:
DATE1=date +%u
DATE2=date -d yesterday +%Y-%m-%d
DAY=${DATE2:8:2}
rm /usr/local/tomcat/backup/tomcat80/*_$DATE1.war
cp /usr/local/tomcat/tomcat80/webapps/ZXWechat.war /usr/local/tomcat/backup/tomcat80/ZXWechat$DATE1.war
cp /usr/local/tomcat/tomcat80/conf -r /usr/local/tomcat/backup/tomcat80/
cd /usr/local/tomcat/backup/tomcat80/
tar -czvf conf$DATE1.tar.gz conf/
rm conf/ -rf
cp /usr/local/tomcat/tomcat80/logs/$DATE2.log -r /usr/local/tomcat/backup/tomcat80/
tar -czvf log_$DATE1.tar.gz $DATE2.log
rm $DATE2.log -rf
if [ “$DAY” == “01” ];then
# cp /usr/local/tomcat/tomcat80/webapps/ZXWechat.war /usr/local/tomcat/stock/tomcat80/ZXWechat$DATE2.war
# cp /usr/local/tomcat/tomcat80/conf -r /usr/local/tomcat/stock/tomcat80/
# cd /usr/local/tomcat/stock/tomcat80/
# tar -czvf conf$DATE2.tar.gz conf/
# rm conf/ -rf
# cp /usr/local/tomcat/tomcat80/logs/$DATE2.log -r /usr/local/tomcat/backup/tomcat80/
# tar -czvf log_$DATE1.tar.gz $DATE2.log
# rm $DATE2.log -rf
fi
主机加固
linux
密码复杂度&定期更换
vi /etc/pam.d/system-auth
password required pam_cracklib.so dcredit=-2 ucredit=-1 ocredit=-1 lcredit=-1 minlen=8
dcrdit=-2 密码中最少2位数字<br /> ucredit=-1 密码中最少1位大写字母<br /> ocredit=-1 密码中最少1位特殊字符<br /> lcredit=-1 密码中最少1位小写字母<br /> minlen=8 密码中长度最少8位
chage -m 0 -M 90 -W 15 user密码有效期最小0 最大90 提前15天发送警报
chage -l user 查看用户
主机密码错误次数锁定
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒
vim /etc/pam.d/sshd
vim /etc/pam.d/login
添加到第一行
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=30
pam_tally2 –u tes 查看次数
pam_tally2 –r –u tes 清空次数
修改登录时间长自动断开
vi /etc/profile
export TMOUT=1800
自动断开时限是30分钟
禁用用户
usermod -L 用户
权限分离
Useradd 用户
Passwd 用户
root 用户下chown –R app /usr/local/nginx
创建一个普通用户,指向应用目录的权限
root用户下chown –R audit /var/log
创建一个审计用户audit ,指向/var/log
数据库安全
oracle
ORACLE TNS Listener远程注册投毒
更新OPatch最新版
cd $ORACLE_HOME/OPatch
./opatch lsinventory 显示清单
./opatch version 显示版本
备份原来的Opatch
tar -cvf Opatch_20140627.tar OPatch
关闭实例,关闭监听后
将Opatch更新放到oracle的home下
unzip p6880880_112000_Linux-x86-64.zip
cd OPatch
./opatch lsinventory 显示清单
./opatch version 显示版本
2.打补丁(64位linux)
将补丁放到$ORACLE_HOME下
unzip p12880299_112010_Linux-x86-64.zip
$ORACLE_HOME/OPatch/opatch apply
3.修改监听,重启
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME = DQ)
(ORACLE_HOME =/opt/oracle/product/OraHome)
(SID_NAME = DQ)
)
)
ADR_BASE_LISTENER = /opt/oracle
SECURE_REGISTER_LISTENER = (TCP)
Oracle Database tnslsnr连接认证
筛选到此端口的传入通信量,以便只有经过授权的主机才能连接到此端口。
打开oracle安装路径下
./dbhome_1/NETWORK/ADMIN/sqlnet.ora文件
增加以下代码
1. tcp.validnode_checking=yes —//(开启ip限制功能)
2. tcp.invited_nodes=(192.168.1.135,192.168.1.156)–(允许访问数据库的ip地址列表,多个IP地址用逗号分开)
3. tcp.excluded_nodes=(192.168.1.123)–(禁止访问数据库的ip地址列表)
然后重启监听即可
注:
1. 不要禁止服务器本机的IP地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的ip访问监听器
2. 如果服务器本机IP地址是变化的,可在允许访问的数据库配置中添加主机名或是将(127.0.0.1).加入列表。例如: tcp.invited_nodes=(主机名,127.0.0.1)
本地备份
crontab -e 编辑定时脚本
16 04 * su - oracle -c /home/oracle/scripts/export.sh > /home/oracle/backup/export.log 2>&1
bash脚本内容
export.sh:
DATE=date +%u
DATE2=date +%Y-%m-%d
DAY=${DATE2:8:2}
rm /home/oracle/backup/expdpdb$DATE.dmp.*
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1; export ORACLE_HOME
NLS_LANG=american_america.zhs16gbk ; export NLS_LANG
cd /home/oracle/backup/
exp system/oracle_123 file=expdpdb$DATE.dmp log=expdpdb$DATE.log owner=system
if [ “$DAY” == “01” ];then
exp system / oracle_123 file=changzheng$DATE2.dmp log= expdpdb _$DATE2.log owner= system
fi
异地备份
mysql
本地备份
crontab -e 编辑定时脚本
00 04 * su - mysql -c /home/mysql/scripts/export.sh >> /home/mysql/scripts/export.log 2>&1
bash脚本内容
export.sh:
dbuser=”root”
db_passwd=”caifulife@88”
db_name=”retiredsoldiers”
backup_dir=”/home/mysql/backup/“
date=date +%u
date2=date +%Y-%m-%d
day=${date2:8:2}
/usr/local/mysql/bin/mysqldump -u$db_user -p$db_passwd $db_name > “$backup_dir/$db_name”“$date.sql”
if [ “$day” == “01” ];then
/usr/local/mysql/bin/mysqldump -u$dbuser -p$db_passwd $db_name > “$backup_dir/$db_name”“$date2.sql”
fi
数据库加固
密码复杂度
SQL> @ /opt/oracle/product/OraHome/rdbms/admin/utlpwdmg.sql
登陆失败锁定
第一步:创建配置文件
create profile lock_account limit failed_login_attempts 10 password_lock_time 1;
第二步:
alter user shitang profile lock_account;
登出超时退出
查询resource limit是否开启:
SQL> SELECT name, value FROM gv$parameter WHERE name = ‘resource_limit’;
如果没有,则开启这个参数:
SQL> ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
创建空闲30分钟中止空闲例程的Profile:
SQL> CREATE PROFILE app_user LIMIT IDLE_TIME 30;
Profile created.
设置用户的Profile:
SQL>alter user mzh profile app_user;
也可以修改已存在的Profile中的IDLE_TIME:
SQL> ALTER PROFILE DEFAULT LIMIT IDLE_TIME 30;
禁用用户
锁账户
alter user test account lock;
查询
select username, account_status from dba_users;
开启审计
关闭审计日志
查看审计日志
SQL> show parameter audit_trail
VALUE值为DB,表面审计功能为开启、
开启oracle的审计功能
SQL> alter system set audit_sys_operations=TRUE scope=spfile;
SQL> alter system set audit_trail=TRUE scope=spfile;
关闭oracle的审计功能
SQL> alter system set audit_sys_operations=FALSE scope=spfile;
SQL> alter system set audit_trail=FALSE scope=spfile;
System altered.
快速删除审计日志:truncate table SYS.AUD$;