说明:这俩都是防火墙,有些系统是默认安装了其中一个,另一个要手动安装,有一个够用了,两个也不能共存,共存的话最好关掉一个保留一个
以下说的都是一些基本的防火墙知识,参考的博客
安装Firewalld 防火墙默认public规则路径/etc/firewalld/zones/public.xml
yum -y install firewall*
启用Firewalld
systemctl enable firewalld
systemctl start firewalld
firewalld命令行配置
add:创建
get:查看
query:查询
set:设置
change:修改
remove:移除
permanent:永久生效
reload :重新加载防火墙
示例:
firewall-cmd --get-zones:查看当前已存在的区域
firewall-cmd --get-active-zones:查看当前活跃的区域
firewall-cmd --get-default-zone:查看当前防火墙的默认区域
firewall-cmd --list-services --zone=home:查看home区域下的可用服务
firewall-cmd --set-default-zone=home:设置默认区域为home
firewall-cmd --change-zone=work:修改当前连接区域
添加常用端口放行
firewall-cmd --permanent --zone=public --add-port=20/tcp
firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=888/tcp
firewall-cmd --permanent --zone=public --add-port=30000-40000/tcp
查看端口是否开放:firewall-cmd --query-port=3306/tcp
查看有哪些端口是开启的:firewall-cmd --list-port
重载Firewalld配置:firewall-cmd --reload
systemctl get-default #查看当前系统启动级别
systemctl isolate runlevel3.target #临时切换到第三级运行
systemctl isolate runlevel5.target #临时切换至第五级运行
systemctl set-default multi-user.target #设置默认第三启动级别
systemctl set-default graphical.target #设置默认第五启动级别
systemctl list-units --types=service --all|grep httpd
systemctl is-active httpd #查看httpd服务是否运行
systemctl is-enabled httpd #查看httpd服务是否开机启动
systemctl mask firewalld #服务冲突解决办法,虽然起来了,但是软链接到/dev/null中的,所以相当于什么都没干 屏蔽服务,使之无法手动或自动启动
systemctl unmask firewalld #去掉屏蔽
systemctl enable httpd #设置开机自启
systemctl disable httpd #关闭开机自启,顺便还可以查看服务对应的server在哪个目录,然后将此服务加入/etc/init.d/里面,加两行注释在文件头
vi /etc/rc.d/init.d/httpd,添加以下注释信息:
# chkconfig: 345 85 15
# description: Activates/Deactivates Apache Web Server
第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关`闭序号(15)。
chkconfig --add httpd #这个时候就成功了
在机器上设置允许或者禁止域机器通过ssh访问,涉及知识点,防火墙的富规则rich-rule
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="172.24.8.0/24" service name="ssh" accept'
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="172.13.8.0/24" service name="ssh" reject'
在机器上设置允许或者禁止域机器访问
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.2.2" accept'
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.2.2" reject'
端口转发(两台机器之间)
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="1:2:3:4:6::" forward-port to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"'
端口转发(同一台机器一个端口到另一个端口)
#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="1.1.1.1/24" forward-port to-port="80" protocol="tcp" port="5423"'
iptables防火墙:
安装防火墙:yum -y install iptables iptables-services
iptables防火墙配置文件路径:/etc/sysconfig/iptables
规则链一般常见的有:INPUT(进来的数据包用此规则)
OUTPUT(出去的数据包用此规则)
FORWARD(转发的数据包用此规则)
防火墙处理数据包的四种方式:ACCEPT(允许数据包通过)
REJECT(拒绝通过,必要时会返回拒绝信息)
DROP(直接丢弃,不响应)
LOG(在/var/log/messages)文件中记录日志信息,然后将数据包传递给下一条规则
--dport 指定目标TCP/IP端口 如 –dport 80
--sport 指定源TCP/IP端口 如 –sport 80
-p tcp 指定协议为tcp
-p icmp 指定协议为ICMP
-p udp 指定协议为UDP
-j DROP 拒绝
-j ACCEPT 允许
-j REJECT 拒绝并向发出消息的计算机发一个消息
-j LOG 在/var/log/messages中登记分组匹配的记录
-m mac –mac 绑定MAC地址
-m limit –limit 1/s 1/m 设置时间策列
-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
-s ! 10.10.0.0 指定源地址以外的
iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I 将在指定链的指定编号位置插入一个规则
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链
iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)
查看防火墙规则:iptables -L -n
添加防火墙规则:iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
说明:-I 和 -A都是添加规则,-I表示在指定位置添加 -A表示直接加到尾部,对于整体规则来说影响不大
添加完规则之后执行:iptables save保存规则,此时你的规则可在/etc/sysconfig/iptables里面查看
删除防火墙规则:先查看规则在第几条:iptables -L INPUT --line-numbers -n 再执行 :iptables -D INPUT 序号
删除完规则之后执行:iptables save保存规则,此时/etc/sysconfig/iptables里面的规则也会被清掉一条
禁止22端口:iptables -A INPUT -p tcp --dport 22 -j REJECT
允许某台机器通过22端口链接:iptables -A INPUT -s 192.168.1.1 -p tcp --dport 22 -j REJECT
允许除了某台机器外的其他机器都能通过22端口连接:iptables -A INPUT -s ! 192.168.1.1 -p tcp --dport 22 -j REJECT
允许某个网段的机器通过22端口连接:iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j REJECT
DROP非法链接:iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP