我正在configuration防火墙和多次,我发现它阻止了一个服务或端口,如DNS或HTTPS ..等是安全的netstat -nat | grep LISTEN然后无论那里的端口,把它们放在这个格式的iptables:
-A INPUT -p 67 -j ACCEPT
编辑:这是我的netstat结果与p选项:
tcp 0 0 127.0.0.1:10001 0.0.0.0:* LISTEN 9521/sw-cp- serverd tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2729/vsftpd tcp 0 0 SERVERIP:53 0.0.0.0:* LISTEN 1399/named tcp 0 0 SERVERIP2:53 0.0.0.0:* LISTEN 1399/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1399/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1527/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1399/named tcp 0 0 0.0.0.0:12443 0.0.0.0:* LISTEN 9521/sw-cp- serverd tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1802/mysqld tcp 0 0 :::110 :::* LISTEN 1570/courie rtcpd tcp 0 0 :::143 :::* LISTEN 1552/courie rtcpd tcp 0 0 :::80 :::* LISTEN 4865/httpd tcp 0 0 :::8880 :::* LISTEN 9521/sw-cp- serverd tcp 0 0 :::465 :::* LISTEN 30122/xinet d tcp 0 0 :::53 :::* LISTEN 1399/named tcp 0 0 :::22 :::* LISTEN 1527/sshd tcp 0 0 :::25 :::* LISTEN 30122/xinet d tcp 0 0 :::443 :::* LISTEN 4865/httpd tcp 0 0 :::8443 :::* LISTEN 9521/sw-cp- serverd tcp 0 0 :::993 :::* LISTEN 1562/courie rtcpd tcp 0 0 :::995 :::* LISTEN 1579/courie rtcpd tcp 0 0 :::106 :::* LISTEN 30122/xinet
这里是我的iptablesconfiguration:
# 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 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT -A INPUT -p tcp --dport 53 -j ACCEPT -A INPUT -p udp --dport 53 -j ACCEPT -A INPUT -p 50 -j ACCEPT -A INPUT -p 51 -j ACCEPT -A INPUT -p tcp -m state -m tcp --dport 10000 --state NEW -j ACCEPT -A INPUT -p udp -m udp --dport 631 -j ACCEPT -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp -j LOG --log-prefix "Reject Traffic " --log-level 6 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
似乎防火墙阻止drweb更新。 但它也阻止了DNS,所以我加了53端口,也是8080和8443
如果您坚持使用默认拒绝规则的防火墙,则需要列出您正在运行的所有侦听服务以及它们使用的端口,并明确允许其中的每一个都通过。 一种方法是netstat。 你可能想尝试添加-p选项,所以你可以看到什么进程关联。
当然,在非路由器的计算机上打开端口几乎没有任何安全隐患,除非您想从特定的接口过滤特定的服务(例如,来自不受信任的networking的FTP)或者计算机正在运行恶意软件(在这种情况下你还有其他的问题),因为你不听的港口交通总是被拒绝。 因此,如果你打开你的服务器正在监听的所有端口,你实在没有防火墙。
这绝对不是好的做法。 对于你添加的每个规则,你需要知道它是什么,为什么你需要它。
使用netstat或任何其他networking扫描/监视工具,您可能必须生成每个应用程序的端口列表, 然后手动通过它,并确保在该列表中的所有内容看起来不错 。
如果它是一个新configuration的服务器,而且还没有在networking上运行,那么它就像你要找的那样干净。 一切都应该是合法的,但总是一个好主意,以确保你经历的结果,以便a)知道你的服务器上有什么,以及这些东西是如何工作的b)确保有一些不应该在那里。
请注意,防火墙实际上并没有提供很多保护措施 – 它绝不应该是您的主要防御措施。 您的服务器不会随机打开一个端口并开始发送/接收 – 默认情况下,所有端口都closures。 只有当你被欺骗地在服务器上安装某些东西, 或者你已经使用的东西存在一个漏洞,而这个漏洞没有被修补(也许这是一个零日漏洞利用,或者你没有足够快的升级),麻烦就开始了 – 在这种情况下,你的防火墙不会有太大的帮助。
例如,如果您的FTP服务器软件中存在漏洞,则以前手动解除阻止的端口(如21)将成为攻击媒介。 攻击者现在在你的机器上拥有与FTP服务器运行的用户相同的权限 – 而且你的防火墙无能为力。
如果你想要一个真正安全的web服务器,chroot(或更好的BSD监狱)应用程序,并确保他们作为一个不同的( 从来没有root! )用户与最less的权限,你可以逃脱。 如果您的发行版中包含SELinux(基于RedHat的)或AppArmor(基于Debian的),请使用它。 这是一个内核级保护,将程序可以执行的操作列入白名单(例如,它可以读/写哪些目录,可以触发什么中断,可以打开哪些端口等等),并且可以是一个巨大的好处当涉及到正确保护您的服务器。
tl;防火墙并不像你想像的那么好。 在基于ACL的configuration上使用这个时间,并监禁你所有的服务。