Linux防火墙及IP配置

Linux防火墙配置文件位置:/etc/sysconfig/iptables

常用配置

  • 允许所有IP访问某个端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 27269 -j ACCEPT

  • 配置允许部分IP访问某个端口
1
2
3
-A INPUT -s 10.0.4.0/24 -p tcp --dport 6379 -j ACCEPT
-A INPUT -s 10.0.4.0/24 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -s 10.0.4.0/24 -p udp -m udp --dport 53 -j ACCEPT
  • 配置允许ping,如果不允许ping,直接将下面的配置去掉即可

-A INPUT -p icmp -j ACCEPT

  • 其它参数

-A:指定链名
-p:指定协议类型
-d:指定目标地址,常用于一个Linux服务器有多个IP的情况,利用此参数可以限制远程服务器能访问本Linux的哪个地址
–dport:指定目标端口(destination port 目的端口)
–sport:指定源端口(source port 源端口)
-j:指定动作类型
如果要禁止访问,则将ACCEPT修改为DROP

常用操作

  • 即时生效,重启后复原

服务启动指令:service iptables start
服务重启指令:service iptables restart
服务关闭指令:service iptables stop

  • 永久性生效,重启后不会复原

开启: chkconfig iptables on
关闭: chkconfig iptables off

  • 设置防火墙白名单
1
2
3
4
5
6
7
8
9
vim /etc/sysconfig/iptables
-N whitelist
-A whitelist -s 10.202.106.1 -j ACCEPT
-A whitelist -s 10.202.106.2 -j ACCEPT
-A whitelist -s 10.202.106.3 -j ACCEPT
-A whitelist -s 10.202.106.4 -j ACCEPT
-A whitelist -s 10.202.106.5 -j ACCEPT
-A whitelist -s 10.202.106.6 -j ACCEPT
-A whitelist -s 10.202.106.7 -j ACCEPT

防火墙防御

服务器遭受到大量的大量SYN_RECV,80端号占死,网站打不开,没有硬防,解决方法

  • 加入如下配置
1
2
3
4
5
6
7
8
9
10
11
sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
sysctl -w net.ipv4.tcp_syn_retries=1 #降低syn重试次数
sysctl -w net.ipv4.tcp_max_syn_backlog=6000 #最大半连接数
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0 #不接受重定向的icmp數據包
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=60
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #禁止ICMP
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP禁止广播
  • 限制单位时间内连接数
1
2
3
4
5
6
7
iptables -N syn-flood
iptables -A FORWARD -p tcp --syn -j syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -p tcp --syn -m limit --limit 3/s --limit-burst 1 -j ACCEP
iptables -A syn-flood -j DROP
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
  • 如果还是不行
1
2
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEP

如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问

文章目录
  1. 1. 常用配置
  2. 2. 常用操作
  3. 3. 防火墙防御