답변:
내가 쓴 데스크탑 사용자를위한 기본의 iptables 규칙에 대한 블로그 게시물을 오래 전에 당신은 아마도 그것을 읽어야하고,에 링크 된 기사 스테이트 설계 방화벽 . 그러나 커널 2.6.39 이전 ( ipset
10 개가 넘는 화이트리스트가있는 경우 IP를 화이트리스트에 사용하고 싶을 수도 있습니다 (여기서 10은 임의 임)).
먼저 처리 상태는 수락 또는 삭제하려는 것으로 알고 있으며 인터페이스입니다.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
상태없이 IP로만 허용하려는 경우
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
그래도 문제를 겪을 가능성이 높으며, 생활을 편하게하기 위해 상태를 사용하는 것이 좋습니다. 예를 들어, 허용하지 않는 -i lo
및 -o lo
확실히 특정 응용 프로그램에 문제가 발생합니다.
iptables -F
모든 규칙을 취소되어 있음을, 심지어 ubuntu.com를 Ping 할 수
다음은 들어오는 연결 만 차단하는 (예상치 않은) 예입니다 . 192.168.3.x, ICMP 또는 SSH 포트에서 오는 루프백 인터페이스를 통한 연결이 허용됩니다. 다른 모든 연결은 거부됩니다.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
lo
위의 예에서 상태 일치에서 제외되고 항상 허용됩니다.
아래 규칙은 IP 만 허용하고 포트 22 또는 ssh를 통한 다른 모든 IP는 차단합니다. 연결을 끊기 전에 새 단자로 테스트하십시오.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress
몇 개의 IP 주소와 범위를 추가 할 수 있습니까? 그리고 2888과 같은 비표준 포트에서 SSH를 사용하는 경우 명령은 22
예에서 2288
? 또한 허용 된 IP를 제외한 모든 IP에서이 서버에 대한 rsync, sftp 등을 차단합니까?
-p tcp
때문에 여기서 중요한 --dport
없이 작동하지 않습니다. 포트를 닫힌 포트와 동일하게 만들고 해당 포트 로 향하는 패킷을 블랙홀로 만들기 때문에 -j REJECT
대신 사용 하는 것이 좋습니다 . 실제로 원격 공격자는 실제로 닫힌 포트에서 구성된 포트를 탐지 할 수 있습니다. DROP
REJECT
DROP
DROP
전체 작업 예는 다음과 같습니다.
또한 응용 프로그램을 작동시킵니다 (re : keepass가 시작되지 않는 것에 대한 내 의견)