Tools
首页
画图
音乐
采集
记事
博客
实验室
登录
lypeng
146
文章
11
分类
46
记事
分类
生活-[23]
Linux-[24]
前端-[9]
数据库-[16]
PHP-[31]
git-[7]
其他-[6]
python-[20]
算法-[4]
React-Native-[4]
中草药-[2]
广告位1
广告位2
首页
/ Linux
返回列表
防火墙相关学习记录
阅读:971
发布:2018-02-09
作者:lypeng
# linux防火墙简单整理 近期把防火墙相关的相关东西整理下,弥补一直想深入学习的想法,记录一些常用命令,平时操作基本就够用了~ 学习目的主要是发现服务器上有很多人,在尝试ssh登录,想把IP通过防火墙禁止了,加强安全,找到个工具fail2ban,尝试后,感觉还可以,secure日志文件比之前小多了 ---- ## ubuntu命令 一般两种方式:ufw与iptables. |名称|注释| |---|---| |iptables | 防火墙规则的数据库,是系统实际使用的,操作iptables即是操作这个数据库的内容| |ufw | 简易化操作iptables的命令行工具| |gufw | 图形化的ufw工具,需要安装 apt-get install gufw | ## centos命令 一般用 iptables 和 firewalld(centos7以后系统自带防火墙命令),不过依然可以禁用firewalld而使用iptables ----- ## ufw管理方式 ufw默认是关闭的,一些常用操作命令如下: ```bash ufw status; #查看状态 ufw enable; #启用ufw ufw default deny; #先拒绝所有,然后需要哪个开放哪个 ufw allow 80/tcp; #允许80端口 ufw delete allow 80/tcp; #删除允许80端口 ufw disable; #禁用 ufw reload #重载 ufw allow from 123.44.55.66 #允许此IP访问所有的本机端口 ufw deny from 123.44.55.66 #禁止此IP访问所有的本机端口 ufw deny smtp #禁止外部访问smtp服务 ufw delete allow smtp #删除上面建立的某条规则 ``` 一般查看状态的时候,会有两条记录,IPv4与v6,编辑/etc/default/ufw,可以关闭IPv6 > linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。 > 但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。 ## iptables管理方式 //禁用firewalld,如果是centos7之前的版本请忽略此操作! `systemctl stop firewalld` //停止服务 `systemctl mask firewalld` //mask是屏蔽的意思,屏蔽服务启动 `yum install iptables-services` //安装iptables,如果有请忽略 相关启动命令有下面这些,选择执行: ```bash # 启用与禁用服务 chkconfig iptables on/off/list systemctl start iptables //开启服务 systemctl enable iptables //启用iptables # 启动停止服务等 /etc/init.d/iptables [status|start|restart|stop|reload] service iptables stop/start/status/restart/reload systemctl [status|start|restart|stop|reload] iptables # 其他一些操作 systemctl is-enabled iptables #查看服务是否开机启动 systemctl list-unit-files|grep enabled #查看已启动的服务列表 systemctl –failed #查看启动失败的服务列表 ``` 说明:启用服务就是在当前“runlevel”的配置文件/etc/systemd/system/multi-user.target.wants/里,建立/usr/lib/systemd/system里面对应服务配置文件的软链接;禁用服务就是删除此软链接,添加服务就是添加软连接。如下: ```bash systemctl unmask firewalld #显示服务,等价于 cd /etc/systemd/system/multi-user.target.wants/ && ln -s firewalld.service /lib/systemd/system/firewalld.service #屏蔽服务(让它不能启动)下面三个等价 systemctl mask firewalld cd /lib/systemd/system/ && ln -s /dev/null /lib/systemd/system/firewalld.service rm /lib/systemd/system/firewalld.service #删除 ```    iptables命令如下: iptables -t tablename -[AIDLFPR] [PREROUTING|INPUT|FORWARD|OUTPUT|POSTROUTING] [规则,匹配条件] -j [DROP|ACCEPT|REJECT] -t可以省略,默认是filter表,这里iptables共有5张表,filter,nat,mangle,raw,securiry,其他表因为没怎么操作,理解的不是很透彻~ IAsj各选项含义: -S list rules -I insert 可以加一个插入位置数字,默认1: iptables -I INPUT 5 -s 1.2.3.4 -j DROP -A append 末尾追加 -D delete -L list -F flush 清空 -P default 默认规则 -R replace 替换 -n domain2ip -p protocol 协议 -s 源地址 -d 目标地址 -m 模块 -j 处理方式 禁止IP iptables -A INPUT -s 123.44.55.66 -j DROP iptables -I INPUT -p tcp --dport 80 -j ACCEPT 通过lastb发现有几个ip总是试图登录,可以使用防火墙把它屏蔽掉。 查看恶意ip试图登录次数: lastb | awk ‘{ print $3}’ | sort | uniq -c | sort -n 命令如下: iptables -A INPUT -s 1.2.3.4 -j DROP 但是这样一个个写太慢了,可以用fail2ban禁用,过程见底部 ## firewall管理方式 ### 安装firewalld(centos7以上系统自带,不需要安装) yum install firewalld firewall-config //不存在时需要安装 firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址) ### 运行、停止、禁用firewalld ``` 查看状态:# systemctl status firewalld 启动:# systemctl start firewalld 停止:# systemctl stop firewalld 启用:# systemctl enable firewalld(开机自启) 禁用:# systemctl disable firewalld ``` ### 查看防火墙规则 `firewall-cmd --list-all` ### 查询、开放、关闭端口 ``` firewall-cmd --query-port=8080/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --zone=public --add-port=100-500/tcp firewall-cmd --permanent --remove-port=8080/tcp ``` ### 禁止IP `firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="123.44.55.66" drop'` 上面这句这么理解 add-rich-rule 增加一个复杂规则 source address 源地址(中间不加个下划线,很容易误解) drop 直接丢弃 reject 会返回服务器信息(看到网上的解释:别人打电话过来,drop直接挂断,reject接听委婉挂断) ### 重载防火墙(***修改配置后要重载防火墙生效***) `firewall-cmd --reload` ### 参数解释 1. firwall-cmd:是Linux提供的操作firewall的一个工具; 2. --permanent:表示设置为持久; 3. --add-port:标识添加的端口; 4. zone概念: > 系统默认存在以下区域: drop:默认丢弃所有包 block:拒绝所有外部连接,允许内部发起的连接 public:指定外部连接可以进入 external:这个不太明白,功能上和上面相同,允许指定的外部连接 dmz:和硬件防火墙一样,受限制的公共连接可以进入 work:工作区,概念和workgoup一样,也是指定的外部连接允许 home:类似家庭组 internal:信任所有连接 常用的是public公共区,其他区有什么作用不懂~ ## fail2ban监控secure日志文件,禁止IP过程简单记录 ### 环境:centos 7.3 + iptables ### download: https://github.com/fail2ban/fail2ban/archive/0.9.4.tar.gz ### 过程记录 ```bash tar -zxvf fail2ban-0.9.4.tar.gz mv fail2ban-0.9.4 /usr/local/fail2ban cd /usr/local/fail2ban python setup.py install cd /etc/fail2ban cp jail.conf jail.local vim jail.d/sshd.local ### 内容如下 [sshd] enabled = true port = ssh logpath = /var/log/secure maxretry = 3 bantime = 600 findtime = 3600 ### ========== grep chkconfig ./* -R --color cp /usr/local/fail2ban/files/redhat-initd /etc/init.d/fail2ban /etc/init.d/fail2ban start fail2ban-client status sshd iptables -L -n ```
------本文结束
感谢阅读------
上一篇:
Ubuntu下提示/usr/bin/env: node: 没有那个文件或目录
下一篇:
docker学习(一)初步认识与基础操作命令