一些服务器设备必须暴露公网IP,很容易遭到攻击。配置硬件或软件防火墙,只开放可以访问的端口,拒绝其他不合法的IP的请求,包括端口扫描。甚至拒绝ping。将大大提升服务器的安全。
基本概念
典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。
通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:
iptables [-t table] command [match] [target]
基本配置方案
1、最便捷最救急的方案
修改 /etc/sysconfig/iptables获得最基本的防火墙配置。把/etc/sysconfig/iptables修改为如下:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
意思是先拒绝所有INPUT和FORWARD,即输入和跳转,放开所有的OUTPUT,即往外发送数据时不做任何拦截,然后放开22、80、21、23端口。如果还需要对外开放数据库的访问,就把数据库的端口打开。
2、高级的个性化配置方案
利用iptables进行配置… 待续…
防火墙服务管理
关闭和启动防火墙服务:
1) 永久性生效,Linux系统重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,Linux系统重启后复原
开启: service iptables start
关闭: service iptables stop
3)查看当前防火墙的状态:
service iptables status
或者
iptables -L
4)保存配置让规则随系统启动
service iptables save
使用iptables修改防火墙配置如果没有保存,则在下次服务器重启的时候会丢失,所以需要这个命令保存。
5)配置文件
/etc/sysconfig/iptables
默认如下:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
修改SHH端口号
rpm -qa|grep ssh // 确认ssh有被安装
cd /etc/ssh
vi sshd_config
进入vi后键入:/Port 进行查找,查找到之后把光标移到这一行,键入 yy,然后Shift+p进行复制,出现如下两行,把其中一行的#号去掉,然后修改新端口号。
#Port 22
#Port 22
譬如修改为22123,设置好之后如下图,wq保存退出。
/etc/init.d/sshd restart // 重启ssh
!注意自己的防火墙配置,端口变更后,防火墙也得变更。
最后自己的ssh客户端就可以试试新端口的连接了。