高性能LINUX双效防火墙

No Comments Linux

系统功能说明:

  包过滤和WEB代理双效合一。由iptables 实现包的过滤,由LINUX下大名鼎鼎的squid结合NAT来实现透明WEB代理。SQUID代理的性能本身已经是代理服务器中的佼佼者,本系统将其性能发挥的极至:通过ramdisk技术,让SQUID把网页cahce到内存中,这样,你所访问的网页,除了第一次需要到网络上取,以后都将来自内存!

(1)选择一台比较稳定的计算机,装上两块网卡,512或1024M内存,硬盘160G(注意:第一块网卡接内网,第二块网卡接外网。)
(2)安装centos5.3,安装时选择服务器模式,自动分区
(3)大概在10-15分中后系统安装完毕,重启后进入系统,开始配置系统

1、开启包转发

  编辑/etc/sysctl.conf,将net.ipv4.ip_forward=0 该为net.ipv4.ip_forward=1,保存修改。其目的是允许LINUX内核做IP包的转发:允许IP数据包从一个网络接口穿越到另一个网络接口,只有这样,系统才具有充当包过滤防火墙的条件。

2、激活RamDisk

  修改/etc/grub.conf

#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18-10)
root (hd0,0)
kernel /vmlinuz-2.6.18-10 ro root=/dev/sda6ramdisk=268435
initrd /initrd-2.6.18-10.img

  其中ramdisk=268435 是我们要添加的内容,目的是告诉系统默认的 ramdisk的大小是268435k,也就是256M。注意千万不可以直接写256M,这样系统是不认识的,必须要换成K才行!(摸索了好几个月的心得!),这样设好,重新启动后就系统就回自动生成一个256M的虚拟盘了。当然,你要根据自己的内存大小来设置这个参数,如果不运行XWINDOWS,设你总内存的一半都没问题,因为LINUX系统本身并不需要很多内存的。

3、设置squid参数

  编辑/etc/squid/squid.conf,在末尾加入以下条目:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
http_access allow all
cache_dir ufs /squid 256 16 256

  前面四条参数使squid提供透明代理提供基础。“http_access allow all”表示允许所有的客户机器都可以访问代理;这里特别强调的是最后一条 “cache_dir ufs /squid 256 16 256”,

256代表缓存空间最大为256M,16代表squid可以在硬盘缓冲存放的目录下建立的第一级子目录的数目,缺省值为16,;256是可以建立第二级子目录的数目,缺省值256。

  squid默认的cache_dir是“/var/spool/squid”,我们因为要让squid将内容cache到内存中,所以这里先改成/squid,接下来要将ramdisk影射到/squid目录中。

4、建立ramdisk。用下面的两条命令来完成:

(1)mkdir /squid 建立目录“/squid”
(2)mkfs /dev/ramdisk 创建文件系统
(3)mount /dev/ramdisk /squid 将ramdisk 挂载到/squid目录。

由于ramdisk在每次重启后会消失,因此,为了让系统启动时自动建立好,我们可以建立一个自动装载ramdisk的批命令:

mkfs /dev/ramdisk
mount /dev/ramdisk /squid

将这两条命令写到一个文件中,我们暂且用myautoexec.bat作为文件名,为了方便起见,我们建立/admin目录,然后将myautoexec.bat文件保存在/admin下,并加给可执行的权限:chmod +x myautoexec.bat

  但这样系统启动时并不会被调用,所以我们还要做一件事:编辑/etc/rc.local 文件,在文件末尾插入一行:/admin/myautoexec.bat,这样,系统就会自动调用myautoexec.bat了。

5、初始化squid。

  还记得“cache_dir ufs /squid 256 16 256”这个参数吗?初始化过程实际上就是squid在指定的cache_dir中建立指定的一级目录(这里是16),然后在每个一级目录中建立256个二级目录。使用的命令是:“squid –z ”。但现在这时输入命令系统会报告出错,因为/squid现在的属主是root, squid 没有权限操作root的文件,所以还要先把/squid目录指派给squid用户,用“chown squid.squid /squid”。再一次运行“squid –z ”,不到一秒钟时间就可完成。如果这个过程是在磁盘上而不是在ramdisk上,一般要工作几十秒钟。

  同样,这步的设置也要把

chown squid.squid /squid
squid –z

  两条命令写到myautoexec.bat中,最后加上一条“squid”,就是启动squid服务进程。到这里,squid的设置全部完成。

6、设置NAT和防火墙规则。

  为了方便起见,建立文件/admin/myfirwall,将规则都写到文件中:

#——初始化部分
iptables -F
iptables -t nat -F
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#——初始化结束
#-START NAT<<<<<让地址为10.27.0.0/16的内部计算机可以伪装上因特网。
iptables -t nat -A POSTROUTING -o eth1 -s 10.3.37.0/24 -j MASQUERADE
#>>>>>end NAT
#端口转换,将所有发到外网的请求端口为80的都转到3128去,让squid来处理,这一
#–条是透明代理的关键<<<<<<
iptables -t nat -A PREROUTING -i eth0 -d ! 10.27.0.0/16 -p tcp -m tcp \
–dport 80 -j REDIRECT –to-ports 3128
#>>>>>>>end 端口转换
#防火墙规则<<<<<<< 这里要根据你的要求来定了
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP
iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP
#以上两条分别是将所有从外网进来的ping包都统统丢弃,将所有由外网发起的非80端口
#的请求都统统丢弃,意思就是只不允许从外网向内网发ping ,只允许外网访问内网的
#HTTP服务。完整的防火墙规则要根据你的网络安全要求来制定,这里只做参考。

------中间广告---------

  说明:所有以#开头的行表示说明,不用写入文件,保存为/admin/myfirewall,并用“chmod +x /admin/myfirewall”使其可以执行。编辑/admin/myautoexec.bat,加入“/admin/myfirewall”在最后一行。

  到此为止,我们的好性能防火墙全部配置完成,运行reboot 重启后,可以工作了。

Squid各配置文件说明:

http_port   IP:端口 (设置squid监听的IP地址和端口)

  cache_mem  指定使用多少物理内存作为高速缓存.如果这台服务器仅用于共享上网,没有其他服务,则可加大物理内存的1/2,但如果还有其他服务则

  cache_mem的大小不应超过物理内存的1/3.,否则会影响服务器的总体性能.

  cache_dir  ufs   /var/spool/squid 4096 16 256指定硬盘缓冲区的大小,其中ufs指的是缓冲的存储类型,一般为ufs,/var/spool/squid指硬盘缓冲存放的目录

  ,4096代表缓存空间最大为4096M,16代表squid可以在硬盘缓冲存放的目录下建立的第一级子目录的数目,缺省值为16,;256是可以建立第二级子目录的

  数目,缺省值256。

  cache_effective_user  squid  设定使用缓存的有效用户.(系统默认)

  cache_effective_group  squid  设定使用缓存的有效用户组(系统默认)

  dns_nameservers   IP  为了使Squid能解析域名,必须告诉squid有效DNS服务器..

  cache_access_log 定义了访问记录日志文件的路径,该日志记录了用户访问Internet的详细信息,通过日志文件可以查看每台客户机上网的记录…所以大家不要干坏事的…

  cache_log 设置记录缓存的相关信息日志文件的路径…

  cache_store_log 定义了记录网页在缓存中调用情况日志文件的路径…

  visible_hostname 定义了运行squid的主机名称,当访问发生错误时,该选项的值会显示在错误提示网页中.建议输入主机的IP地址..

  cache_mgr 定义设置squid管理员的d E-mail地址,当访问发生错误时,该选项会显示在页面上.

  规则:我们还可以使用acl   定义squid访问控制列表.下面是其选项信息..

  src  IP   源IP地址(客户机的IP地址).

  dst  IP   目标地址(服务的器IP地址).

  scrdomain 源名称 (客户机所属的域).

  dstdomain 目标名称(服务器所属的域).

  time 一天中的某一时刻和一周内的某一天.

  url_regex  URL规则的表达式

  urlpath_regex:URL-path 略去协议和主机名的URL规则表达式匹配.

  proxy_auth 通过外部程序进行用户认证.

  maxconn 单一IP最大连接数.

  time 语法[星期][时间段].星期可以使用这些关键字M(Mondy),T(Tuesday)…

  时间段:某一时刻-另一时刻

好了就以这个信息,下面我们去配置Squid服务器…

加强对Linux网络服务器的管理 合理使用工具

No Comments 网络技术

Linux网络服务器的管理工具介绍如下:

利用记录工具,记录对Linux系统的访问

Linux系统管理员可以利用前面所述的记录文件和记录工具记录事件,可以每天查看或扫描记录文件,这些文件记录了系统运行的所有信息。如果需要,还可以把高优先级的事件提取出来传送给相关人员处理,如果发现异常可以立即采取措施。

慎用Telnet服务

在Linux下,用Telnet进行远程登录时,用户名和用户密码是明文传输的,这就有可能被在网上监听的其他用户截获。另一个危险是黑客可以利用Telnet登入系统,如果他又获取了超级用户密码,则对系统的危害将是灾难性的。因此,如果不是特别需要,不要开放Telnet服务。如果一定要开放Telnet服务,应该要求用户用特殊的工具软件进行远程登录,这样就可以在网上传送加密过的用户密码,以免密码在传输过程中被黑客截获。

合理设置NFS服务和NIS服务

NFS(NetworkFileSystem)服务,允许工作站通过网络共享一个或多个服务器输出的文件系统。但对于配置得不好的NFS服务器来讲,用户不经登录就可以阅读或者更改存储在NFS服务器上的文件,使得NFS服务器很容易受到攻击。如果一定要提供NFS服务,要确保基于Linux的NFS服务器支持SecureRPC(SecureRemoteProcedureCall),以便利用DES(DataEncryptionStandard)加密算法和指数密钥交换(ExponentialKeyExchange)技术验证每个NFS请求的用户身份。

NIS(NetworkInformationSystem)服务,是一个分布式数据处理系统,它使网络中的计算机通过网络共享passwd文件,group文件,主机表文件和其他共享的系统资源。通过NIS服务和NFS服务,在整个网络中的各个工作站上操作网络中的数据就像在操作和使用单个计算机系统中的资源一样,并且这种操作过程对用户是透明的。但是NIS服务也有漏洞,在NIS系统中,不怀好意的用户可以利用自己编写的程序来模仿Linux系统中的ypserv响应ypbind的请求,从而截获用户的密码。因此,NIS的用户一定要使用ypbind的secure选项,并且不接受端口号小于1024(非特权端口)的ypserv响应。

小心配置FTP服务

FTP服务与前面讲的Telnet服务一样,用户名和用户密码也是明文传输的。因此,为了系统的安全,必须通过对/etc/ftpusers文件的配置,禁止root,bin,daemon,adm等特殊用户对FTP服务器进行远程访问,通过对/etc/ftphosts的设定限制某些主机不能连入FTP服务器,如果系统开放匿名FTP服务,则任何人都可以下载文件(有时还可以上载文件),因此,除非特别需要一般应禁止匿名FTP服务。

合理设置POP-3和Sendmail等电子邮件服务

对一般的POP-3服务来讲,电子邮件用户的口令是按明文方式传送到网络中的,黑客可以很容易截获用户名和用户密码。要想解决这个问题,必须安装支持加密传送密码的POP-3服务器(即支持AuthenticatedPOP命令),这样用户在往网络中传送密码之前,可以先对密码加密。

老版本的Sendmail邮件服务器程序存在安全隐患,为了确保邮件服务器的安全,应尽可能安装已消除安全隐患的最新版的Sendmail服务器软件。

加强对WWW服务器的管理,提供安全的WWW服务

当一个基于Linux系统的网站建立好之后,绝大部分用户是通过Web服务器,利用WWW浏览器对网络进行访问的,因此必须特别重视Web服务器的安全,无论采用哪种基于HTTP协议的Web服务器软件,都要特别关注CGI脚本(CommonGatewayInterface),这些CGI脚本是可执行程序,一般存放在Web服务器的CGI-BIN目录下面,在配置Web服务器时,要保证CGI可执行脚本只存放于CGI-BIN目录中,这样可以保证脚本的安全,且不会影响到其他目录的安全。

最好禁止提供finger服务

在Linux系统下,使用finger命令,可以显示本地或远程系统中目前已登录用户的详细信息,黑客可以利用这些信息,增大侵入系统的机会。为了系统的安全,最好禁止提供finger服务,即从/usr/bin下删除finger命令。如果要保留finger服务,应将finger文件换名,或修改权限为只允许root用户执行finger命令。

Linux网络服务安全的总结

由于Linux操作系统使用广泛,又公开了源码,因此是被广大计算机用户研究得最彻底的操作系统,而Linux本身的配置又相当的复杂,按照前面的安全策略和保护机制,可以将系统的风险降到最低,但不可能彻底消除安全漏洞。

Linux网络服务器的管理工具就向大家介绍完了,希望大家已经掌握,另外,作为Linux系统的管理员,头脑中一定要有安全防范意识,定期对系统进行安全检查,发现漏洞要立即采取措施,不给黑客以可乘之机。

文章转载自网管之家:http://www.bitscn.com/os/linux/201103/192935.html

Nagios监控Linux与Windows主机

No Comments Linux

nagios监控linux与windows主机

经过一段时间的整理,结合个人在linux与windows服务器上的测试,写出这篇blog,希望更多地人关注nagios,虽然cacti也具有这样的功能但缺泛像nagios的警报功能。Naigos的安装:

一、 所需软件

nagios-2.9.tar.gz

nagios-plugins-1.4.7.tar.gz

imagepak-base.tar.gz

nsclient_201.zip

  二、 安装

1、nagios安装

tar –xvzf nagios-2.9.tar.gz   mkdir /usr/local/nagios   useradd nagios –d /usr/local/nagios   chmod 755 /usr/local/nagios   cd nagios-2.9   ./configure –prefix=/usr/local/nagios –with-gd-lib=/usr/local/lib   –with-gd-inc=/usr/local/include   make all   make install   make install-init ##This installs the init script in /usr/local/etc/rc.d   make install-commandmode   make install-config ##将初始的配置文件安装到/usr/local/nagios/etc   注:在make install-init 这一步的时候可能会进行不下去,这时只要加个root组即可。

2、nagios-plugins的安装

tar –xvzf nagios-plugins-1.4.7.tar.gz   mkdir /usr/local/nagios-plugins   cd nagios-plugins-1.4.7   ./configure –prefix=/usr/local/nagios-plugins   make all   make install   安装完成以后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移动到/usr/local/nagios目录下

mv /usr/local/nagios-plugins/libexec /usr/local/nagios   3、imagepak-base的安装

tar –xvzf imagepak-base.tar.gz

解压以后是base目录

cp –R base /usr/local/nagios/share/images/logos   4、安装过程全部结束

 

三、Nagios的设定:

(1)、配置apache

在apache的配置文件httpd.conf中追加

ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin/   AllowOverride AuthConfig   Options ExecCGI   Order allow,deny   Allow from all   Alias /nagios/ /usr/local/nagios/share/   Options None   AllowOverride AuthConfig   Order allow,deny   Allow from all   (2)、设置访问权限

1、在/usr/local/nagios/share目录下

vi .htaccess   AuthName “Nagios Access”   AuthType Basic   AuthUserFile /usr/local/nagios/etc/.htpasswd   require valid-user   2、在/usr/local/nagios/sbin目录下

vi .htpasswd   AuthName “Nagios Access”   AuthType Basic   AuthUserFile /usr/local/nagios/etc/.htpasswd   require valid-user   3、/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/.htpasswd nagios

这个apache目录根据安装目录的不同而不同,主要所以用.htpasswd这个命令生成用户名和密码

四、配置nagios

1、在/usr/local/nagios/etc下是nagios的配置模板文件.cfg-sample,把.cfg-sample文件全部拷贝成.cfg

例如:cp nagios.cfg-sample nagios.cfg

mkdir /usr/local/nagios/etc/sample

cp *.cfg-sample !$

全部拷贝完成即可.

1、修改cgi.cfg

vi /etc/cgi.cfg

修改use_authentication=1为use_authentication=0,即不用验证.不然有一些页面不会显示。

2、然后检查配置文件是否出错

/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg

出现Total Warnings: 0

Total Errors: 0

为正常

出错的话,就是.cfg文件有问题

3、启动后台进程

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

/usr/local/etc/rc.d/nagios start

4、(如果有些页面看不到的话.可以在cgi.cfg文件中把带有authorized的选项前的#号去掉即可)这些配置完以后,基本的nagios配置完成。

五、安装监控linux类服务器的nrpe

nrpe 安装与使用

(一)远程主机的配置(192.168.0.206 linux)

1、安装openssl

#./config –prefix=/usr/local/nagios/openssl   #make   #make install   2、安装nrpe与配置

#./configure –enable-ssl –with-ssl-lib=/usr/local/nagios/openssl/lib   –with-kerberos-inc=/usr/local/nagios/openssl/include –enable-command-args   #make all   #mkdir /usr/local/nagios/etc   #mkdir /usr/local/nagios/bin   #mkdir /usr/local/nagios/libexec   #chown -R nagios:nagios /usr/local/nagios   #cp nrpe.cfg /usr/local/nagios/etc   #cp src/nrpe /usr/local/nagios/bin   #cp src/check_nrpe /usr/local/nagios/libexec   #vi /usr/local/nagios/etc/nrpe.cfg   改成你允许的IP

allowed_hosts=127.0.0.1,192.168.0.207(207是nagios服务器)

改成你准备监视的服务

command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1___FCKpd___9nbsp;-c $ARG2___FCKpd___9nbsp;-p $ARG3$   检查磁盘,当 / 剩余$ARG1$%报警(浅黄色),剩余$ARG2$%“出错”(红色)-p 后为指定分区

3、启动nrpe,端口为5666

/usr/local/nagios/bin/nrpe -c /etc/nrpe.cfg -d   4、安装监测的模块

nagios-plugins的安装

tar –xvzf nagios-plugins-1.4.7.tar.gz   mkdir /usr/local/nagios-plugins   cd nagios-plugins-1.4.7   ./configure –prefix=/usr/local/nagios-plugins   make all   make install   安装完成以后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移动到/usr/local/nagios目录下

mv /usr/local/nagios-plugins/libexec /usr/local/nagios   (二)服务器上的配置

1、安装openssl

#./config –prefix=/usr/local/nagios/openssl   #make   #make install   2、安装nrpe(主要是使用check_nrpe模块)

#./configure –enable-ssl –with-ssl-lib=/usr/local/nagios/openssl/lib   –with-kerberos-inc=/usr/local/nagios/openssl/include –enable-command-args   #make all   #cp src/check_nrpe /usr/local/nagios/libexec   3、nagios文件的配置

vi commands.cfg

定义check_nrpe命令

# ‘check_nrpe’ command definition   define command{   command_name check_nrpe   command_line $USER1$/check_nrpe -H $HOSTADDRESS___FCKpd___15nbsp;-c $ARG1$   }   4、重启nagios服务

/etc/rc.d/init.d/nagios restart (linux)

在 Nagios主机上192.168.0.207:

[root@207 etc]#vi /usr/local/nagios/etc/commads.cfg

加入以代码:

define command{   command_name check_ping   command_line $USER1$/check_ping -H $HOSTADDRESS___FCKpd___16nbsp;-p $ARG1___FCKpd___16nbsp;$ARG2$   }   [root@db4 etc]#cfg=”cfg_file=/usr/local/nagios/etc/lgweb.cfg”   [root@db4   [email=root@db4][/email]   etc]#echo “$cfg” >> /usr/local/nagios/etc/nagios.cfg   [root@db4 etc]#/etc/init.d/nagios start 

六、安装监控windows NT服务器的nsclient

1、客户端192.168.0.201配置

下载nsclient包

nsclient_201.zip

解压包到c:\nsclient

打开cmd命令行提示符输入:

c:

cd c:\nsclient

pNSClient.exe /install

net start nsclient

安装完成

2、服务端192.168.0.207配置

#cd /usr/local/nagios/etc   #vi 201web.cfg(具体内容见配置文件)   #vi commands.cfg(添加相应的命令,见配置文件)   #echo “cfg=/usr/local/nagios/etc/201web.cfg” >> /usr/local/nagios/etc/nagios.cfg   #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg(若无错误就可进行下步)   #service nagios start   访问nagios监控的web界面:

http://192.168.0.207/nagios/index.html

故障排除:

问:将use_authentication=1设为1时会出现如下错误:

It appears as though you do not have permission to view information for any of the hosts you requested…

答:方法一,只需将/usr/local/nagios/etc/cgi.cfg中的以下几个参数前的注释去掉:

default_user_name=nagios  authorized_for_system_information=nagiosadmin,nagios   authorized_for_configuration_information=nagiosadmin,nagios   authorized_for_system_commands=nagiosadmin,nagios   authorized_for_all_services=nagiosadmin,nagios   authorized_for_all_hosts=nagiosadmin,nagios   authorized_for_all_service_commands=nagiosadmin,nagios   authorized_for_all_host_commands=nagiosadmin,nagios  

关于监控linux主机mysql相关注意点:

1、server(nagios服务端192.168.0.132)

#/usr/local/nagios/libexec/check_mysql -H 192.168.0.207 -u root -p xukixu

此时可能会出现错误:Host ‘192.168.0.132′ is not allowed to connect to this MySQL server

因此只要在客户端做个mysql授权用户访问即可

2、client(客户端192.168.0.207)

#mysql -uroot -pxukixu   mysql>grant all privileges on *.* to      identified by ‘xukixu’;   mysql>flush privileges;   mysql>quit; 

文章转载自网管之家:http://www.bitscn.com/os/linux/201103/192939_6.html

文章转载自网管之家:http://www.bitscn.com/os/linux/201103/192939.html

Nagios监控Linux与Windows主机(2)

No Comments Linux

如果你的IPTABLES基础知识还不了解,建议先去看看.
开始配置
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination       
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination       
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination       
Chain RH-Firewall-1-INPUT (0 references)
target       prot opt source                 destination       
ACCEPT       all    —    0.0.0.0/0              0.0.0.0/0         
ACCEPT       icmp —    0.0.0.0/0              0.0.0.0/0             icmp type 255
ACCEPT       esp    —    0.0.0.0/0              0.0.0.0/0         
ACCEPT       ah     —    0.0.0.0/0              0.0.0.0/0         
ACCEPT       udp    —    0.0.0.0/0              224.0.0.251           udp dpt:5353
ACCEPT       udp    —    0.0.0.0/0              0.0.0.0/0             udp dpt:631
ACCEPT       all    —    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25
REJECT       all    —    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
如果你在安装linux时没有选择启动防火墙,是这样的
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination       
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination       
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination
什么规则都没有.
(2)清除原有规则.
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -F        清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X        清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination       
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination       
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination    
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
[root@tp ~]# iptables -p INPUT DROP
[root@tp ~]# iptables -p OUTPUT ACCEPT
[root@tp ~]# iptables -p FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
怎么办,去本机操作呗!
(4)添加规则.
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
为了能采用远程SSH登陆,我们要开启22端口.
[root@tp ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.
其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理.)
如果做了WEB服务器,开启80端口.
[root@tp ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp –dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口
[root@tp ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp –dport 20 -j ACCEPT
如果做了DNS服务器,开启53端口
[root@tp ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT
如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许icmp包通过,也就是允许ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT设置成DROP的话)

允许loopback!(不然会导致DNS无法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.
减少不安全的端口连接
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.
当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
允许SSH登陆一样.照着写就行了.
下面写一下更加细致的规则,就是限制到某台机器
如:我们只允许192.168.0.3的机器进行SSH连接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.
或采用命令方式:
[root@tp ~]# iptables -D INPUT -p tcp –dport 22 -j ACCEPT
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样写 !192.168.0.3 表示除了192.168.0.3的ip地址
其他的规则连接也一样这么设置.
在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
我在前面只所以允许ICMP包通过,就是因为我在这里有限制.

二,配置一个NAT表放火墙
1,查看本机关于NAT的设置情况
[root@tp rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target       prot opt source                 destination       
Chain POSTROUTING (policy ACCEPT)
target       prot opt source                 destination       
SNAT         all    —    192.168.0.0/24         anywhere              to:211.101.46.235
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination  
我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的
如果你想清除,命令是
[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
2,添加规则
添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),
添加规则,我们只添加DROP链.因为默认链全是ACCEPT.
防止外网用内网IP欺骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
例:
禁止与211.101.46.253的所有连接
[root@tp ~]# iptables -t nat -A PREROUTING    -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -j DROP
这样写范围太大了,我们可以更精确的定义.
[root@tp ~]# iptables -t nat -A PREROUTING    -p tcp –dport 21 -d 211.101.46.253 -j DROP
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.
按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.
最后:
drop非法连接
[root@tp ~]# iptables -A INPUT     -m state –state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT    -m state –state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state –state INVALID -j DROP
允许所有已经建立的和相关的连接
[root@tp ~]# iptables-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart

别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,

上面的所有规则我都试过,没有问题.
写这篇文章,用了我将近1个月的时间.查找资料,自己做实验,希望对大家有所帮助.如有不全及不完善的地方还请提出.
因为本篇文章以配置为主.关于IPTABLES的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的.

多网卡配置说明:要求设置为只允许通过公网访问服务器TCP协议的22端口和1521端口。
分析:由于服务器为多网卡,找出到公网的网口。利用-i [port_name]配置允许访问TCP:22和TCP:1521;其他协议及端口默认拒绝。
iptables -A INPUT-i eth3-p tcp –dport 22 -j ACCEPT
iptables -A INPUT -i eth3 -p tcp –dport 1521 -j ACCEPT
iptables -A INPUT -i eth3 -j DROP运行/etc/rc.d/init.d/iptables save保存配置文件到/etc/sysconfig/iptables下
运行service iptables restart确认重启iptables后规则仍有效。完成!

Linux下的DNS服务器配置以及辅助DNS配置

No Comments Linux

首先安装以下3个包 bind、bind-utils、caching-nameserver  DNS服务 配置要求
IP 192.168.1.100
domain aaa.com
www 192.168.1.100
ftp 192.168.1.100
mail 192.168.1.100
pop 192.168.1.100
smtp 192.168.1.100
***************************配置过程
#vi /etc/sysconfig/network-scripts/ifcfg-eth0\\配置IP、MASK GATEWAY
#vi /etc/sysconfig/network   \\HOSTNAME
#hostname aaa.com    \\HOSTNAME
#vi /etc/hosts     \\DNS
#vi /etc/resolv.conf
    nameserver 192.168.1.100   \\DNS指向
#exit      \\注销后再登陆
#service network restart   \\重新启动网络服务
#ifconfig     \\检查网络配置情况
#rpm -q bind bind-utils caching-nameserver<enter>
#rpm -ql caching-namerserver | grep conf<enter>配置DNS主配置文件
#vi /etc/named.conf<enter>增加一下几行内容
=======================================
zone “aaa.com” IN {
         type master;
         file “aaa.com.zone”;
};
zone “1.168.192.in-addr.arpa” IN {
         type master;
         file “aaa.com.local”;
};
======================================= 配置正 反向区域文件
#vi /var/named/aaa.com.zone<enter>
=======================================
@       IN      SOA     aaa.com. root.localhost(
                         07031201
                         36000
                         3600
                         72000
                         600)
@       IN      NS      aaa.com.
@       IN      A       192.168.1.100
@       IN      MX 10   192.168.1.100
mail    IN      A       192.168.1.100
www     IN      A       192.168.1.100
ftp     IN      CNAME  [url]www.aaa.com[/url].
pop     IN      A       192.168.1.100
smtp    IN      A       192.168.1.100
=======================================
#vi /var/named/aaa.com.local<enter>
=======================================
@       IN      SOA     aaa.com. root.localhost(
                         07031201
                         36000
                         3600
                         72000
                         600)
@       IN      NS      aaa.com.
100     IN      PTR     aaa.com.
100     IN      PTR    [url]www.aaa.com[/url].
100     IN      PTR     mail.aaa.com.
100     IN      PTR     pop.aaa.com.
100     IN      PTR     smtp.aaa.com.
=======================================
#service named restart<enter>
#chkconfig named on<enter>
测试:
#host[url]www.aaa.com[/url] <enter>
#host>
#host 192.168.1.100<enter>win2k下测试:
#nslookup<enter>
>set type=mx<enter>
>aaa.com<enter>
错误调式:
#named-checkconf /etc/named.conf<enter>    \\配置文件调式
#named-checkzone /var/named/aaa.com.zone<enter>   \\正向区域文件调试
#named-checkzone /var/named/aaa.com.local<enter>  \\反向区域文件调试
#rndc reload<enter>      \\重新载入区域文件
——————————————————————–
辅助DNS的配置
domain aaa.com
master 192.168.1.101(win2k)
slave  192.168.1.100(linux)
***************************
#vi /etc/sysconfig/network-scripts/ifcfg-eth0 \\IP、MASK、GATEWAY
#vi /etc/sysconfig/network   \\HOSTNAME
#hostname aaa.com    \\HOSTNAME
#vi /etc/hosts     \\DNS
#vi /etc/resolv.conf    \\DNS指向
#exit      \\注销再登陆
#service network restart   \\重新启动网络服务
#ifconfig     \\检查网络配置情况
#rpm -q bind bind-utils caching-nameserver<enter>
#rpm -ql caching-namerserver | grep conf<enter>
#vi /etc/named.conf<enter> 编辑主配置文件,增加一下几行.
=======================================
zone “aaa.com” IN {
         type slave;
         master { 192.168.1.101; };
         file “slave.aaa.com.zone”;
};
zone “1.168.192.in-addr.arpa” IN {
         type slave;
         master { 192.168.1.101; };
         file “slave.aaa.com.local”;
};
=======================================
#service named restart<enter>
#chkconfig named on<enter>
测试:
#host[url]www.aaa.com<enter[/url]>
#host>
#host 192.168.1.100<enter>
win2k下测试:#nslookup<enter>
>set type=mx<enter>
>aaa.com<enter>
错误调式:
#named-checkconf /etc/named.conf<enter>    \\配置文件调式
#named-checkzone /var/named/djw.com.zone<enter>   \\正向区域文件调试
#named-checkzone /var/named/djw.com.local<enter>  \\反向区域文件调试
#rndc reload<enter>      \\重新载入区域文件
——————————————————————–

Linux单网卡架设VPN并NAT共享上网

No Comments Linux

服务器使用shorewall作为防火墙,实际上shorewall只是作为iptables的一个配置程序而已,实际上防火墙还是iptables;
首先是建立VPN,使用软件包PPTPD,这样做的好处是方便认证,也支持windows,安全性不如openvpn,但是简单实用;

服务器环境:
OS:ubuntu server 8.10
firewall: shorewall
IP:192.168.2.100
安装:

sudo apt-get install pptpd

修改配置文件:/etc/pptpd.conf

修改localip  remoteip

localip 192.168.250.1
remoteip 192.168.250.234-238,192.168.250.245

这里随便找了个IP段localip相当于拨号后的服务器地址,可以写成本机IP,或者和remoteip的IP段相同的一个IP地址

remoteip是客户机分配的IP段,这里分配了12个IP地址,也就只允许12个机器同时通过VPN连接,再增加就不能分配到IP地址了

修改配置文件:/etc/ppp/chap-secrets

这个文件里面设置登陆用的账号密码等信息

设置格式是:

# client        server  secret                  IP addresses

abc       *            123456

第一个是用户名  然后是服务器地址   然后是登陆所用的密码  最后是为客户拨号后分配的IP地址,不指定的话就是系统自动分配

以上过程之后,咱的PPTPD就配置好了哈

由于服务器采用了shorewall防火墙,需要开放端口1723,47和gre协议

编辑/etc/shorewall/rules

增加:

ACCEPT          net             $FW             gre
ACCEPT          net             $FW             tcp     1723
ACCEPT          net             $FW             tcp     47

然后重启下shorewall:

sudo shorewall restart

开始测试在windows上VPN拨号吧

windows下VPN连接建立方法就不多说了哈

OK,测试VPN可以拨通了,但是还不能通过服务器的网络连接互联网,可能你会发现,除了访问服务器,其他你什么都干不了

下面来做NAT,不过这个地方我也没做得很好,还有点缺陷,希望以后能解决这个问题

拨通VPN后,在服务器上使用ifconfig可以看到多了一个PPP*的网络连接,例如我这里是ppp0

做NAT我也使用shorewall来做

修改/etc/shorewall/interface

增加:

ppp0   ipv4

修改/etc/shorewall/zones

增加:

ppp    ppp0

修改/etc/shorewall/masq

增加:

eth0                    ppp0

OK,然后重启shorewall

sudo shorewall restart

NAT配置好了

这里要注意的是ppp0一定要存在,否则shorewall要报错,这个就是shorewall不足的地方了,不够灵活。

如果你不用shorewall 防火墙,直接使用iptables指令进行dnat操作,就不会因为没有ppp0连接而报错了。

文章转载自网管之家:http://www.bitscn.com/os/linux/200811/154290.html

设置Linux作为网关服务器(NAT转换)

No Comments Linux

1.两个网络接口、一个内,一个外

    2.NAT转换(内)

    操作步骤:

    1.设置Linux内核支持ip数据包的转发:
    echo “1” > /proc/sys/net/ipv4/ip_forward

    2.加载实现NAT功能必要的内核模块:
    modprobe ip_tables
    modprobe ip_nat_ftp

    modprobe ip_nat_irc
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc

    3.对iptables中的规则表进行初始化:
    iptables -F
    iptables -X
    iptables -Z
    iptables -F -t nat
    iptables -X -t nat
    iptables -Z -t nat

    4.设置规则链的默认策略:
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables –t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT

    5.添加IP伪装规则:
    iptables -t nat -A POSTOUTING -S 192.168.1.0/24 -O eth1 -j MASQUERADE
    其中:eth1是外网网卡,192.168.1.0/24是内部本地地址,MASQUERADE是符合规则的数据包允许通过

    6.保存
    iptables-save > nat-1.1
    service iptables save

文章转载自网管之家:http://www.bitscn.com/os/linux/200812/156246.html