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

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

lsof -i tcp:80

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

一、firewalld ( Cetos7 的版本一般用firewalld )

1.1 firewalld状态

获取 firewalld 状态

firewall-cmd --state

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

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

查看防火墙状态

systemctl status firewalld.service

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

systemctl start firewalld.service 

systemctl stop firewalld.service 

systemctl restart firewalld.service 

开机自动启动

关闭开机自启动

systemctl disable firewalld.service

开启开机启动:

systemctl enable firewalld.service

1.2 端口的管理

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

2.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.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   重启防火墙,修改完成

2.3 查看端口状态

  /etc/init.d/iptables status

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

四、案例

4.1 检查端口被哪个进程占用

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

lsof -i:80

netstat -anp|grep 80

查看都有哪些应用在使用网络:

netstat -lantp | grep -i stab | awk -F/ '{print $2 $3}' | sort | uniq

4.2 查看进程的详细信息

ps 1777  # 1777代表进程编号

4.3 杀掉进程,重新启动apache

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

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn