Fedora10 에서 iptables 로 25번 포트를 열려고 하는데 잘 안됩니다...
안녕하세요. 처음 글을 올려봅니다...
네이버 등 여기저기서 찾아보고 하고 있는데요 iptables 에 대해서 아직 개념을 잘 못잡고 있는 학생입니다.
/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
-A INPUT -p tcp --sport 25 -j ACCEPT
-A OUTPUT -p tcp --sport 25 -j ACCEPT
COMMIT
이중에 제가 추가한 줄이
-A INPUT -p tcp --sport 25 -j ACCEPT
-A OUTPUT -p tcp --sport 25 -j ACCEPT
이 내용이구요...
iptables -L 로 테이블 리스트를 보게 되면...
[root@npca sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp spt:smtp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:smtp
아래의 내용처럼 뜨게 됩니다.
tcp smtp 라고 올라와있어서 저는 당연히 되겠지라고 생각했는데... 외부 dos 에서 해당 서버로 접속하면 접속이 되질 않습니다.
iptables -F 해서 테이블을 초기화 시키거나
service iptables stop 해서 iptables 의 실행을 중지시키게 되면 타 pc에서 smtp 로의 서버접속이 가능해집니다...
결국에는 제 생각에는 iptables의 문제로 인하여 25번 포트가 막혀 있다는 것으로 생각이 되는데...
인터넷에서 이거저거 적용해봐도 되질 않네요...
고수님들 나름 열심히 찾아보고 질문 올립니다...
1. -A INPUT -p tcp --sport
1. -A INPUT -p tcp --sport 25 -j ACCEPT 의 명령 커맨드가 틀렸습니다.
-A INPUT -p tcp --dport 25 -j ACCEPT 로 해야 됩니다.
2.
[root@npca sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
i) ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ii) ACCEPT icmp -- anywhere anywhere
iii) ACCEPT all -- anywhere anywhere
iv) ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
v) REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
vi) ACCEPT tcp -- anywhere anywhere tcp spt:smtp
여기에서 순서가 틀렸습니다.
즉, vi 가 v 보다 먼저 와야 합니다.
3. 그리고.. OUTPUT 체인은 default 가 ACCEPT 이므로 따로 추가를 해주지 않아도 무방합니다.
저는 리눅스를
저는 리눅스를 접한지 얼마 되지 않았지만 혹시나 도움이 될까해서 적습니다.
어떠한 환경에서 작업하시는지 모르겠습니다만
일반 가정집에서 서버를 돌리신다면 추론컨데 보통 공유기를 사용하여
외부pc-공유기-사설망pc/서버 의 형태로 접속이라 생각됩니다.
이 경우 공유기 단이나 네트워크 단에서 포트를 막아놓지 않은 상태라면
사설망 내부나 외부 pc모두로 터미널 접속이 가능합니다.
일단 설정하신 부분을 살펴보면
-A INPUT -p tcp --sport 25 -j ACCEPT
-A OUTPUT -p tcp --sport 25 -j ACCEPT
위 iptables 규칙 에서 destination포트가 생략되어 있고 source포트만 명시가 되어 있습니다.
규칙이 옳다고 해도 로컬의 어떤 포트로 패킷을 받아야 될지 네트워크상에서 혼란이 예상되겠죠?
따라서 iptables -A 적용규칙 발신지 발신포트 목적지 목적포트 의 형식으로 가능하며
목적포트는 생략이 가능해도 소스포트는 생략이 불가능한 것으로 압니다.
제 견해로는 위의 규칙은 틀렸습니다.
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
를 해야 옳은 표현이 아닐까요?
작성하신 규칙은 제어할 수 없는 범위에 있는 발신지의 패킷을
컨트롤 하는 구문으로 보여집니다.
고수님들, 나름 확신을 가지고 썼지만 틀린 부분 있으면 콕 찝어주시면 감사하겠습니다^^
GUI 메뉴로
GUI 메뉴로 해봤습니다.
시스템--관리-방화벽 열고서
메일 포트 추가하고 '적용'하면 해결되는 것 같습니다.
이 상태에서 iptables 파일을 열어보니
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
이렇게 한줄 추가되어 있군요.
방화벽 개념 설명 문선데 참고하세요.
http://community.365managed.com/pdf_magazine/3818
eltm6969 님은 누구세횽
eltm6969 님은 누구세횽 ?
어디서 뵜던 분 같은데 ㅋㄷㅋㄷ
오.. 이 사이트 좋네요...
나름 개념을 쉽게 잡아놓았군요...허허
감사합니다.
댓글 달기