Linux【7】-网络管理2-防火墙与端口(iptables和firewalld)

Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令:

lsof -i tcp:80

netstat -nupl  (UDP类型的端口)
netstat -ntpl  (TCP类型的端口)

一、firewalld

Cetos7 的版本一般用firewalld

获取 firewalld 状态

firewall-cmd --state

此举返回 firewalld 的状态,没有任何输出。可以使用以下方式获得状态输出:

firewall-cmd --state && echo "Running" || echo "Not running"

查看防火墙状态

systemctl status firewalld.service

启动|关闭|重新启动 防火墙

systemctl [start|stop|restart] firewalld.service 

1.开放端口:

#portmap:111 #nfsd:2049 #rquotad:875 #mountd:892 #lockd:32803/tcp 32769 /udp

firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp--add-port=875/tcp --add-port=875/udp --add-port=892/tcp --add-port=892/udp--add-port=32803/tcp --add-port=32769/udp --permanent

2.关闭端口

如果哪天要移除的话:

firewall-cmd --zone=public --remove-port=111/tcp--remove-port=111/udp --remove-port=2049/tcp --remove-port=2049/udp --remove-port=875/tcp--remove-port=875/udp --remove-port=892/tcp --remove-port=892/udp --remove-port=32803/tcp--remove-port=32769/udp --permanent

在不改变状态的条件下重新加载防火墙:

firewall-cmd --reload

3.查看端口是否开放

查询端口号80 是否开启:

firewall-cmd --query-port=80/tcp

列出全部启用的区域的特性

firewall-cmd --list-all-zones

二、iptables

centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:

systemctl stop firewalld.service && systemctl disable firewalld.service
systemctl start firewalld.service && systemctl enable firewalld.service

如果想要改用iptables的话,则需要安装

yum install iptables-services 
systemctl stop iptables && systemctl disable iptables
systemctl start iptables && systemctl enable iptables

关闭iptables服务

/etc/init.d/iptables stop  
services iptables stop

1、开启端口(以80端口为例)

方法一:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT   写入修改
/etc/init.d/iptables save   保存修改
service iptables restart    重启防火墙,修改生效

方法二:

vi /etc/sysconfig/iptables  打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT   重启防火墙,修改完成

2、关闭端口

方法一:

/sbin/iptables -I INPUT -p tcp --dport 80 -j DROP   写入修改
/etc/init.d/iptables save   保存修改
service iptables restart    重启防火墙,修改生效

方法二:

vi /etc/sysconfig/iptables  打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP   重启防火墙,修改完成

3、查看端口状态

  /etc/init.d/iptables status

有时启动应用时会发现端口已经被占用,或者是感觉有些端口自己没有使用却发现是打开的。这时我们希望知道是哪个应用/进程在使用该端口。

四、案例

1.检查端口被哪个进程占用

netstat -lnp|grep 88   #88请换为你的apache需要的端口,如:80

lsof -i:80

netstat -anp|grep 80

2.查看进程的详细信息

ps 1777  # 1777代表进程编号

3.杀掉进程,重新启动apache

kill -9 1777        #杀掉编号为1777的进程(请根据实际情况输入)
service httpd start #启动apache

其他:

参考资料:

http://blog.csdn.net/carechere/article/details/52288058

https://www.cnblogs.com/blueskyli/p/7218570.html

http://blog.csdn.net/steveguoshao/article/details/45999645

个人公众号,比较懒,很少更新,可以在上面提问题:

更多精彩,请移步公众号阅读:

Sam avatar
About Sam
专注生物信息 专注转化医学