iptables

iptables是linux自带的防火墙,用起来很方便,但是debian使用的时候,会引发一些列错误,如--dport它会认为是unknown optionhttps://unix.stackexchange.com/questions/548819/iptables-returning-unknown-option-dport-error

iptables 简单粗暴,命令一经配置不用重启或其他操作,立即生效, 类似还有ip6tables

你可以先在terminal里做测试,再将配置写在/etc/rc.local里,开机自动生效

4表5链

  • 4表:filter,nat,mangle,raw
  • 5链: INPUT,OUTPUT,PREROUTING,POSTROUTING,FORWARD

filter起筛选作用,就是让哪个端口开放,让哪个ip进来,让哪个ip不进来;nat做转发和端口映射;后面2个用的不多,mangle做硬件用的

增删改查

# 增  
# -A, --append chain rule-specification
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT (p: protocol, dprot: destination port)
#  -I, --insert chain [rulenum] rule-specification
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT (默认增加到第一行)
# 删 
# -D, --delete chain rule-specification
# -D, --delete chain rulenum
sudo iptables -D INPUT 1 (删除filter表中INPUT链中的第一条配置)
# 改 -R, --replace chain rulenum rule-specification
sudo iptables -R INPUT 7  -p tcp --dport 80 -j ACCEPT 
sudo iptables -R INPUT 7  -p tcp --dport 80 -j DROP
sudo iptables -R INPUT 7  -p tcp --dport 80 -j REJECT
# 查  -L, --list [chain] iptables的匹配机制是从上到下依次执行
sudo iptables -L # 等价于 sudo iptables -t filter -L (默认指定的是filter表)

更多操作说明请使用man iptables

配置iptables和Fail2Ban

Ubuntu默认安装是没有开启任何防火墙的,为了服务器的安全,建议大家安装启用防火墙设置,这里推荐使用iptables防火墙.如果mysql启本地使用,可以不用打开3306端口.

suo apt-get install iptables

增强安全等级,imooc有专门的讲师在讲这个,推荐看下这个博客

升级ubuntu

sudo apt-get && sudo apt-get upgrade
输入对应的登录账号密码

清空所有的防火墙规则

sudo iptables -F

配置防火墙,切记英文输入法(就连逗号都能报错)

sudo vi /etc/iptables.up.rules
*filter
# allow all connections
# 允许所有建立起来的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow out traffic
# 允许所有出去的流量
-A OUTPUT -j ACCEPT

# allow http https
# 允许https这种协议下的连接,允许80端口流量的进出
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp --dport 2015 -j ACCEPT

# allow ssh port login
# 开启39999端口,如果没修改端口,则这里是22
# 允许被ping到,方便检测服务器是否被宕机,或者某个机房的网络不通,光缆被拉断等
-A INPUT -p tcp -m state --state NEW --dport 39999 -j ACCEPT

# allow shadowsocks
-A INPUT -p tcp -m state --state NEW --dport 10086 -j ACCEPT

# allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# drop incoming sensitive connections
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
# 当某台服务器在60s访问超过150,就认为是恶意的,拦截掉
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP

# log denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7

# reject all other inbound
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

保存,退出

告诉iptables配置文件在哪里

sudo iptables-restore < /etc/iptables.up.rules

开启防火墙

ubuntu上查看防火墙有没激活
sudo ufw status
如果没激活,则要激活
sudo ufw enable
y
sudo ufw status

创建shell脚本,让开机自动启动

实际生活中也有停机的情况,停机则防火墙就关了

sudo vi /etc/network/if-up.d/iptables.up.rules

#!/bin/sh告诉linux这是一个可执行的脚本

#!/bin/sh
iptables-restore /etc/iptables.up.rules

保存退出

给权限

sudo chmod +x /etc/network/if-up.d/iptables.up.rules

好了这样就配置好了iptables

现在来说说Fail2Ban

sudo apt-get install fail2ban
y
打开配置为见
sudo vi /etc/fail2ban/jail.conf
找到bantime 设置为3600
destemail 改成自己的邮箱
action = %(action_mw)s
顺便可以看看ssh的配置,当然不用改
保存,退出

查看fail2ban有没有运行

sudo service fail2ban status
停止
sudo service fail2ban stop
开启
sudo service fail2ban start

results matching ""

    No results matching ""