防火墙2和tcpwarp
####命令管理模式#####
###################
firewall-cmd --state ##查看firewall服务当前状态
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管控的所有服务
firewall-cmd --list-all-zones ##列出所有域
firewall-cmd --set-default-zone=trusted ##设置默认域为trusted
firewall-cmd --get-services ##查看firewall管控的所有服务
所有服务的信息控制:/usr/lib/firewalld/services/*.xml
客户端1:192.168.0.120 gateway=192.168.0.220
客户端2:172.25.254.20
服务端: eth0 172.25.254.220
eth1 192.168.0.220
yum install httpd
实验:
刚开始,因为火墙没有设定,所以都无法访问http
firewall-cmd --change-interface=eth1 --zone=trusted ##把eth1加到trusred
firewall-cmd --get-active-zones
可以访问
firewall-cmd --change-interface=eth1 --zone=public ##把eth1加到public(复原)
firewall-cmd --set-default-zone=trusted ##把默认域改成trusted
可以访问
firewall-cmd --set-default-zone=public ##把默认域改成public(复原)
firewall-cmd --add-source=172.25.254.0/24 --zone=trusted
可以访问
测试:用客户端1访问
firewall-cmd --add-source=192.168.0.0/24 --zone=trusted ##使防火墙可以通过192.168.0.0网段
vim /etc/httpd/conf/httpd.conf
把80端口改成8080
重启httpd服务
firewall-cmd --list-all
这时查看http在列表中
但是该客户端还是无法访问192.168.0.120:8080
vim /usr/lib/firewalld/services/http.xml
80改成8080(实际上,在火墙中添加服务就是添加该服务的端口。在这里我们改变了httpd服务的端口)
重启firewalld服务
firewall-cmd --zone=public --add-service=http
之后即可访问192.168.0.120:8080,成功
现在vim /usr/lib/firewalld/services/http.xml
把8080改回80重启火墙服务
firewall-cmd --zone=public --add-port=8080/tcp(使火墙可以通过8080端口)
在改客户端同样可以访问192.168.0.120:8080
firewall-cmd --permanent --remove-service=ssh ##永久关闭火墙的ssh服务(permanent永久)
用该客户端执行ssh [email protected]仍然可以连上,并且ls可以查看其中的东西
firewall-cmd --add-source=172.25.254.120 --zone=trusted
重新加载后,该客户端无法ssh新添加的172.25.254.120,说明之前的永久移除生效,但是正在连接的不会中断并且仍能查看其中的东西。
这样连接的那个shell卡住,无法运行。
规则
firewall-cmd --direct --get-all-rules ##查看规则(因为还没写,所以没有)
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.0.220 -p tcp --dport 80 -j REJECT ##添加了一条规则,使192.168.0.220通过http访问的时候会被拒绝
将之前的操作还原(8080都改成80)
systemctl restart httpd
firewall-cmd --add-service=http ##给火墙添加http
查看确定以添加,然后分别用真机和虚拟机尝试,虚拟机不能访问,真机可以访问,与预计一致
firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -s 192.168.0.220 -p tcp --dport 80 -j REJECT ##删掉之前所写的规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 192.168.0.220 -p tcp --dport 80 -j REJECT ##加入新的规则,除了192.168.0.220能通过http,其他都被拒绝
再次用真机和虚拟机分别访问,虚拟机可以,真机不可以,与预计一致
端口转发
在服务端
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.3
firewall-cmd --reload
firewall-cmd --list-all
这样用192.168.0.220 ssh [email protected] -X,连上后ifconfig查看ip是3,成功
地址伪装
firewall-cmd --permanent --remove-masquerade ##关闭伪装
firewall-cmd --permanent --zone=public --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.3 ##还原上一步做的
firewall-cmd --add-rich-rule='rule family=ipv4 masquerade' ##地址伪装(伪装成中转站地址,原来只能ping不能ssh,设定这个就能ssh了,并且产生伪装)
用192.168.0.220 ssh [email protected] 可以连上,并且w查看是中转站ip
tcpwarp
保护加载了tcpwarp进程服务安全
ldd /usr/sbin/sshd ##查看ssh服务是否有tcpwarp进程
如果有这个进程,这个服务就可以受到tcpwarp保护
以下两个都是即改即生效
vim /etc/hosts.deny
ALL:ALL
这样所有人都无法ssh本机
vim /etc/hosts.allow
sshd:172.25.254. ##所有的人都可以ssh本机
sshd:172.25.254. EXCEPT 172.25.254.20 ##除了20,其他人都可以ssh本机
sshd:172.25.254. :spawn echo `date` from %c to %s | mail -s warning root ##邮件监控
sshd:172.25.254. :spawn echo `date` from %c to %s > /dev/pts/2 ##实时监控(ps查看设备,这里设备是pts2)
sshd:172.25.254. :spawn echo `date` from %c to %s >> /var/log/messages ##日志监控