防火墙
防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户的进入。
三大表五条链
filter: INPUT, OUTPUT, FORWARD
nat: INPUT, OUTPUT, PREROUTING, POSTROUTING
mangle:INPUT, OUTPUT, PREROUTING, POSTROUTING, FORWARD
INPUT:进来的数据包应用此规则链中的策略
OUTPUT:外出的数据包应用此规则链中的策略
FORWARD:转发数据包应用此规则中的策略
PREROUTING:对数据包作路由选择前应用此链中的策略(所有的数据包进来的时候都有这个链处理)
POSTROUTING:对数据包作路由选择后应用此链中的策略(所有的数据包出来的时候都由这个链处理)
firewall域

管理方式
firewalld和iptables
yum install iptables-services.x86_64
使用其中一个要把另一个关闭
firewall
systemctl disable iptables
systemctl mask iptables ##开启时,unmask
systemctl start firewall
firewall-cmd --state ##查看火墙状态

firewall-cmd --get-active-zones ##查看当前活跃的域

firewall-cmd --get-default-zone ##查看默认域

firewall-cmd --get-zones ##查看所有的域

firewall-cmd --zone=public --list-all ##查看public域提供的所有服务

firewall-cmd --get-services ##查看火墙管理的服务

firewall-cmd --list-all-zones ##查看各种域的管理范围

firewall-cmd --set-default-zone=dmz ##设置火墙的域

firewall-config ##打开火墙图形管理界面

firewall-cmd --zone=trusted --add-source=172.25.254.68 ##添加
可以用firewall-cmd --get-active-zones查看有没有写入

firewall-cmd --permanent --zone=trusted ##删除(–permanent表示永久)
–remove-source=172.25.254.68

firewall-cmd --permanent --zone=internal ##添加(如果接口在别出就添加不了,只能修改)
–add-interface=eth0
firewall-cmd --permanent --zone=internal ##修改
–change-interface=eth0
firewall-cmd --permanent --zone=internal ##删除
–remove-interface=eth0

注意:接口原本在public上,所以不能添加到internal上,出现Error报错,只能修改到internal上
firewall-cmd --permanent --zone=public --add- ##添加服务
service=smtp
firewall-cmd --permanent --zone=public ##删除服务
–remove-service=smtp

firewall-cmd --zone=public --list-ports ##列出public域允许的服务
firewall-cmd --permanent --zone=public --add- ##添加端口
port=8080/tcp
firewall-cmd --permanent --zone=public ##移除端口
–remove-port=8080/tcp

firewall-cmd --reload ##重新加载 ssh为例子,已经连接的不会断开
firefwall-cmd --complete-reload ##重新加载,已经连接的也会断开
火墙ssh服务关闭(如果ssh服务没关,可以访问)
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.42 -j ACCEPT #添加只有42可以使用ssh


firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.42 -j ACCEPT ##移除

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 !-s 172.25.254.42 -j ACCEPT ##添加只有42不可以使用ssh


firewall-cmd --direct --get-all-rules ##查看所有规则
–direct 选项在运行时间里增加或者移除链
firewall的伪装和转发
a主机有两块网卡172.25.254.168和1.1.1.168,b主机有一块网卡1.1.1.240
b主机连不通172网段,设置网关为1.1.1.168,a主机设置伪装和网络内核,可以连通172网段
b主机ssh root@172.25.254.68
w -i 查看,发现是172.25.254.168
68ssh168,是进入真实的140而不是进入1.1.1.240
在168上做个转发
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.240
firewall-cmd --reload
此时68ssh168,是进入1.1.1.240

测试:
没有做转发时
b主机ssh172网段的68

在a主机w -i查看连接自己的是172.25.254.168(其实是1.1.1.240)
在a主机ssh172.25.254.168

进入的是172.25.254.168,而不是1.1.1.240
做转发后

进入的是1.1.1.240
iptables
iptables-t ##指定表名称-n ##不做解析-L ##列出指定表中的策略-A ##增加策略(在最后)-p ##网络协议--dport ##端口-s ##数据来源-j ##动作ACCEPT ##允许REJECT ##拒绝DROP ##丢弃-N ##增加链-E ##修改链名称-X ##删除链-D ##删除指定策略-I ##插入(默认到第一个,后面跟多少数字表示到第几个)-R ##修改策略-P ##修改默认策略
iptables -t filter -nL ##查看filter表中的策略
iptables -F ##刷掉filter表中的所有策略,当没有用-t指定表的名称时默认是filter
service iptables save ##保存当前策略

iptables -A INPUT -i lo -j ACCEPT ##允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##允许访问22端口
iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源

iptables -N redhat ##增加链redhat

iptables -E redhat we ##改变链名称

iptables -X we ##删除we链

iptables -D INPUT 2 ##删除INPUT链中的第二条策略

iptables -I INPUT 1 -p tcp --dport 80 -j REJECT ##插入策略到INPUT中的第一条

iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略

iptables -nL
iptables -F ##刷新
service iptables save ##保存
iptables -P INPUT DROP ##把INPUT链的状态变为DROP,别的机子ssh时一直闪没有反映


iptables -P INPUT ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT ##拒绝从22端口进入,别的机子ssh时会被refused


iptables的伪装和转发
a主机有两块网卡172.25.254.168和1.1.1.168,b主机有一块网卡1.1.1.240
b主机连不通172网段,设置网关为1.1.1.168,a主机设置伪装
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.168

b主机可以连通172网段
b主机ssh root@172.25.254.68
w -i 查看,发现是172.25.254.168
68ssh168,是进入真实的168而不是进入1.1.1.240
在168上做个转发
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.240

此时68ssh168,是进入1.1.1.240
允许服务
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
80 53 139 3260
iptables -A INPUT -m state --state NEW -j REJECT
测试
139 smbclient //172.25.254.140/haha -U student
3260 iscsiadm -m discovery -t st -p 172.25.254.140
查看端口
cat /etc/services | grep iscsi


















