Linux防火墙iptables限制几个特定ip才能访问服务器。

Linux防火墙iptables限制几个特定ip才能访问服务器。,第1张

linux下要使用iptables限制只有指定的ip才能访问本机则需要先设置一个默认的规则

iptables有默认的规则,它可以适用于所有的访问

因为只有指定或特定的ip地址才能访问本机

所以可以将默认的规则设置为所有访问全部阻止(当然这里需要注意下,如果你要设置的机器是在远端,比如vps则需要注意在设置默认规则的同时要将与该服务器链接的ip添加进白名单,否则在设置完默认阻止后你也无法访问这台服务器,也无法再进行操作了,我们可以使用分号;或者&&来在同一个命令行下来完成默认阻止和将自己的ip添加进白名单,假如你的ip地址为1234则可以这样输入iptables -P INPUT DROP;iptables -A INPUT -s 1234 -p tcp -j ACCEPT,或者也可以指定一个端口)

设置默认规则后则可以添加白名单了

比如允许2345访问则可以

iptables -A INPUT -s 2345 -p tcp -j ACCEPT

如果要限定的不是整个服务器而只是该服务器中的某个服务

比如web服务(一般端口在80,https在443)

则我们可以使用0000/0来阻止所有的ip地址

比如

iptables -A INPUT -s 0000/0 -p tcp --dport 80 -j DROP

以及

iptables -A INPUT -s 0000/0 -p tcp --dport 443 -j DROP

来阻止所有访问web服务器的ip地址

然后再添加指定的ip到白名单

比如添加1234,我们可以

iptables -A INPUT -s 1234 -p tcp --dport 80 -j ACCEPT

如果我们允许某个网段下的所有ip都可以访问的话比如123[0-255],我们可以

iptables -A INPUT -s 1230/24 -p tcp --dport -j ACCEPT

总之不管是阻止所有的服务还是只阻止指定的服务

我们可以先将默认的规则设置为所有ip都不可访问

然后再手动添加ip地址到白名单

使用软件远程登陆方式:

目前Linux远程连接工具有很多种,您可以选择顺手的工具使用。下面使用的是名为Putty的Linux远程连接工具。该工具是免费的,且不需要安装,在网上方便地下载到。 

1 启动Puttyexe程序,进入Putty主界面。

2 在Putty “Host Name”输入IP地址,在Saved Session中输入希望保存的名字(可以任意),点击“Save”;以后可以方便调用而不需要每次输入IP地址;点击“Open”进行连接。 

3 初次运行时,会有下图中的提示,请选择“是(Y)”,下次运行就不会再出现该提示信息了。

4 请根据提示,分别输入您的Linux云服务器用户名和密码。密码不会显示在屏幕上。输入完成后回车即可。

1

实现此的技术原理:

在内网通过域名绑定服务器,外网SSH访问连接时,通过域名的访问,实现访问内网LINUX。

2

具体的实现过程如下:

明确LINUX服务器内网访问地址端口,确保LINUX服务器正常开启SSH服务,在内网SSH可以正常访问连接。如图所示:

3

被访问端的Linux主机上使用nat123动态域名解析Linux版本。

在被访问端的Linux服务器安装nat123客户端,并登录使用它。

4

登录网页,左侧用户中心,添加域名解析,选择动态域名解析并添加确认。

选择动态域名解析记录,使用二级域名,或自己的域名。鼠标放在输入框有向导提示。如不理解负载均衡,不要勾选多点登录。

5

新添加动态解析后,等待几分钟生效。解析生效后,动态解析域名与本地公网IP是保持对应的。可以通过ping下域名核实,返回结果IP地址为本地公网IP地址时,表示动态解析生效正常。

6

路由器端口映射,路由映射SSH访问22端口。

为公网IP是在路由器上的,外网访问时,需要经过路由,需要在路由器上做端口映射,将内网LINUX服务器访问22端口打通。路由器端口映射位置:转发规

则/虚拟服务器/添加允许外网访问端口和协议。我的LINUX服务器SSH服务端口是默认的22,我内网对应LINUX服务器主机的内网IP地址是

192168129。

7

外网访问时,使用动态解析域名。

在外网使用SSH访问内网LINUX服务器时,使用动态解析域名进行连接访问。域名是不变的,可以上网即可访问,再也不担心动态公网IP变化的问题。

一般是通过以下几种方式:

1、设置FTP服务器

2、NFS服务器

3、SAMBA服务器

FTP和NFS都比较简单,下面介绍一下SAMBA的配置方法:

Linux系统默认已经安装了Samba,但是没有安装Samba服务:

1,先查看安装情况:rpm -qa|grep samba

根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包。

我的安装情况是:

使用命令:mount  /dev/cdrom1  /mnt/cdrom1

通过mount把cdrom1挂载到系统临时目录/mnt/cdrom1,在Packets包下面使用命令:rpm -ivh sambarpm包安装。

切换到放置rpm文件的目录

[root@smb_server  root]# rpm  -ivh samba-common-369-151el6x86_64

这是Samba 必备的程序,必须安装

[root@smb_server  root]# rpm  -ivh samba-369-151el6x86_64

安装Samba 服务器程序,可以使我Windows 主机访问Samba 服务器共享的资源。

如果需要使Linux 主机访问Windows 主机上的共享资源,则还应该安装Samba 客户端程序。

[root@smb_server  root]# rpm  -ivh samba-client-369-151el6x86_64

2,安装samba的rpm包完成后

samba-common-369-151el6x86_64               //主要提供samba服务器的设置文件与设置文件语法检验程序testparm

samba-client-369-151el6x86_64                    //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集

samba-swat-369-151el6x86_64                    //基于https协议的samba服务器web配置界面

samba-369-151el6x86_64                            //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项

Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令工具,/etc/samba/smbconf是samba的核心配置文件,/etc/initd/smb是samba的启动/关闭文件。

5、查看samba的服务启动情况

# service smb status

6、设置开机自启动

# chkconfig --level 35 smb on             //在3、5级别上自动运行samba服务

7、配置smb服务

[global]

workgroup = WORKGROUP

server string = Samba Server Version %v

netbios name = ImgPath05

[ImgPath]

comment = Public stuff

path = /usr/local/nginx/html/img

public = yes

writeable = yes

browseable = yes

guest ok = yes

共享目录为:/usr/local/nginx/html/img,共享目录对外名称为:ImgPath 即在Windows看到的目录名称。

设置共享目录权限:chown -R nobody:nobody /usr/local/nginx/html/img/

8、启动或者重启smb服务

重启smb服务

测试smbconf配置是否正确

9 Windows访问共享目录,但是没有写权限,通过以下方式修改防火墙设置。

将Linux smb服务添加到防火墙的例外中 以root用户执行setup命令#setup弹出重启生效,如果不想重启,用命令#setenforce 0

单纯从iptables本身的功能来说,不行。

假如某个主机是USER,用iptables加策略的时候

iptables -A INPUT -s USER -j ACCEPT

iptables会将USER转换为当前使用的IP地址,计算机USER的IP变更后,此规则无效了。

以前有人的想是设定计划任务,固定时间间隔去探测USER当前的IP地址,与当前规则比对,如果发现变更,清除iptables原有规则,建立新的规则。

但最终没人这么做:第一,多久去探测一次?每秒?每分?周期太密影响性能,周期太长会导致某段时间网络不可用。如果这时正好用户运行一个大项目的收尾工作……

第二个问题,这种做法的逻辑超级复杂了吧?为这么一个需求做这么一个逻辑……

其他解决方法:

1、建立*** Server,每个用户分配帐号和口令,访问时先拨号,验证成功才可登录。

2、如果是指定人员,为每个人建立一个账号,在/etc/sudoer里为这些用户分配权限。用户执行管理员命令时用sudo进行。

这么做的好处是用户的权限不够,对系统的破坏性基本没有了。如果用sudo,你会在/var/log/securty里看到所有用户以sudo执行过的命令,谁干坏事一目了然。

必要的防火墙规则

将以下规则粘贴到/sbin/firewall下,再用root帐号chmod 700 /sbin/firew

之后执行firewall就保存现有的规则了,如果有新规则,在倒数第二行开始加。

### 允许ping,允许访问本机22端口,其他拒绝

iptables -F

iptables -X

iptables -P INPUT DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

service iptables save

Linux系统中,如果需要禁止特定ip地址访问来保证系统的安全,只需通过操作iptalbes来实现,下面就给绍下Linux如何禁止某个ip地址访问。

一、概述

这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:

#服务进程名:主机列表:当规则匹配时可选的命令操作

server_name:hosts-list[:command]

/etc/hostsallow控制可以访问本机的IP地址,/etc/hostsdeny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hostsdeny为准。

/etc/hostsallow和/etc/hostsdeny两个文件是控制远程访问设置的,可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。

比如SSH服务,通常只对管理员开放,那就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。

二、配置

1、修改/etc/hostsallow文件

#

# hostsallow This file describes the names of the hosts which are

# allowed to use the local INET services, as decided

# by the ‘/usr/sbin/tcpd’ server

#

sshd:21013218:allow

sshd:2227715:allow

all:21824129110 #表示接受110这个ip的所有请求!

intelnetd:140116440/2552552550

intelnetd:140116790/2552552550

intelnetd:14011614199

intelnetd:LOCAL

smbd:19216800/2552552550 #允许1921680网段的IP访问smbd服务

#sendmail:19216810/2552552550

#pop3d:19216810/2552552550

#swat:19216810/2552552550

pptpd:all EXCEPT 19216800/2552552550

httpd:all

vsftpd:all

以上写法表示允许210和222两个ip段连接sshd服务(这必然需要hostsdeny这个文件配合使用),当然:allow完全可以省略的。

ALL要害字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。

2、修改/etc/hostsdeny文件

#

# hostsdeny This file describes the names of the hosts which are

# not allowed to use the local INET services, as decided

# by the ‘/usr/sbin/tcpd’ server

#

# The portmap line is redundant, but it is left to remind you that

# the new secure portmap uses hostsdeny and hostsallow In particular

# you should know that NFS uses portmap!

sshd:all:deny

intelnet:ALL

ALL:ALL EXCEPT 19216801/2552552550,192168121,

2021050/2552552550

注意看:sshd:all:deny表示拒绝了所有sshd远程连接。:deny可以省略。

3、启动服务。

注意修改完后:

#service xinetd restart

才能让刚才的更改生效。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux防火墙iptables限制几个特定ip才能访问服务器。

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情