AWD中舒服的姿势

数据库

备份

  • 方法一
1
2
# cd /var/lib/mysql
# mysqldump -uroot -p [库名] > back.sql
  • 方法二

使用 navicat 等图形化工具连接,傻瓜化操作

还原

  • 方法一
1
2
3
4
5
6
# 先进入数据库查看库是否存在,不存在就创建
# mysql -uroot -p
mysql> show databases;
mysql> create database [库名];
mysql> use [库名];
mysql> source back.sql;
  • 方法二
1
2
# 先进数据库查看库是否存在,不存在就创建
# mysql -uroot -p [库名] < back.sql
  • 方法三

使用 navicat 等图形化管理工具,傻瓜化操作

常用的访问控制

限制端口

1
2
3
4
5
6
7
8
9
10
11
#开放ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
#打开80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#开启多端口简单用法
iptables -A INPUT -p tcp -m multiport --dport 22,80,8080,8081 -j ACCEPT
#允许外部访问本地多个端口 如8080,8081,8082,且只允许是新连接、已经连接的和已经连接的延伸出新连接的会话
iptables -A INPUT -p tcp -m multiport --dport 8080,8081,8082,12345 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sport 8080,8081,8082,12345 -m state --state ESTABLISHED -j ACCEPT

限制ssh登录

1
2
3
4
#禁止从xx.xx.xx.xx远程登陆到本机
iptables -t filter -A INPUT -s xx.xx.xx.xx -p tcp --dport 22 -j DROP
#允许xx.xx.xx.xx网段远程登陆访问ssh
iptables -A INPUT -s xx.xx.xx.1/24 -p tcp --dport 22 -j ACCEPT

限制IP连接数和连接速率

1
2
3
4
5
6
7
8
#单个IP的最大连接数为 30
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
#单个IP在60秒内只允许最多新建15个连接
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 15 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
#允许外部访问本机80端口,且本机初始只允许有10个连接,每秒新增加2个连接,如果访问超过此限制则拒接 (此方式可以限制一些攻击)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 2/s --limit-burst 10 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

数据包简单识别,防止端口复用类的后门或者shell

1
2
3
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

限制访问

1
2
3
4
5
#禁止从客户机1.1.1.4访问1.1.1.5上的任何服务
iptable -t filter -A FORWARD -s 1.1.1.4 -d 1.1.1.5 -j DROP
#封杀1.1.1.4这个IP或者某个ip段
iptables -I INPUT -s 1.1.1.4 -j DROP
iptables -I INPUT -s 1.1.1.1/24 -j DROP

过滤异常报文

1
2
3
4
5
6
7
8
9
10
11
12
#表示 SYN,FIN,ACK,RST的标识都检查,但只匹配SYN标识
iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK,RST SYN
#匹配SYN标识位
iptables -A INPUT -p tcp --syn
#检查所有的标识位,匹配到FIN URG PSH的丢弃
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
#丢弃没标志位的包
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
#匹配到SYN ACK FIN URG RST PSH的丢弃(类似的操作自行举一反三)
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG,PSH -j DROP
#匹配到 SYN,RST的丢弃
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

防止DDos

1
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT

-m limit:启用limit扩展
–limit 20/minute:允许最多每分钟10个连接
–limit-burst 100:当达到100个连接后,才启用上述20/minute限制

丢弃陌生的TCP响应包,防止反弹式攻击

1
2
iptables -A INPUT -m state --state NEW -p tcp ! --syn -j DROP
iptables -A FORWARD -m state --state NEW -p tcp --syn -j DROP

服务器及系统

ssh连接:ssh <-p 端口号> [username]@[ip]

scp远程拷贝: scp [文件路径] [username]@[ip]:[存放路径]

显示最近登录的5个账号: last -n 5 | awk ‘{print $1}’

显示/etc/passwd的账户: cat /etc/passwd | awk -F ‘:’ ‘{print $1}’

查看uid为0的账号: awk -F: ‘{if($3==0)print $1}’ /etc/passwd

查找777权限的php文件:find . -name “*.php” -perm 4777

查看进程: ps aux | grep [pid或进程名]

查看已建立的网络连接及进程: netstart -antulp | grep EST

查看指定端口被哪个进程占用:

  • lsof -i:[端口号]
  • netstat -tunlp | grep [端口号]

杀死进程:

  • kill [pid]
  • killall [进程名]
  • pkill [进程名]
  • pkill -u[用户名] #结束该用户(非root)的所有进程

封杀IP或IP段: iptables -I INPUT -s source_ip[/mask] -j DROP

禁止从某个主机ssh远程到本机: iptable -t filter -A INPUT -s source_ip[/mask] -p tcp –dport 22 -j DROP

定时任务,在固定的时间间隔执行指定的系统指令或shell script:

  • crontab [-u user] file_name
  • crontab [-u user] [-e |-l| -r]

检测所有的 tcp 连接数量及状态: netstat -ant|awk|grep|sed -e -e|sort|uniq -c|sort -rn

查看页面访问排名前10的IP: cat /var/log/apache2/access.log|cut -f1 -d|sort|uniq -c|sort -k -r|head -

查看页面访问排名前10的 url:cat /var/log/apache2/access.log|cut -f4 -d|sort|uniq -c|sort -k -r|head -

不允许任何人修改 www 目录下的文件: chattr -R +i /var/www/html

解除不允许修改的属性:chattr -R -i /var/www/html

抓取流量: tcpdump -s 0 -w tcplog.pcap port 9999

加固脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
#Allow youself Ping other hosts , prohibit others Ping you
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT
#Close all INPUT FORWARD OUTPUT, just open some ports
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#Open sshiptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
#Open port 80iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#Open multiport
#iptables -A INPUT -p tcp -m multiport --dport 22,80,8080,8081 -j ACCEPT
#Control IP connection
#The maximum number of connections for a single IP is 30iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
#A single IP allows up to 15 new connections in 60 seconds
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 15 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
#Prevent port reuse
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
#Filter abnormal packets
iptables -A INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK,FIN SYN -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
#Prevent DoS attacks
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
#Discard unfamiliar TCP response packs to prevent rebound attacks
iptables -A INPUT -m state --state NEW -p tcp ! --syn -j DROP
iptables -A FORWARD -m state --state NEW -p tcp --syn -j DROP
AbelChe wechat
扫码加微信
Donate here!!!
0%